Skip to content

API: MCP and A2A

Two doors, each with its own credential and its own default. The engine itself still listens on nothing: ipc.py binds a Unix socket (a named pipe on Windows) and the operating-system user is the credential.

There is now a third door, and it is the only one that can be reached over a network: the phone bridge (scripts/console/phone_bridge.py), which the Android console talks to. It is a separate process, it is not installed or running unless somebody installs it, and it refuses to listen at all until a phone has been paired. It binds loopback only — Tailscale does the exposing — and it proxies a fixed allowlist of routes to the engine's socket. Everything not on that allowlist is refused, including every setup, onboarding, accounts, secrets and file route. See scripts/install-phone-bridge.sh, and scripts/test_phone_bridge.py for what the allowlist guarantees.

No bearer key gained the ability to change anything: appkeys.py scopes are still read | traces | sync. The bridge runs as the Human on the Human's machine, which is the same credential the socket already required.

MCP — soloinc mcp

The console's tools over stdio, for the program that spawns it. Read tools: list_cells, portfolio, get_pipeline, list_workloads, awaiting_human, recent_runs, preflight, intake_snapshots. The write tools — decide, release_brief, halt_workloads, run_workload, stop_workload, start_pipeline, stop_pipeline, run_stage, stop_stage, clear_intake, cancel_delegation, unwind_delegation — are not offered over stdio: they need a write app key, and this build issues none. Each asks the same step-up its button does: once an authenticator is enrolled, a current code from it, or it is refused. Resources: console://instructions/<workload> (the assembled sheet, markdown) and console://pipeline/<id> (the definition, yaml).

Add it to Claude Code with claude mcp add soloinc -- soloinc mcp.

A2A — between cells

A stage may hand an item to another cell's pipeline, on this machine or on a peer reached over https. The item is worked there under that cell's own process and gates and returned; the sender continues where it left off. Delivery is at-least-once with a deterministic task id, so a retry never files the same item twice. Each cell's signed agent card and per-agent cards are published with its snapshot.