agentlog · Multi-agent, multi-device activity pool + project context layer
agentlog has two layers:
- Layer 1 — event pool: captures notable activity from all your AI agents (Claude Code, Codex, Cursor, Maestri, browser-use) across all your machines (Macs + VPS) into one normalized event pool, synced via a private GitHub repo.
- Layer 2 — project context: distills the pool into a per-project
AGENTS.md + CLAUDE.md + docs/agent-context/ snapshot, so any AI coding agent entering the project reads the same up-to-date state, decisions, and next steps.
Boundaries (when NOT to use)
| Task |
Use this instead |
| Capture a single Claude Code session for tweet drafting |
seed skill |
| One-off project planning / brainstorming |
planner / brainstorming |
| Team collaboration / sharing with others |
(not supported in v0) |
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Device A (Mac) Device B (VPS) │
│ ───────────────── ───────────────── │
│ Claude Code Claude Code │
│ Codex Codex │
│ Maestri canvas (scripts) │
│ browser-use │
│ ↓ ↓ │
│ agentlog adapters agentlog adapters │
│ ↓ ↓ │
│ ~/.agent-seeds/ ~/.agent-seeds/ │
│ (local pool clone) (local pool clone) │
│ ↓ ↓ │
│ └──── GitHub (private repo) ────┘ │
└─────────────────────────────────────────────────────────────┘
Each agent → adapter → local pool shard → GitHub. Other devices pull. Everyone sees a unified feed.
Setup
Detailed: references/setup.md. Quick version:
gh repo create agent-seeds --private --confirm
agentlog init --repo git@github.com:YOUR_USER/agent-seeds.git
agentlog poll --once --source claude_code # smoke test
On each additional device: same agentlog init command. Pool syncs via GitHub.
Common flows
See what I did across all agents today
agentlog recap
Live feed of last 4 hours, all sources
agentlog pool --last 4h
Group view by project / agent / source
agentlog pool --by project
agentlog recap --by agent
Pull everything from other machines now
agentlog pull
Push current local changes immediately
agentlog push --force
Manually log an event from a script
agentlog event push '{"action":{"type":"checkpoint","status":"completed","label":"deploy success"},"summary":"shipped api v2"}'
Distill a project's recent activity into a context document (Layer 2)
agentlog context init --project-root .
agentlog brief --project agentlog --last 7d
Writes AGENTS.md + CLAUDE.md + docs/agent-context/{state,decisions,next-steps}.md so the next agent (Cursor / Codex / Claude Code) entering the project reads a unified state. Requires ANTHROPIC_API_KEY.
Re-sync entry-file blocks after manually editing state
agentlog context sync
Migrate historical seed data (one-time)
agentlog migrate-from-seed --dry-run
agentlog migrate-from-seed
Run the background daemon (auto poll + sync)
agentlog daemon install # macOS launchd or Linux systemd
agentlog daemon start
Reference index
| File |
Covers |
references/cheatsheet.md |
Start here — one-page mental model: commands, capture modes, push rhythm, file layout, schema |
references/setup.md |
Full multi-device install, GitHub remote, env vars, daemon install |
references/troubleshooting.md |
Common install / sync failures with root-cause + fix (UNKNOWN-0.0.0, command not found, SSH publickey, hostname collision, Cursor adapter blank) |
references/cli-reference.md |
Every CLI command with examples |
references/cursor-adapter.md |
Cursor IDE SQLite storage layout, action-type mapping, schema-drift handling |
references/brief.md |
Haiku distill prompt contract, event selection, idempotency rules |
references/context-contract.md |
AGENTS.md + CLAUDE.md double-write, decisions append-only, decision entry format |
For schema details read src/agentlog/schema.py directly — the type hints + validate() are the source of truth.
When extending
- Adding a new source → implement
SourceAdapter interface (src/agentlog/adapters/base.py), register in _ADAPTER_REGISTRY in src/agentlog/cli.py
- Changing event schema → bump
SCHEMA_VERSION in src/agentlog/schema.py and write a converter
- Adding a CLI command → wire into
build_parser() in src/agentlog/cli.py
Status
v0 — schema + pool + 5 adapters (claude_code, codex, cursor, maestri, browser_use) + GitHub sync + daemon + shot + recap + Layer 2 (brief + context). Tests: 59 passing.
1---2name: agentlog3description: Load when the user wants to view, sync, or analyze multi-agent activity across multiple devices — Claude Code / Codex / Cursor / Maestri / browser-use sessions captured to a shared GitHub-synced pool, OR wants a distilled per-project context document so a fresh agent in a different tool can pick up where another left off. Triggers on "agentlog X" commands, "what did I do today across all my agents", "show me my pool", "sync the pool", "拉一下另一台机器上的 agent 记录", "看看 vps 上跑的", "跨设备 agent log", "跨工具上下文", "switch from Codex to Claude Code", "AGENTS.md / CLAUDE.md", "项目状态文档", "agent context". Do NOT load for single-machine tweet material capture (use `seed`) or one-off project planning.4---56# agentlog · Multi-agent, multi-device activity pool + project context layer78agentlog has two layers:910- **Layer 1 — event pool**: captures notable activity from all your AI agents (Claude Code, Codex, Cursor, Maestri, browser-use) across all your machines (Macs + VPS) into one normalized event pool, synced via a private GitHub repo.11- **Layer 2 — project context**: distills the pool into a per-project `AGENTS.md` + `CLAUDE.md` + `docs/agent-context/` snapshot, so any AI coding agent entering the project reads the same up-to-date state, decisions, and next steps.1213## Boundaries (when NOT to use)1415| Task | Use this instead |16|---|---|17| Capture a single Claude Code session for tweet drafting | `seed` skill |18| One-off project planning / brainstorming | `planner` / `brainstorming` |19| Team collaboration / sharing with others | (not supported in v0) |2021## Architecture2223```24┌─────────────────────────────────────────────────────────────┐25│ Device A (Mac) Device B (VPS) │26│ ───────────────── ───────────────── │27│ Claude Code Claude Code │28│ Codex Codex │29│ Maestri canvas (scripts) │30│ browser-use │31│ ↓ ↓ │32│ agentlog adapters agentlog adapters │33│ ↓ ↓ │34│ ~/.agent-seeds/ ~/.agent-seeds/ │35│ (local pool clone) (local pool clone) │36│ ↓ ↓ │37│ └──── GitHub (private repo) ────┘ │38└─────────────────────────────────────────────────────────────┘39```4041Each agent → adapter → local pool shard → GitHub. Other devices pull. Everyone sees a unified feed.4243## Setup4445Detailed: `references/setup.md`. Quick version:4647```bash48gh repo create agent-seeds --private --confirm49agentlog init --repo git@github.com:YOUR_USER/agent-seeds.git50agentlog poll --once --source claude_code # smoke test51```5253On each additional device: same `agentlog init` command. Pool syncs via GitHub.5455## Common flows5657### See what I did across all agents today58```bash59agentlog recap60```6162### Live feed of last 4 hours, all sources63```bash64agentlog pool --last 4h65```6667### Group view by project / agent / source68```bash69agentlog pool --by project70agentlog recap --by agent71```7273### Pull everything from other machines now74```bash75agentlog pull76```7778### Push current local changes immediately79```bash80agentlog push --force81```8283### Manually log an event from a script84```bash85agentlog event push '{"action":{"type":"checkpoint","status":"completed","label":"deploy success"},"summary":"shipped api v2"}'86```8788### Distill a project's recent activity into a context document (Layer 2)89```bash90agentlog context init --project-root .91agentlog brief --project agentlog --last 7d92```93Writes `AGENTS.md` + `CLAUDE.md` + `docs/agent-context/{state,decisions,next-steps}.md` so the next agent (Cursor / Codex / Claude Code) entering the project reads a unified state. Requires `ANTHROPIC_API_KEY`.9495### Re-sync entry-file blocks after manually editing state96```bash97agentlog context sync98```99100### Migrate historical seed data (one-time)101```bash102agentlog migrate-from-seed --dry-run103agentlog migrate-from-seed104```105106### Run the background daemon (auto poll + sync)107```bash108agentlog daemon install # macOS launchd or Linux systemd109agentlog daemon start110```111112## Reference index113114| File | Covers |115|---|---|116| `references/cheatsheet.md` | **Start here** — one-page mental model: commands, capture modes, push rhythm, file layout, schema |117| `references/setup.md` | Full multi-device install, GitHub remote, env vars, daemon install |118| `references/troubleshooting.md` | Common install / sync failures with root-cause + fix (UNKNOWN-0.0.0, command not found, SSH publickey, hostname collision, Cursor adapter blank) |119| `references/cli-reference.md` | Every CLI command with examples |120| `references/cursor-adapter.md` | Cursor IDE SQLite storage layout, action-type mapping, schema-drift handling |121| `references/brief.md` | Haiku distill prompt contract, event selection, idempotency rules |122| `references/context-contract.md` | AGENTS.md + CLAUDE.md double-write, decisions append-only, decision entry format |123124For schema details read `src/agentlog/schema.py` directly — the type hints + validate() are the source of truth.125126## When extending127128- Adding a new source → implement `SourceAdapter` interface (`src/agentlog/adapters/base.py`), register in `_ADAPTER_REGISTRY` in `src/agentlog/cli.py`129- Changing event schema → bump `SCHEMA_VERSION` in `src/agentlog/schema.py` and write a converter130- Adding a CLI command → wire into `build_parser()` in `src/agentlog/cli.py`131132## Status133134v0 — schema + pool + 5 adapters (claude_code, codex, cursor, maestri, browser_use) + GitHub sync + daemon + shot + recap + Layer 2 (brief + context). Tests: 59 passing.