Skip to content

Capture agents in their own UIs through their hooks (ADR-0013); park ACP - #2

Merged
Ukaykhingmarma28 merged 2 commits into
mainfrom
feat/hooks-capture
Oct 11, 2026
Merged

Ukaykhingmarma28 merged 2 commits into
mainfrom
feat/hooks-capture

Conversation

@Ukaykhingmarma28

Copy link
Copy Markdown
Collaborator

What

Agents keep their native UIs; Atlas plugs into their lifecycle hooks (the Entire CLI's model, researched in docs/research/entire-cli.md) and records each turn into the Atlas store, with cloud sync and shared memory on top. ADR-0013 records the decision; the ACP path is parked under the hidden atlas acp group.

  • atlas agents add <agent> writes the hook into the agent's config and the atlas_memory MCP entry into its MCP config, plus a git post-commit hook.
  • Hidden atlas hooks <agent> <verb>: TurnStart snapshots git status and the transcript offset; TurnEnd reads the transcript from the offset, diffs git status, and delivers the turn (directly, to a running atlas serve, or into a spool). Hooks never fail the agent.
  • atlas mcp-bridge --project … --agent … serves memory with or without a listener.
  • Eight agents: Claude Code, Codex, Cursor, GitHub Copilot CLI, OpenCode, Factory Droid, Antigravity, Pi.

Verified live (this Mac)

Claude Code (-p and the TUI), Codex, Copilot, OpenCode, Pi, Cursor and Antigravity capture end to end: prompt, replies, tool calls, file touches, usage, memory; commits are linked by the post-commit hook. Droid's hooks fire; the agent needs a Factory sign-in. Per-agent details and the one-time trust steps are in docs/progress.md and the README.

Not yet verified

The desktop parity checklist (docs/acceptance), and Droid past sign-in.

The product changes direction: agents keep their native UIs and Atlas
plugs into their lifecycle hooks, the way the Entire CLI does
(docs/research/entire-cli.md), with the Atlas store, cloud sync and
shared memory on top.

- internal/hooks: the framework. One event set and dispatcher; per-agent
  Parse, hook config install (raw-map merge, stale-entry pruning, 0600
  atomic writes), transcript readers; per-session state under
  .atlas/hooks/; TurnStart snapshots git status and the transcript
  offset, TurnEnd reads the transcript from the offset and diffs git
  status; delivery direct under the writer lock, to a running atlas
  serve over its socket, or into a spool the next writer drains; a git
  post-commit hook that links sessions to commits; mcpconfig writers
  that put the atlas_memory stdio entry into each agent's MCP config.
- Agents: Claude Code, Codex, Cursor, GitHub Copilot CLI, OpenCode,
  Factory Droid, Antigravity, Pi, each verified live on this machine
  (Droid up to its sign-in).
- record.RecordTurn writes a whole captured turn; the listener gains
  /hook, /mcp over the owner-only socket and Link on /sync; atlas
  mcp-bridge serves memory with or without a listener and answers a
  request sent before initialize with method-not-found (Antigravity).
- Commands: atlas agents add|remove|list|sessions, hidden atlas hooks,
  status lines for hooks. The ACP path (atlas run, the chat screen, the
  registry installs, the ADR-0012 session/load importer) moves under the
  hidden atlas acp group.
- Also lands the ADR-0012 ACP import loop written before the change of
  direction (internal/run/import.go, atlas acp import).
- Docs: ADR-0012, ADR-0013, the Entire research, README, RELEASE
  checklists, progress with the per-agent live results.
@Ukaykhingmarma28
Ukaykhingmarma28 merged commit 61b7da7 into main Oct 11, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant