Expand description
External agents as executors, over the Agent Client Protocol (ACP v1): speccoder is the client, the agent makes one attempt in the worktree, and every permission request, file and terminal call it sends is decided by speccoder’s policy and approvals.
Built on the official agent-client-protocol crate, and on devplane’s
proven driver (same owner): agent (presets, pinned), modes (the
ask-first permission mode per adapter version), calls (tool-call
reports), session (one attempt); govern and terminal are
speccoder’s — its policy, approvals, workspace tools and sandbox.
What an agent does without asking stays outside speccoder: its own
process is not sandboxed.
Modules§
- agent
- Which agents can make an attempt, and how each is started: the command
the ACP registry publishes for it, an
npxpackage pinned to an exact version (npxwould otherwise fetch whatever is newest). - calls
- What one message said about a tool call, and the call those messages add up to.
- govern
- An external agent’s calls under speccoder’s policy: its permission requests, and the file and terminal access speccoder offers it.
- modes
- An attempt’s permission mode: what the agent advertises, what speccoder may ask it for, and what the run says about it.
- ready
- How ready each agent is to make attempts: installed, signed in, asking before it acts — each with its one action (an install command of the person’s own, the agent’s login in a terminal of theirs, or the reason).
- session
- One attempt as an ACP session: the agent started in the worktree,
initialize,session/new, its permission mode settled, onesession/prompt, and every request it makes in between answered by theGovernor— until the turn ends, the attempt’s time is up (session/cancel, then the process group is killed), or a call waits for a person nobody can ask. - terminal
terminal/*: the commands an agent runs through speccoder, started by the attempt’s runner — the OS sandbox, the scrubbed environment — after the policy allowed them, their output masked before the agent reads it.