v0.93.0
protoAgent v0.93.0 — the protoagent command + the shared ops layer
The headline is ADR 0075: external interfaces — protoAgent is now something you install and drive from the terminal, not just a server you run. There's a first-class protoagent command, a shared "one operation, three projections" ops layer behind the CLI / REST / MCP surfaces, real token accounting on the OpenAI-compatible API, and one-line local-LLM onboarding. Plus a big design-system upgrade for React artifacts and detached delegations.
🖥️ A first-class protoagent command
Installable (uv tool install protoagent / pipx) with a discoverable command tree (--help) instead of hidden python -m server branches:
- Lifecycle —
up/down/status/serve/setup(detached server + pidfile + boot-watch). - Manage —
plugin,workspace,fleet,skills,config,model. - New this release —
protoagent operations(list every operation),protoagent config get·config set key=value(edit config headless), andprotoagent knowledge ingest <url|file>(ingest from the terminal). protoagent model use --base-url … --model …— point at a local Ollama / LM Studio / llama.cpp / vLLM endpoint in one line. The gateway is a default, not a lock-in.
🧩 The shared ops/ layer — one operation, three projections
Admin operations (install a plugin, ingest a doc, set config, start the fleet) now live in one ops/ package, each callable identically from the agent tool, the REST API, and the CLI — no more per-surface glue. Every op is enumerated at GET /api/operations (and protoagent operations) with its read/write metadata.
🔌 Tighter MCP + OpenAI-compatible API
- Operator-MCP profiles —
read-only/full(or a named allowlist), plusPROTOAGENT_MCP_TRUST=fullfor a trusted box. HITL tools that would hang a foreign MCP client (Claude Desktop, Cursor) are now hard-excluded. GET /api/mcp/exposed— see exactly which tools the operator MCP would hand a client.- Real
/v1token usage — the OpenAI-compatible endpoint reports true prompt/completion/total counts, summed across the whole turn (initial call + goal continuations + subagents), so OpenAI-SDK clients and cost tooling work. Opt into streaming usage withstream_options.include_usage. - Breaking: the goal API is deduped to the canonical plural
/api/goals*(the singular/api/goal/{id}routes are removed).
🎨 React artifacts: a full design-system component set
@pl/ui grew from 9 wrappers to ~55 — AppShell, Header, SideNav, Tabs, Table, Board, Dialog, Drawer, forms, and more — so an agent can prototype real layouts that match the live theme without hand-writing class strings.
🚀 Detached delegations
delegate_to(target, query, background=True) hands a slow job (a coding-agent building a PR, a deep-research run) to a delegate without blocking the caller's turn — it returns a job id and settles back through the background channel, so you can fan out several at once (ADR 0050).
🛠️ Notable fixes
- Private-GitHub plugin install and update-check now authenticate over a token — no ssh key or archive workaround needed.
- Operator MCP no longer exposes HITL tools that hang a foreign client.
protoagent config getYAML output fixed.- mDNS fleet discovery is off by default — agents stay quiet on the LAN.
- Plus: incognito on
/v1, a friction-log plugin, a knowledge-ingest preview dialog, and more.
Full changelog: v0.92.0...v0.93.0