Serve Commands¶
Expose SuperQode to other tools: an ACP agent for editors and benchmarks, MCP and A2A servers for harnesses, and a browser-based TUI.
Servers at a glance¶
| Surface | Command | Who connects |
|---|---|---|
| ACP | superqode serve acp | Any ACP client: Zed, JetBrains IDEs, Neovim, Devin Desktop, and the Harbor benchmark framework. Runs SuperQode as the coding agent, driven by your HarnessSpec. |
| MCP | superqode mcp | Any MCP client (Claude Desktop, IDEs, other agents). Exposes your HarnessSpec workflows as list_harnesses, describe_harness, and run_harness tools. |
| Harness MCP alias | superqode serve harness --spec harness.yaml | Same MCP server, shaped around one harness file or directory. |
| Local Session API | superqode serve api | Browser/mobile companions and local tools that inspect or drive the switchboard and Software Factory graph. |
| Web TUI | superqode serve web | A browser, for the full TUI without a terminal emulator. |
| A2A | superqode serve a2a --spec harness.yaml | Other agents and orchestrators over A2A 1.0 HTTP+JSON. See A2A Providers. |
A2A is the primary cross-service surface. The public Agent Card is published for discovery; operational requests go to https://a2a.superqode.dev. Local serve a2a works today. See A2A Protocol.
mcp¶
Serve your harness specs over MCP, on stdio by default:
superqode mcp # stdio (for MCP client configs)
superqode mcp --http --host 0.0.0.0 --port 8765
superqode mcp --dir ./harnesses # serve specs from a directory
| Option | Description |
|---|---|
--http | Serve over streamable HTTP instead of stdio |
--host | Bind address (default: 127.0.0.1) |
--port | Port number (default: 8765) |
--dir | Directory of harness specs to expose |
A typical MCP client configuration entry:
{
"mcpServers": {
"superqode": {
"command": "superqode",
"args": ["mcp"]
}
}
}
serve acp¶
Run SuperQode as an ACP agent on stdio, for Zed, JetBrains IDEs, Neovim, and Harbor/Terminal-Bench:
superqode serve acp # per-session harness discovery
superqode serve acp --spec harness.yaml # pin one HarnessSpec
| Option | Description |
|---|---|
--spec | HarnessSpec file to use for all sessions |
--dir | Directory of harness specs for discovery |
--provider | Provider override (env: SUPERQODE_ACP_PROVIDER) |
--model | Model override (env: SUPERQODE_ACP_MODEL) |
SUPERQODE_ACP_SPEC accepts a spec path or template:<name> for a built-in template. stdout carries JSON-RPC, so human-facing output goes to stderr. See the full guide: ACP Agent Server.
serve harness¶
Expose harness workflows as MCP tools with a command that reads like harness-as-a-service:
superqode serve harness --spec harness.yaml
superqode serve harness --dir ./harnesses --http --port 8765
--spec serves the containing directory so relative inherits paths keep working; use the file stem as the harness name.
serve api¶
Serve the local switchboard and Software Factory graph over JSON HTTP.
superqode serve api --port 8766
superqode serve api --host 0.0.0.0 --allow-remote --token "$SUPERQODE_API_TOKEN"
Options:
| Option | Description |
|---|---|
--host | Bind address (default: 127.0.0.1) |
--port | Port number (default: 8766) |
--storage-dir | Session storage directory (default: .superqode/sessions) |
--allow-remote | Allow binding outside localhost |
--token | Optional bearer token |
Useful endpoints:
| Endpoint | Purpose |
|---|---|
GET /health | Health check |
GET /sessions | List graph sessions |
GET /sessions/graph | Session switchboard tree |
GET /sessions/{id}/history | Recent transcript messages |
POST /sessions/{id}/switch | Mark a session active |
POST /sessions/{id}/handoff | Create or deliver a handoff |
GET /factory/routes | List Software Factory routes |
GET /sessions/{id}/factory | Factory metadata for a session |
POST /sessions/{id}/factory/model | Record a model/provider switch |
POST /sessions/{id}/factory/harness | Record a harness switch |
POST /sessions/{id}/factory/mode | Set a route such as no-subscription |
Remote serving should use --token and a trusted network.
serve web¶
Start the Textual TUI server over HTTP.
superqode serve web [OPTIONS]
Options¶
| Option | Description |
|---|---|
--host | Bind address (default: 127.0.0.1) |
--port | Port number (default: 8000) |
Examples¶
superqode serve web
superqode serve web --host 0.0.0.0 --port 8080
Uses textual-serve to expose the full SuperQode TUI over HTTP. Open the provided URL in a browser for a terminal-like experience without a local terminal emulator.
serve a2a¶
Expose a HarnessSpec as an A2A 1.0 HTTP+JSON agent:
superqode serve a2a --spec harness.yaml
superqode serve a2a \
--host 0.0.0.0 \
--allow-remote \
--public-url https://superqode.example.com
superqode serve a2a \
--spec harness.yaml \
--host 0.0.0.0 \
--allow-remote \
--public-url https://superqode.example.com \
--token "$SUPERQODE_A2A_TOKEN" \
--expose-harness
superqode serve a2a \
--host 0.0.0.0 \
--allow-remote \
--public-url https://a2a.superqode.dev \
--export-agent-card examples/a2a/agent-card.json
| Option | Description |
|---|---|
--spec | HarnessSpec file to serve |
--provider / --model | Session defaults (env: SUPERQODE_PROVIDER, SUPERQODE_MODEL) |
--host / --port | Bind address (default 127.0.0.1:8000) |
--public-url | Interface URL advertised in the Agent Card |
--harness-store / --store | SQLite harness sessions, runs, evidence |
--task-store | SQLite A2A task records (survives restart) |
--no-task-store | Keep A2A task records in memory |
--token | Operator token (env: SUPERQODE_A2A_TOKEN). Required with --expose-harness |
--allow-remote | Allow binding outside localhost |
--expose-harness | Serve the harness skill on a remote bind. Requires --spec and a token |
--export-agent-card | Write the runtime Agent Card JSON and exit |
See A2A Protocol for durability, publishing, and the experimental multiplayer-computer packaging notes.
serve status¶
Inspect server integrations supplied by the optional SuperQode Enterprise package.
superqode serve status
The open-source package reports that this surface requires the Enterprise package. The open-source serve acp, serve a2a, serve harness, serve api, and serve web commands remain available as documented above.