Skip to content

Coffer Roadmap

Active specs only. We do not list specs that have not been committed to; roadmap entries reflect actual decisions, not aspirations. Future entries appear here when their spec is drafted, not before.

Active

#SpecStatus
001MCP Gateway (spec)Accepted — code merged in PR #14; amended with coffer__search_tools tool-retrieval for aggregation overload (ADR-018) · coffer__search_tools gains semantic (embedding) ranking with BM25 fallback and coffer__ask agentic retrieval over knowledge/memory is added (ADR-024 amends ADR-018)
002UI Shell & Visual Language (spec)Accepted — code merged in PR #23
003MCP Gateway Desktop (spec)Accepted — code merged in PR #28
004Agent Registry (spec)Accepted — code merged · Repositioned: the builtin agent is retired as a registered chat agent and recast as an internal Coffer capability; the registry lists managed agents only (ADR-024) · Re-widened (ADR-040): the registry re-adds managed coding CLIs — opencode (this slice), then hermes, cursor — reversing the two-type narrowing (migration 0031); openclaw SHIPPED as the sixth managed agent (ADR-044 — non-streaming chat adapter, nested mcp.servers injection, openclaw-flavor PLUGIN_DROP extension package, projection, plugins.slots.memory disable; reverses ADR-040's "peer gateway, stays out" call after ADR-042's re-check, research note). Per-agent facet support is the FR-003a capability matrix; all three injection modes (SHELL_COMMAND / PLUGIN_DROP / INSTRUCTIONS_BLOCK) are shipped across the six types
005Skill Manager (spec)Accepted — code merged
006Knowledge Base (spec)Accepted — code merged in PR #55 (KB face of the knowledge substrate, ADR-012)
007Memory (spec)Accepted — code merged in PRs #55/#58 (shared agent-native memory, ADR-012 + ADR-013) · Extension in progress: transcript distillation — read-only ingest of local agent transcripts → LLM distillation → memory facts; no new spec number (ADR-020) · Amendment 2026-07-10: AI-assisted merge of same-project stores — internal-engine judgment + additive consolidation + no-resurrection identity aliases (amendment)
008Agent Chat (spec)Accepted — code merged in PR #57 · Repositioned: Agent Chat → Vault Console (talk to the vault + observe/approve channel-driven turns); de-scopes in-browser daily coding chat (ADR-021) · Re-repositioned: the built-in agent is retired as a chat persona; chat talks to managed agents only and the surface reverts to "Chat", while the channel observe/approve job stands (ADR-024 partially supersedes ADR-021)
009Channels (spec)Accepted — code merged in PR #59 (ADR-014)
010Multi-Machine Sync (spec)Accepted — sync vault state over the user's own git repo (ADR-016); enabled by the constitution 0.3.0 amendment to Principle I · Scope amendment in progress: generalizing channel runs_on into a framework-level machine × agent scope matrix (mcp_server/skill/agent/channel) plus a top-level Machines fleet view (ADR-045, amends ADR-043)
011Provider Switching (spec)Draft — shared provider profile registry; project once, switch atomically into Claude Code / Codex native config; credential isolation via apiKeyHelper / env_key; Fernet vault + full audit + sync (ADR-032)

Explicit non-goals (current spec)

Decisions about what 001-mcp-gateway does not ship. Documented here so reviewers do not mistake their absence for an oversight.

  • macOS Apple notarisation — requires a paid Apple Developer account; users clear quarantine manually on first launch. Add when the account is set up.
  • Streaming progress forwarding through the gateway — no mainstream MCP gateway does this; this spec matches the ecosystem (token passthrough + timeout reset, no active forward).
  • System service install (launchd / systemd / Windows service) — additive to ADR-006's detect-or-spawn pattern; can be added later as coffer daemon install --system without breaking the current model.
  • Plugin marketplace / third-party kind authoring — see ADR-001 / ADR-002 alternatives.
  • Tool call argument or result persistence — the invocation log records who / when / how-long / outcome only; argument and result content are considered sensitive and stay out of the database.

Cross-cutting decisions

How this file grows

When a new spec is drafted (/speckit-specify in Coffer's flow), add a row to the Active table with its number, title, and status. When a spec ships, update its status. Do not pre-allocate numbers or pre-name features that have not yet had a spec written.