the shared layer
One store. Every agent you use.
Connected through open surfaces — MCP, AGENTS.md, session
hooks — so adding an agent is a small adapter, not a rewrite.
Claude Code Codex + any MCP agent
A memory and skills layer your agents read and write — so what one learns, the next one already knows. No API keys, no cloud: it drives the tools you already pay for, on your machine.
— a Claude Code session
> fix the flaky staging deploy
done. `npm run lint` drops into an interactive setup
prompt and hangs — used `npx tsc --noEmit` instead.
✎ memory_write saved to shared context
— a Codex session, the next day
> how do I check the web build compiles?
▸ memory_search
Run `npx tsc --noEmit`. Avoid `npm run lint` — it isn't
configured and hangs a non-interactive agent. Claude wrote it. Codex read it. The fact lives in no file — only in the shared store, on your machine.
the shared layer
Connected through open surfaces — MCP, AGENTS.md, session
hooks — so adding an agent is a small adapter, not a rewrite.
Every model call runs inside the official CLI under your subscription. uac reads and forwards nothing.
Decisions, gotchas and conventions — the why that isn't in the code. Written by whichever agent learned it, read by both.
Write a procedure once. Claude gets it natively; Codex gets it over MCP. One source, both agents.
Link one project's memory into another — read-only, one-way — so conventions travel without copy-paste.
Nothing new to learn in Claude or Codex — they read the layer through MCP and hooks. Or drive both from the VS Code extension or the terminal app, switching agents without losing context.
What changes when they stop working in isolation.
$ uv tool install unified-agent-context
$ cd your-project
$ uac init # registers with Claude Code and Codex Then have one agent save something, and ask the other about it.