One project, one config
~/.sandboxes/<name>
- Commands, settings and MCP servers scoped to this project
- Its own workspace token — revoke it without touching the others
- Delete the directory and the sandbox is gone, cleanly
Sandboxed installs
A sandbox is a complete agent config of its own — commands, settings, MCP servers and workspace token — living under ~/.sandboxes/<name>. Your global agent stays exactly as it was, and the project's memory never mixes with anyone else's.
curl -fsSL https://raw.githubusercontent.com/atvirokodosprendimai/agentsmemory/main/clients/claude-code/install.sh | bashWhy isolate
Every command below works either way. Add --sandbox to get an isolated config, or leave it off to wire the kit into the agent you already run.
~/.sandboxes/<name>
aiagentmemory install
Per agent
The three CLIs are structurally alike and diverge in exactly two places: how they authenticate an HTTP MCP server, and whether they have hooks at all. Pick yours.
The reference install: native MCP, native hooks, and a memory file that resolves imports.
aiagentmemory install --sandbox <name>aiagentmemory run <name>Config variableGlobal config dirSlash commandsMemory fileSession gateOur MCPDon't start from nothing
A fresh sandbox is signed out, with no MCP servers, plugins or skills. Copy that setup in once, or link the credentials so one login serves every sandbox you have.
aiagentmemory install --agent pi --sandbox acme --copy
aiagentmemory install --agent pi --sandbox acme --shared-auth
Pin a project
Record the launch once and open it with aiagentmemory load. The agent and its flags are a team decision and get committed; the sandbox name is a fact about your machine and never leaves it — so a teammate who calls their sandbox something else still gets the same setup.
aiagentmemory init --sandbox acme --agent codex -- --model opus
~/.sandboxes/agents
Side by side
Same kit, three shapes. The last row is the one that matters: pi has no MCP client of its own, so the installer ships a bridge extension that registers our tools natively.
| Piece | Claude Code | Codex | pi |
|---|---|---|---|
| Config variable | CLAUDE_CONFIG_DIR | CODEX_HOME | PI_CODING_AGENT_DIR |
| Global config dir | ~/.claude | ~/.codex | ~/.pi/agent |
| Slash commands | commands/ — invoked /M, /am, /load-skill | prompts/ — invoked /prompts:M | prompts/ — invoked /M |
| Memory file | CLAUDE.md — @imports the protocol beside it | AGENTS.md — protocol inlined (no import directive) | AGENTS.md — protocol inlined (no import directive) |
| Session gate | settings.json — Stop hook | hooks.json — Stop hook | none native — the checkpoint ships in the extension |
| Our MCP | native: claude mcp add --transport http, bearer header | native: codex mcp add --bearer-token-env-var | bridged: extensions/agentsmemory.ts registers each remote tool natively |
More than one
A sandbox is one directory that all three agents can share: they never collide on a filename, so --agent all gives you a single config three CLIs can open. --agent both stays what it always was — Claude and Codex.
aiagentmemory install --agent all --sandbox <name> --recommendedaiagentmemory install --sandbox <name>aiagentmemory install --agent pi|codex|both|allaiagentmemory run [--agent codex|pi] <name>aiagentmemory wrap [--agent codex|pi]aiagentmemory init --sandbox <name> [-- agent flags]aiagentmemory load [-- extra flags]