env/default.env.example

Sourceable env file for the default (single) swarm-mcp profile.

Copy to ~/.config/swarm-mcp/default.env and edit locally. Use this when

you only want one identity — no multi-profile or client boundaries.

export AGENT_IDENTITY=default export SWARM_IDENTITY=default export SWARM_DB_PATH="$HOME/.swarm-mcp-default/swarm.db"

Visible herdr control socket pinned to this profile so it can coexist with

other profile sockets without colliding on a shared path.

export SWARM_MCP_DEFAULT_HERDR_SOCKET_ROOT="${SWARM_MCP_DEFAULT_HERDR_SOCKET_ROOT:-${HERMES_HOST_HOME:-$HOME}/.config/herdr/sessions/default}" export HERDR_SOCKET_PATH="${HERDR_SOCKET_PATH:-$SWARM_MCP_DEFAULT_HERDR_SOCKET_ROOT/herdr.sock}"

Sandbox roots for this profile (colon-separated). Coordination writes are

blocked from instances registered outside these paths. Default to $HOME for

a single-profile setup that spans every repo on the machine; tighten for

stricter isolation.

export SWARM_MCP_DEFAULT_ROOTS="${SWARM_MCP_DEFAULT_ROOTS:-$HOME}"

Harness aliases. Each canonical agent maps to the launcher alias you want

typed in your shell. With auto-discovery in env/launchers.zsh.example, these

values directly materialize the shell function names — no manual

swarm_define_profile call needed. Pick anything you like; binary-name

shadowing (e.g. claude=claude) is safe because the generator uses

command claude internally to skip the function on exec.

For each canonical agent you get three launch shapes:

worker — the SWARM_HARNESS_* alias here. Registers as identity:default.

gateway — the SWARM_HARNESS_*_LEAD alias. Same identity, mode:gateway role:planner.

vanilla — the raw binary (no alias). Skips registration entirely.

Vanilla is "don't set an alias and call the binary directly." See

env/README.md "Three ways to launch each agent" for the long form.

Hermes convention below: hermes is the gateway alias and hermes-worker

is the worker. Reversing the usual pattern makes sense when hermes is the

session you almost always want to run as a conductor.

export SWARM_HARNESS_CLAUDE=clowd export SWARM_HARNESS_CODEX=cdx export SWARM_HARNESS_OPENCODE=opc export SWARM_HARNESS_HERMES=hermes-worker export SWARM_HARNESS_CLAUDE_LEAD=clowdg export SWARM_HARNESS_CODEX_LEAD=cdxg export SWARM_HARNESS_OPENCODE_LEAD=opcg export SWARM_HARNESS_HERMES_LEAD=hermes export SWARM_HARNESS_HERDR=herdr

Let hooks/scripts find the local swarm-mcp CLI when the package binary is

not installed.

export SWARM_MCP_BIN="bun run /absolute/path/to/swarm-mcp/src/cli.ts"

Account-scoped MCP config roots. Keep auth state under this profile's roots

so MCP servers see only this identity's secrets/sessions.

export CLAUDE_CONFIG_DIR="$HOME/.claude" export CODEX_HOME="$HOME/.codex" export OPENCODE_CONFIG_DIR="$HOME/.config/opencode"

Single-profile Hermes normally keeps config, plugins, and MCP servers in

~/.hermes. Point this at a named profile only if that profile has its own

config.yaml and plugin/MCP setup.

export HERMES_HOME="$HOME/.hermes"

Work tracker routing metadata (optional). Drop this whole block if you don't

track work in an external tool. Credentials still live in the MCP server's

own auth store, not here.

export SWARM_WORK_TRACKER='{

"provider": "github_issues",

"mcp": "github",

"repo": "OWNER/REPO"

}'