Command-line interface for Index Network. Message your personal agent, manage intents, and discover opportunities — all from your terminal.
npm install -g @indexnetwork/cli
Index helps you find the right people—and helps the right people find you—based on what you are actually trying to do, not just a profile headline. The value is grounded intros: suggestions come from communities you share (syndicates, founder groups, firm networks), not from spraying the open web.
The flow below is one complete story—create an intent, let agents negotiate in the background, then review a persisted match.
# login + setup index login index profile # 1. express an intent index intent create "federated learning collaboration" # 2. agents negotiate on your intents in the background index negotiation list # 3. wait for persisted opportunities, then review outcomes index opportunity list --status pending index opportunity show <opportunity-id> index opportunity start-chat <opportunity-id>
Words you will see elsewhere in this doc: network = a community you are in; intent = your “what I am looking for” post; opportunity = a suggested introduction between you and someone else.
Every exposed CLI command is listed below. Add --json for machine-readable
results; conversation stream --json emits one event per line. Command-specific
flags are listed in Options, and examples follow this reference.
| Command | Function |
|---|---|
index help |
Show global help; also available as index, index --help, or index -h. |
index version |
Show the installed version; also available as index --version or index -v. |
index login [local|dev|prod] |
Sign in through the matching browser app and store this device's session. |
index logout |
Revoke and clear the stored device session. |
index docs [topic] |
Read canonical protocol guidance, optionally narrowed to a topic. |
index agent me |
Read the agent selected to handle your negotiations. |
index profile |
Show your own profile. |
index profile show <user-id> |
Show another user's accessible profile. |
index profile sync |
Research public profile information and return a suggested profile without persisting it. |
index profile update |
Save reviewed name, bio, location, or social links. |
index intent list |
List intents, with optional archived, text-query, and result-limit filters. |
index intent show <id> |
Show one intent. |
index intent prepare <text> |
Prepare a draft, optionally answering recovery prompts; returns an admission receipt when ready. |
index intent create <text> |
Create an intent, optionally using the preparation receipt and client-owned --source-type / --source-id. |
index intent update <id> [<text>] |
Update and reprocess an intent's description, or set --source-type / --source-id (empty clears). |
index intent archive <id> |
Archive an intent so it stops participating in discovery. |
index intent pause <id> / resume <id> |
Pause or resume its agent without archiving. |
index intent networks <id> |
List the networks an intent is shared in. |
index intent add-to-network <id> <network-id> |
Share an intent in a network. |
index intent remove-from-network <id> <network-id> |
Stop sharing an intent in a network. |
index negotiation list |
List negotiations, optionally filtered by intent or open/settled state. |
index negotiation show <opportunity-id> |
Read the negotiation's turns, current state, and available actions. |
index negotiation turn <opportunity-id> --action <action> --message <text> |
Submit one propose, counter, accept, or decline turn. |
index opportunity list |
List persisted opportunities, with optional status and result-limit filters. |
index opportunity show <id> |
Show an opportunity's presentation and participants. |
index opportunity accept <id> |
Request acceptance through the server's owner-approval flow. |
index opportunity reject <id> |
Reject an opportunity. |
index opportunity start-chat <id> |
Enter the counterpart chat through the opportunity's consent flow. |
index network list |
List your networks. |
index network discover |
Find public networks you can join. |
index network requests / request-update / request-dismiss |
Review or revise your early-access creation requests. |
index network create <title> |
Create a network when eligible, or submit an early-access creation request. |
index network show <id> |
Show a network and its members. |
index network update <id> [--title <text>] [--prompt <text>] |
Change a network's title or description. |
index network delete <id> |
Delete a network you own. |
index network join <id> |
Join an open network. |
index network leave <id> |
Leave a network. |
index network invite <id> <email> |
Invite a member by email. |
index conversation list |
List your conversations. |
index conversation with <user-id> |
Open or resume a human DM. |
index conversation show <id> |
Read messages; use agent --intent-id <id> for the personal agent's scoped messages and pending question. |
index conversation send <id> <text> |
Send a message; for agent, supply --intent-id and the displayed --question-id when answering one question. |
index conversation answer agent |
Submit several question-ID answers in one batch. |
index conversation stream |
Subscribe to conversation, negotiation, opportunity, and intent events over SSE. |
index conversation help |
Show conversation-specific help. |
index onboarding confirm-profile |
Confirm that the owner has reviewed their profile. |
index onboarding complete |
Complete onboarding once profile confirmation and first-intent prerequisites are met. |
index scrape <url> |
Extract text from a URL, optionally guided by an objective. |
index sync |
Read your profile, networks, and intents into ~/.index/context.json, or stdout with --json. |
Authenticate with Index Network. Opens a browser window that runs the device authorization grant against your existing session (or a fresh login), then hands this machine a session of its own.
index login local # http://localhost:3001 API + http://localhost:3000 web app index login dev # https://protocol.dev.index.network API + https://dev.index.network web app index login prod # Production (also the default on first login) index login --api-url <url> # Custom API; matching web origin is inferred index login --api-url <url> --app-url <url> # Override both origins
Credentials are stored in ~/.index/credentials.json; the latest login replaces the previous target and its session. Without a target, login reuses the stored API origin (or production on first use). The local web app must be running on port 3000 and the API on 3001; the dev web app must be configured to authenticate against the dev protocol service. Browser login explicitly requests protocol v2 and binds the loopback callback with a one-time state. Only a short-lived device code travels through the redirect; the CLI exchanges it at /api/auth/device/token for its own session token and sends that as Authorization: Bearer. There is no approval prompt, because the web page mints and approves the code itself — no code from anywhere else can enter the grant. A re-login revokes the session it replaces, so logins do not pile up.
For noninteractive calls, set exactly one credential:
export INDEX_API_URL='https://protocol.index.network' export INDEX_API_KEY='<api-key>' index --api-url "$INDEX_API_URL" intent list --json
INDEX_SESSION_TOKEN uses Bearer authentication; INDEX_API_KEY uses x-api-key.
Setting both fails. Environment credentials take precedence over stored browser
login. The API origin resolves from --api-url, then INDEX_API_URL, then the
stored credential URL, then https://protocol.index.network. Integrations pass
the origin explicitly. Agent management and other session-only operations still require a session.
index docs # Summary plus the list of topics
index docs workflows --json
index agent me --jsonTopics are identity-context, intents, communities-networks,
opportunities, negotiations, and workflows. An unknown topic exits nonzero.
Revoke this machine's session server-side, then clear the local credential file. A session can revoke itself, so sign-out takes effect immediately without needing your browser. If the server cannot be reached the local file is still cleared, and logout tells you to revoke the device in Index web settings. If local cleanup fails, logout exits nonzero and asks you to remove the file manually.
index logoutManage your intents. Create intents from natural language, list active intents, view details, and archive intents you no longer need.
index intent list # List active intents index intent list --archived # Include archived intents index intent list --limit 5 # Limit to 5 results index intent list --query "CTO" # Match description and summary text index intent show <id> # Show full intent details index intent prepare "Looking for a CTO" # Read feedback / recovery prompts and receipt index intent prepare "Looking for a CTO" --answer 'Prompt label=My answer' index intent create "<returned payload>" --receipt '<returned preparationReceipt>' index intent pause <id> # Hold the agent without archiving index intent resume <id> # Start it again index intent update <id> "revised text" # Update an intent (runs full pipeline) index intent archive <id> # Archive an intent index intent networks <id> # List the networks an intent is shared in index intent add-to-network <id> <network-id> # Add an intent to a network index intent remove-from-network <id> <network-id> # Remove an intent from a network
Preparation returns needs_revision with recovery field labels or ready with a
payload and preparationReceipt. Use the exact returned payload with its receipt
in create; --answer pairs the displayed recovery label with your response.
You can also create directly: the server prepares the description and rejects an
unadmitted draft. A new intent is shared in every network you belong to. Narrow it afterwards with
remove-from-network, or widen an existing one with add-to-network.
Read current negotiations and submit structured turns using full opportunity IDs.
index negotiation list [--intent-id <id>] [--state open|settled] index negotiation show <opportunity-id> --json index negotiation turn <opportunity-id> --action propose --message "..." --json
Actions are propose, counter, accept, and decline. Read the detail's
protocol.availableActions and current turnCount before submitting. The
server enforces eligibility and stale-count protection. The CLI preserves all
turns and protocol guidance and never retries a rejected or uncertain write.
Agreement between agents remains separate from the owner's opportunity approval.
--limit, --since, and --status are unsupported negotiation filters.
Browse and manage discovered opportunities.
index opportunity list # List all opportunities index opportunity list --status pending # Filter by one status index opportunity list --intent-id <id> --statuses negotiating,pending,accepted,expired index opportunity list --limit 5 # Limit results index opportunity show <id> # Show full details index opportunity accept <id> # Accept an opportunity index opportunity reject <id> # Reject an opportunity index opportunity start-chat <id> # Open its human chat (pending/accepted)
--status accepts one of pending, accepted, rejected, expired;
--statuses accepts a comma-separated radar selection including negotiating.
The intent-scoped radar uses --intent-id <id>.
Manage networks (communities). Network creation is direct for eligible staff; otherwise the command submits an early-access request. Invitations accept any valid email and use the server invitation flow.
index network list # List your networks index network discover # Find public networks index network requests # View your creation requests index network request-update <id> --title "New Name" --prompt "Purpose" index network request-dismiss <id> index network create "My Network" # Create directly when eligible; otherwise submit an early-access request index network create "AI" --prompt "AI researchers" # Create or request with a description index network show <id> # Show details and members index network update <id> --title "New Name" # Update a network index network delete <id> # Delete a network index network join <id> # Join a public network index network leave <id> # Leave a network index network invite <id> user@email # Invite directly by email
Read and message the personal agent within an intent, or use human DMs.
index conversation show agent --intent-id <id> --json index conversation send agent "..." --intent-id <id> --json index conversation send agent "..." --intent-id <id> --question-id <pending-question-id> --json index conversation answer agent --intent-id <id> --answer 'question-id=answer' --answer 'other-id=answer' --json index conversation list index conversation with <user-id> index conversation show <conversation-id> [--limit <n>] index conversation send <conversation-id> "..." index conversation stream --json
Agent reads include availability and the pending question. An answer must carry the current question ID and its intent scope; stale refusals are surfaced directly. Human messages retain their existing conversation IDs. SSE emits one JSON event record per line. There is no local agent runtime or interactive chat session.
index onboarding confirm-profile --json index onboarding complete [--intent-id <id>] --json
Confirm a profile only after the owner reviews it. Completion uses the server's
profile-confirmation and first-intent prerequisites; it does not bypass them.
For a new account: profile sync to see suggested facts, profile update to save
what you approve, onboarding confirm-profile, intent prepare and intent create
with the returned payload and receipt, then onboarding complete --intent-id <id>.
View user profiles and synchronously enrich your public identity, social, and avatar data.
index profile # Show your own profile index profile show <user-id> # Show another user's profile index profile sync # Run public profile research prefill (does not persist) index profile update --name "Name" --intro "Bio" --location "City" index profile update --social 'website=https://example.com' --social 'github=https://github.com/me'
--social replaces the full saved social-link list; include every link you want
to keep. Profile confirmation and onboarding completion remain explicit commands.
Scrape and extract content from a URL.
index scrape https://example.com # Scrape a URL index scrape https://example.com --objective "..." # Scrape with focus
Sync profile, networks, and intents to a local file.
index sync # Sync to ~/.index/context.json index sync --json # Output to stdout as JSON
--json emits one parseable result or error on stdout. Progress goes to stderr;
HTTP failures exit nonzero. Sync fails if any required context read
fails, without saving partial context.
Approved intents are evaluated in the background. opportunity list only reviews persisted results; it does not start evaluation.
# Inspect agent negotiations index negotiation list # List persisted pending opportunities index opportunity list --status pending # See full details index opportunity show <id> # Accept or reject index opportunity accept <id> index opportunity reject <id>
| Flag | Short | Description |
|---|---|---|
--api-url <url> |
Override API server (default: https://protocol.index.network) |
|
--app-url <url> |
Override the web app URL for login (default: inferred from the API origin) | |
--archived |
Include archived intents (intent list) | |
--status <status> |
Filter opportunities by one pending/accepted/rejected/expired status | |
--statuses <list> |
Comma-separated radar stages, including negotiating | |
--limit <n> |
Positive result limit for intent/opportunity lists or conversation messages | |
--prompt <text> |
-p |
Network description (for network create and network update) |
--title <text> |
Network title (for network update) |
|
--objective <text> |
Focus objective (for scrape) |
|
--query <text> |
Match intent description and summary text (intent list) | |
--intent-id <id> |
Filter negotiations, scope agent conversations, or select onboarding's first intent | |
--state <state> |
Filter negotiations by open or settled |
|
--action <action> |
Required negotiation turn action: propose, counter, accept, or decline |
|
--message <text> |
Required message for a negotiation turn | |
--question-id <id> |
Identify the displayed question when answering the personal agent | |
--answer <key=value> |
Repeat for recovery prompt labels or agent question IDs | |
--receipt <token> |
Preparation receipt for intent creation | |
--name, --intro, --location |
Profile fields to update | |
--social <label=value> |
Repeat to replace profile social links | |
--json |
Output raw JSON to stdout | |
--help |
-h |
Show help |
--version |
-v |
Show version |
# Run directly with Bun (no build step) bun src/main.ts intent list --json # Build for all platforms bun run build # Build for current platform only (fast dev builds) bun scripts/build.ts --current # Dry-run publish bun scripts/publish.ts --dry-run