Command-line interface for Index Network. Message your personal agent, manage intents, and discover opportunities — all from your terminal.
npm install -g @indexnetwork/cliIndex 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 originsCredentials 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 --jsonINDEX_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, signals, 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 networkPreparation 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 "..." --jsonActions 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 emailRead 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 --jsonAgent 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>] --jsonConfirm 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 focusSync 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