Last updated: 2026-04-03 (all 25 spec phases complete)
Version: 0.1.0 (released 2026-03-28)
Branch: master
Spec: v2.0 draft at docs/spec/SPEC.md (updated 2026-04-01)
ARC shipped v0.1.0 as a profile manager CLI/TUI. Since then, ~55 commits have landed on master implementing early phases of the v2.0 spec — the merger with Axiom-Supervisor into a unified agent runtime control plane.
- Named profiles with multi-tool support (Claude, Gemini, Codex)
- Multi-tool auth detection (OAuth, API key, Bedrock, Vertex, Foundry)
- OS keyring secure storage
- Shell integration (bash, zsh, fish, PowerShell)
- TUI dashboard (Ink): Dash, Work, Profiles, Doctor, Settings, Guide views
- Shared layer sync (MCP servers, commands, CLAUDE.md, memory, projects)
- Credential hot-swap (experimental)
- Self-update system
- Doctor diagnostics
- Onboarding wizard
- CI (GitHub Actions, Ubuntu + Windows matrix)
Mapping commits since 2026-03-28 to spec phases:
- Workspace packages created:
packages/core/,packages/cli/,packages/mcp/,packages/adapter-claude/,packages/adapter-openclaw/ workspace:*dependencies wired, cross-package imports fixed- Per-package tsconfig paths configured
- 6 duplicate export conflicts in core barrel resolved
RuntimeAdapterinterface implemented with lifecycle methods (launch/terminate/isRunning)- Claude Code adapter:
packages/adapter-claude/with SDK bridge, auth, detect, import, shared - Gemini CLI adapter: real lifecycle (launch/terminate/isRunning) wired
- Codex CLI adapter: cross-platform process management, real spawn/terminate
- OpenClaw adapter:
packages/adapter-openclaw/with plugin manifest, RuntimeAdapter, 3 lifecycle hooks - 27 adapter registry characterization tests
handleLaunchwired to adapter lifecycle withspawnSyncfallback
- All adapters declare spec-aligned capabilities
PullResult.claudeMdreplaced with genericadapterArtifacts
- Hook type system + HookBus pipeline runner with 4-mode enforcement (log/warn/enforce/off)
- Source-classify hook (priority 1) + risk-classifier pure function
- Hook pipeline wired into
handleLaunchviacreateDefaultHookBus - Attempt-tracker factory (session + turn scoped retry counting)
auditCompletion()pure function (status x confidence -> recommendation)runWithRetry()enforce-mode retry loop +createDefaultPipeline- Supervision-gate hook factory (ALLOW/BLOCK parsing)
- Post-verify hook factory (pluggable health polling, exponential backoff)
@axiom-labs/arc-mcppackage with 5 MCP supervision toolsarc mcp serveCLI with stdio transport (31 integration tests)- HTTP server transport (
startHttpServer()) with per-session auth - CLI flags:
--transport http/--port/--auth-token/--require-auth - McpHostManager: connect/disconnect/list/getTools +
callTool()with risk classification arc mcp connect/list/disconnectCLI commands wired to profiles
inheritsfield added to Profile typeresolveProfile()engine for base + override resolutionresolveEffectiveProfile()wired into launch, exec, shell, and MCP commandsloadWorkspaceConfig()+applyWorkspaceOverrides()forarc.jsonarc whichcommand showing resolved profile source
- Encrypted secret store: Argon2id KDF, AES-256-GCM per-entry encryption
arc secretcommand group: set/get/list/delete- Integrated into profile resolution
- Structured JSONL log at
~/.arc/logs/structured.jsonl writeLogEvent(),logAction(),queryLogEvents()incore/logging.tsarc logsCLI command with--limit,--level,--component,--profile,--jsonflags
runCommandWithLifecycle()— signal forwarding (SIGINT/SIGTERM/SIGHUP), cleanup, exit code normalizationwithLifecycleScope()— registerCleanup/runCleanups pattern with signal handlers- Health check types +
buildHealthReport()incore/health.ts
SyncProviderinterface +SyncConfig,SyncDelta,SyncChangetypesFilesystemSyncProvider— shared directory sync with atomic writes, mtime change detectionSyncManager— wraps any provider with cursor tracking and status
CircuitBreakerclass — consecutive failure tracking, auto-trip at thresholdgetEffectiveEnforcement()— degrades advise/enforce to log when tripped- Auto-reset after configurable cooldown, optional alert callback
serialFallbackActivegetter for parallel→serial degradation
SessionMemory— in-memory Map-backed ephemeral storagePersistentMemory— JSON file-backed at~/.arc/memory/decayScore()— exponential decay with half-life + access boostsearchMemories()— deterministic keyword/scope/type/recency rankingextractMemories()— heuristic extraction (corrections, preferences, patterns, decisions)
Skill,SkillStep,ContractSkill,ReviewOutputtypesSkillRegistry— register/unregister/findByTriggerloadSkillsFromDirectory()— JSON skill file loadermcpToSkill()— MCP tool → skill adapter
TaskStore— JSON file-backed CRUD at~/.arc/tasks/tasks.jsonMessageBus— in-memory agent-to-agent message routing with subscribeCronStore— cron job persistence withparseCronExpression()(5-field cron)
SessionStore— JSON-backed at~/.arc/sessions.json- create/suspend/resume/complete lifecycle
isResumeIntent()— heuristic detection of "continue"/"resume" intents
ContextManager— turn tracking, token budget, compaction triggerestimateTokens()— word/char heuristiccompact(summarizer)— summarize old turns, keep last N verbatim
PermissionPolicywith coordinator/interactive/worker defaultsevaluatePermission()— deny > ask > allow precedence with audit logging- Worker tier blocks destructive ops (delete/spawn/deploy/push/force/reset/destroy)
detectPhase(toolName)— deterministic tool→phase mappingAgentPhasetype (thinking/reading/writing/executing/reviewing/testing/deploying/idle)StreamEventBus— typed event emitter for 10 stream event types
detectRepeatedPatterns()— sliding window repeated sequence detectiongenerateSkillFromPattern()— auto-generate skill definitionsStuckDetector— Jaccard similarity on recent actions, cycling recovery strategies
PluginRegistry— JSON-backed at~/.arc/plugins/installed.json- install/uninstall/enable/disable with semver compatibility check
PluginManifestwith capability declarations
RemoteAgentRegistry— JSON-backed at~/.arc/remote-agents.json- register/unregister/updateStatus with HTTP health checks
- Supports http/ssh/mcp transports
FactoryController— state machine (idle→planning→executing→verifying→gating→completed)FactorySpecwith waves, tasks, consensus gate configadvanceWave()progression with wave result tracking
packages/dashboard/— rawnode:httpserver, no Express dependency- 10 REST API endpoints (overview, sessions, traces, risk, tasks, skills, memory, agents, factory, health)
- WebSocket server (RFC 6455) for real-time event push
- Nothing-designed frontend: Doto/Space Grotesk/Space Mono, OLED dark + warm light
- 9 modular view components (overview, sessions, traces, risk, tasks, skills, memory, agents, factory)
- Segmented progress bars, stat rows, tag system, phase indicators
- SPA router, API client, WS auto-reconnect, dark/light toggle
TelemetryProvider— span lifecycle, trace IDs, sample rate, exporter dispatch- Span helpers: session, preflight, hook, agent execution, tool use, postflight, circuit breaker
ConsoleExporter,JsonFileExporter(JSONL at~/.arc/traces/),OtlpExporter(stub)- All spans use
arc.*attribute namespace per spec
Every phase (1–25) from SPEC.md v2.0 is now implemented. Remaining work is integration wiring and polish.
Deferred to v2: A2A protocol, prompt routing, agent personas/buddy system, S3 sync provider.
- Actionable Dash view (launch on Enter, ImportHint)
- Persist activity to Log view
- Surface profile metadata in detail pane
- Workspace-aware profile auto-selection (shell hook on
cd) - Quick profile switch overlay (Ctrl+S)
- Profile search/filter in Profiles view
- Environment preview before launch
- Per-tool shared layer namespaces
- Toast notifications
- MCP server management in TUI
- Policy layer
- Profile cloning/duplication
- Usage/audit log
- Launch history on Dash
- Dependabot config
packages/
core/ — Hook bus, risk classifier, config, types, health, lifecycle, process, workspace, adapters, secrets
cli/ — Commander.js commands, TUI (Ink), auth, detect, import, shared layer, swap, update
mcp/ — MCP server (5 supervision tools) + host manager + HTTP transport
adapter-claude/ — Claude Code adapter (SDK bridge, auth, detect, import, shared)
adapter-openclaw/ — OpenClaw adapter (plugin manifest, hooks, tools)
Plus the original src/ tree in packages/cli/src/ which contains the full v0.1 TUI and CLI.
- The spec (SPEC.md v2.0) is comprehensive but phases 3-4 (logging, graceful shutdown) are P0 blockers that got skipped during the adapter/hook/MCP sprint.
- The monorepo conversion happened fast — some cross-package wiring may need cleanup.
feature/every-code-tuibranch exists but is not merged.- Several dependabot PRs are open on remote.
.omx/config files were deleted (GSD artifacts cleaned up).