Repository navigation
Releases
Custode 0.3.0
Custode 0.3.0 adds durable agent-to-agent requests and an interactive project-manager conversation, improves recovery of interrupted provider sessions, and simplifies the daily dashboard.
Coordination and continuity
- Agents can exchange durable requests, acknowledgments, and correlated replies, with participant-scoped routine access, fleet-wide operator visibility, and bounded follow-up wakes (#756).
- Custode can coordinate work across projects and inspect direct operator exchanges through
project_progress. Sibling approval decisions remain human-only (#757). - Native Claude and Codex session identities are saved during initialization, so an interrupted turn can retain its conversation handle for a later resume. Stale attempts cannot replace a newer handle (#763).
- Failed Codex turns preserve useful diagnostics (#759).
Daily interface
- Compact, expandable return digests and long text; clearer composer guidance and accessible controls (#754, #755, #762).
- Clearer attention versus new-message counts, with actions placed alongside the selected work (#760).
- Comparable metrics charts, bounded legends, and workflow rollups (#761).
- Consistent buttons, status labels, page headings, and collection layouts across Paper and Ink (#764).
- Failed workflows show the saved error at the recorded stopping stage and distinguish later stages that did not run. Missing attribution is explicit, and successful results stay visible. Safe retry remains deferred under #750 (#765).
- More reliable test fixture teardown and CI timing (#753).
Upgrade from v0.2.2
Drain the fleet and wait for the old Custode process to exit before updating its checkout. Review the migration and take a recoverable backup of CUSTODE_HOME. Update to v0.3.0, fetch dependencies, run doctor, apply pending migrations, run doctor again, check the installed operator skill, then restart. Refresh CUSTODE_OPERATOR_TOKEN from the new token file and reconnect provider clients. Follow the installation guide for the commands and host-specific setup.
This release includes 20261004034345_create_peer_messages.exs and a revised caretaker prompt. Restart is required to load the new prompt and MCP surface. The caretaker's project_progress read includes full direct operator exchanges; peer-message bodies remain participant-scoped for routine identities, the human operator retains fleet-wide visibility, and sibling gate approval authority is unchanged.
Required provider packages are published: Claude wrapper 0.15.1, Codex wrapper 0.6.0, Forcola 0.6.0, ObanClaude 0.10.0, and ObanCodex 0.7.0. Snodo remains 0.4.1.
Custode remains source-installed. This release does not publish a Hex package or binary artifact. Publishing the release does not update or restart an existing installation.
Custode 0.2.2
Custode 0.2.2 updates the MCP transport to Snodo 0.4.1 and verifies Custode's complete resource surface against the stricter transport contract.
MCP transport
- Update
snodoandsnodo_plugfrom 0.3.0 to 0.4.1. - Verify every advertised Custode resource template compiles under Snodo's stricter RFC 6570 rules.
- Exercise authenticated tool listing and resource reads through
Snodo.Clienton MCP protocol2026-07-28. - Retain the existing Anubis callback bridge without compatibility changes.
Snodo 0.4 also rejects duplicate JSON object keys, closes Plug streams when their request executor exits and releases request-only data from long-lived subscription streams. Custode does not enable Snodo's optional proxy, client cache, OAuth listener, per-component middleware or Tasks facilities in this release.
Upgrade
Drain the running fleet and wait for it to stop. Pull v0.2.2, run mix deps.get, run mix custode doctor and restart Custode. There are no migrations, prompt changes or approved-turn behavior changes.
Custode remains source-installed. This release does not publish a Hex package or binary artifact.
Custode 0.2.1
Custode 0.2.1 adds a focused conversation view for every agent. It gives ordinary operator-to-agent work the same clear, full-height transcript shape as Claude Code and Codex while keeping the information-dense control room available for fleet supervision.
Focused conversations
- Open any agent at
/agents/:id/conversationfrom its control-room header. - Read operator prompts, provider replies, questions, approvals, and outcomes as correlated exchanges instead of separate operational records.
- Keep exact markdown results and errors visible without exposing internal receipt noise.
- Load older history in complete exchanges with a stable snapshot, so new activity does not shift pagination.
- Share the saved draft with the control-room composer.
- Preserve scroll position when older history is prepended and follow live replies only when already near the bottom.
- Answer questions and approve or reject gates inline on the exchange that is actually waiting.
Reliability
- Preserve question and approval detail through continuation turns.
- Settle rejected approvals durably without allowing an old rejection replay to refuse a newer gate.
- Broadcast conversation updates only after persistence succeeds.
Upgrade
Drain the running fleet and wait for it to stop, pull v0.2.1, run mix custode doctor, and restart Custode. There are no migrations, prompt changes, dependency updates, or operator skill changes in this release.
Custode remains source-installed. This release does not publish a Hex package or binary artifact.
Custode 0.2.0
Custode 0.2.0 is the public, source-installed operator alpha. It makes fresh Claude Code and Codex sessions effective Custode operators, strengthens fleet handoffs and queued work, moves the MCP transport to released Snodo, and cleans up the console used to supervise the fleet.
Operator sessions
- Add an explicit Custode operator skill for Claude Code and Codex, including durable message recovery, lifecycle guidance, troubleshooting, and self-maintenance.
- Add
list_operator_messagesso a fresh or reconnected operator session can recover an exact message and continue waiting for its result. - Extend
mix custode doctorto report missing, stale, or modified operator skills and warn when managed Claude Code policy removes Custode MCP permissions.
Fleet reliability
- Apply roster and provider configuration changes at a durable handoff before the next turn, while preserving in-flight work and queued operator messages.
- Preserve and coalesce inbox wakeups that arrive while an agent is running.
- Preserve approval gates when a turn reaches its spend rail.
- Stabilize asynchronous startup, drain, and handoff transitions, including recovery when a routine disappears during handoff.
- Treat GitHub Actions runs that never start as failing infrastructure instead of healthy CI.
- Attribute repository-write audit entries to the authenticated MCP caller.
Console
- Use one application header across LiveView screens.
- Mark the fleet caretaker in the subject rail.
- Fold long console content behind explicit disclosure controls.
- Clear and refocus the message composer after an accepted send.
- Explain attention from disowned pull requests in plain language.
MCP and dependencies
- Replace the private
mcp_exdependency with the released Snodo transport. The endpoints are stateless: clients send the negotiatedmcp-protocol-versionon later requests and no longer retain anmcp-session-id. - Update the provider wrappers and SQLite adapter.
- Update Mint, HPAX, and LazyHTML for published security advisories.
Upgrade
Drain the running fleet and wait for it to stop. Pull v0.2.0, run mix deps.get, review and apply the four pending migrations with a recoverable CUSTODE_HOME backup, run mix custode doctor, reinstall the Custode operator skill on each configured host, and restart Custode and the provider sessions. Reload CUSTODE_OPERATOR_TOKEN after the restart because the token file is rewritten on boot.
Custode remains source-installed. This release does not publish a Hex package or binary artifact.
Custode 0.1.0
Custode 0.1.0
Custode 0.1.0 is a private, source-installed, single-operator local alpha. It proves one complete operating loop: configure a Claude or Codex agent with its own checkout, give it bounded repository work through the dashboard or MCP, handle questions and approvals, inspect the result, and recover durable context after a restart.
Highlights
- One operator surface across the LiveView dashboard,
mix custodeCLI, and authenticated MCP endpoint. - Guided empty-fleet setup with caretaker, backlog worker, steward, specialist, tutor, and bespoke agent shapes.
- Claude and Codex routines through released
oban_claudeandoban_codexpackages. - Custode-managed repository clones so agents do not share the checkout running Custode.
- Durable activity, conversation arcs, gates, notebook state, handoff context, and operator messages.
- Human approval for repository writes, with gate class and risk recorded for review.
- Generated reference documentation for the complete MCP tool, prompt, and resource surface.
- A standing
custode-devmaintenance routine completed the 0.1.0 quickstart work through an owned checkout and merged PR #659.
Start with guides/demo.md for the complete fresh-home path.
Release proof
- Tested tag commit:
68c4b120bc21d1b0ff0a90567ca55e8279b2d3d7. - A fresh GitHub checkout and fresh
CUSTODE_HOMEapplied all 42 migrations, passedmix custode doctor, and booted an empty fleet. - The browser setup created a Codex specialist with a managed clone and a weekly schedule without editing TOML or cron.
- The real worker turn reported the exact checkout commit and verified
guides/demo.md; both checkouts remained clean. - After a process restart, the roster, managed checkout, provider-session state, conversation, and result were reconstructed in the dashboard.
- Formatting, warning-free compilation, strict Credo, 1,751 tests, and Dialyzer all pass on the tagged commit.
- GitHub Actions could not execute because the account spending limit was exhausted. The release result comes from the complete local gates above.
Known limitations
- This release supports one local operator and one Custode instance. The dashboard and MCP server listen on localhost; remote access is operator-managed.
- Installation is from source. The pinned
mcp_exdependency remains private and requires repository access or a local path override. - Scheduled queues currently depend on the Claude boot diagnostic even on a Codex-only host. Direct dashboard and MCP messages to Codex routines still work; the demo guide documents the preflight.
- Scheduled beats start fresh provider sessions. Operator conversations can retain a resumable provider session, while portable context lives in Custode's durable records.
- General automatic routing, missions, Git-backed research subjects, generated MCP tools, hosted authentication, and a native desktop shell remain roadmap work.