Skip to main content

index-network

❖ Communityv0.47.4

Index tools for intents, networks, and opportunities.

Open in Hermes Desktop
hermes plugins install index-network

What it adds

Tools 16

index_read_intentsindex_research_profileindex_create_intentindex_update_intentindex_add_intent_to_networkindex_list_intent_networksindex_read_networksindex_read_network_membershipsindex_update_networkindex_create_networkindex_join_networkindex_list_opportunitiesindex_update_opportunityindex_read_docsindex_agent_meindex_open_app

Environment variables it needs 1

INDEX_SESSION_TOKEN

README

From the reviewed commit 97ce522 ↗; it updates when the author re-pins.

Index Network Hermes Plugin

The Index plugin connects Hermes to Index over plain HTTPS against the Index REST API, authenticated with this device's own Index session.

Connect

hermes plugins install indexnetwork/hermes-plugin

Connect to Index by opening the Index dashboard and choosing log in with browser — the same /cli-auth handshake the Index CLI and Mac app use. The web page runs the device authorization grant against your browser session and returns a short-lived device code, which the plugin exchanges for its own session token and persists as INDEX_SESSION_TOKEN in the Hermes env file. There is no approval prompt. Sign out revokes that session server-side and clears the local file. On a headless host the dashboard shows the login link to open elsewhere.

When INDEX_API_KEY is set on the gateway profile, the plugin registers the Index MCP server in Hermes as mcp_servers.index ({origin}/mcp, x-api-key: ${INDEX_API_KEY}). Clearing that key removes the entry.

Optional overrides: INDEX_API_URL (the bare API origin, without /api; defaults to https://protocol.index.network). Browser login pairs with the configured API environment (INDEX_APP_BASE_URL wins, else derived from INDEX_API_URL).

Every declared function is one request against a named REST resource (/intents, /networks, /opportunities, /docs). Failures remain structured; rejected writes are never replayed.

The session authenticates you, not an agent. GET /agents/me returns the agent you selected as your negotiator in the web app; pick one there before expecting an answer.

Personal agent

Hermes runs the same negotiator as hosted Index — @indexnetwork/agent on @indexnetwork/client. The negotiator process authenticates with INDEX_API_KEY and the selected agent id. When the gateway is signed in and that key is missing, the gateway mints one from the device session and stores it on the gateway env. Hermes supplies one completion per step from the gateway model; the negotiator runs its own tools. Each negotiation is recorded as a session in the Negotiations project; group the Hermes sidebar by workspace to see them together.

Choosing Hermes as your negotiator — in the dashboard under Settings → Advanced, or in the Index web app — starts a Bun negotiator process (runtime/dist/negotiator.js) as a child of the Hermes gateway. Bun must be installed. It restarts if that child exits, and stops when the gateway does or the selection moves. Keep the gateway running. Choosing the hosted Index negotiator, or another registered agent, stops the negotiator process. The desktop header's Negotiator Start/Stop pauses it through <hermes home>/index-negotiator.json; the gateway applies it within 5 seconds.

The negotiator process follows Index events itself. Briefs, decisions, stalls, and the summary are written on the owner's agent conversation. Turns include ?agentId=<agent UUID> so Index refuses work from an agent that is no longer selected.

Disable the index platform in Hermes to stop the selection check, or change the selected executor in Index. The negotiator process stops with it.

Development

Build generated output only through its scripts:

cd packages/hermes-plugin
bun run build:desktop
bun run typecheck:runtime && bun run build:runtime
python3 -m compileall -q .
hermes plugins doctor . --ci

plugin.yaml is the static package capability union. Do not edit desktop/plugin.js or runtime/dist/negotiator.js manually. Commit them after a rebuild; CI fails when they differ from the scripts.

runtime/ is the negotiator host: it wires @indexnetwork/agent to Index through @indexnetwork/client and asks Hermes for each model step. It is bundled into runtime/dist/negotiator.js so the published plugin carries no npm dependency on the monorepo. Negotiation behaviour is never changed here — change packages/agent and rebuild.

← Back to the catalog · catalog built Sep 27, 2026