{"slug": "show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project", "title": "Show HN: Continuum – switch AI coding agents without re-explaining your project", "summary": "Developer AnasNafees1802 released Continuum v2.0.0, an open-source tool that lets users switch between AI coding agents such as Codex, Claude, and Windsurf without re-explaining their project by storing a structured memory ledger inside the project at .aicontext/. The tool installs globally via a bootstrap script and teaches each agent a protocol to read and update the memory, preserving context across sessions and agents.", "body_md": "**Cross-agent session continuity for AI coding agents.**\n\n[Website](https://anasnafees1802.github.io/continuum/) ·\n[Install](#install) ·\n[v2.0.0](https://github.com/AnasNafees1802/continuum/releases/tag/v2.0.0) ·\n[MIT](/AnasNafees1802/continuum/blob/main/LICENSE)\n\nSwitch from Codex to Claude to Antigravity — or come back tomorrow after hitting a usage limit —\nand your agent already knows *what you're building, where you are, and what's next.* No re-explaining.\n\nYou're building with one AI coding agent. You ship a couple of features, then the **daily limit\nhits** and it stops. You switch to another agent — but it knows *nothing*. You burn time and tokens\nre-explaining the project, and you lose the thread of *why* things were done a certain way.\n\nEach agent keeps its own private history (Claude Code in `~/.claude/projects/`\n\n, others elsewhere),\nand none of them share. The context is trapped in a silo.\n\nContinuum puts a small, structured **memory ledger inside your project** at `.aicontext/`\n\n, and\nteaches *every* agent the same simple protocol:\n\nRead it when you start. Update it before you stop.\n\nBecause the memory lives in the repo — not in any one agent's silo — context survives the switch. Any agent, any day, picks up exactly where the last one left off.\n\n```\nyour-project/\n├── .aicontext/              # 📦 the portable memory (gitignored, machine-local)\n│   ├── STATE.md             #   ⭐ where we are right now — read this first\n│   ├── TASKS.md             #   in progress / backlog / done\n│   ├── DECISIONS.md         #   append-only: why we chose what we chose\n│   ├── JOURNAL.md           #   append-only: per-session handoff log\n│   ├── manifest.json        #   metadata (last agent, session count, …)\n│   └── PROTOCOL.md          #   the full spec agents follow\n├── CLAUDE.md                # auto-loaded by each agent; carries the\n├── AGENTS.md                # \"read/update .aicontext/\" instruction block\n├── .windsurfrules           # (Codex/Antigravity/Windsurf/Gemini read AGENTS.md)\n├── .claude/\n│   ├── settings.local.json  # ⚙️ Claude Code hooks (machine-local, gitignored)\n│   └── skills/continuum/\n│       ├── SKILL.md         #   full protocol as a Claude Code skill\n│       └── bin/             #   the `continuum` helper CLI (.ps1 + .sh)\n```\n\n**Claude Code**— via`CLAUDE.md`\n\n+ the`continuum`\n\nskill.**Codex, Antigravity, Windsurf, Gemini CLI, Cursor, Zed, …**— via, the`AGENTS.md`\n\n[emerging cross-agent standard](https://agents.md)read by 60k+ projects.**Windsurf**— also gets a native`.windsurfrules`\n\nfor belt-and-suspenders coverage.\n\nAny agent that reads one of those files participates automatically.\n\nInstalls Continuum into **every AI agent on your machine, once** — applies to all your projects:\n\n```\n# Windows / PowerShell\nirm https://raw.githubusercontent.com/AnasNafees1802/continuum/main/bootstrap.ps1 | iex\n# macOS / Linux\ncurl -fsSL https://raw.githubusercontent.com/AnasNafees1802/continuum/main/bootstrap.sh | bash\n```\n\nThat downloads the repo to a temp folder, runs the global installer, and cleans up. Variations:\n\n| Goal | Windows | macOS / Linux |\n|---|---|---|\nForce all known agents |\n`$env:CONTINUUM_ALL='1'; irm …/bootstrap.ps1 | iex` |\n`curl -fsSL …/bootstrap.sh | CONTINUUM_ALL=1 bash` |\nPer-project ledger in current dir |\n`$env:CONTINUUM_MODE='project'; irm …/bootstrap.ps1 | iex` |\n`curl -fsSL …/bootstrap.sh | CONTINUUM_MODE=project bash` |\n\nPiping a script from the internet to your shell runs remote code. That's standard for installers, but you should trust the source — read\n\n[/]`bootstrap.ps1`\n\n[first if you like. Prefer not to pipe? Use the clone method below.]`bootstrap.sh`\n\n```\ngit clone https://github.com/AnasNafees1802/continuum.git\ncd continuum\n```\n\nWires the Continuum protocol into each agent's **global** config so *every* project you open in\n*any* agent follows it automatically (when that project has a `.aicontext/`\n\nfolder). Run it once\nfrom the cloned folder:\n\n```\n# Windows / PowerShell  (-ExecutionPolicy Bypass avoids the unsigned-script block)\npowershell -ExecutionPolicy Bypass -File .\\install-global.ps1         # detected agents only\npowershell -ExecutionPolicy Bypass -File .\\install-global.ps1 -All    # force all known agents\n# macOS / Linux\nbash ./install-global.sh             # detected agents only\nALL=1 bash ./install-global.sh       # force all known agents\n```\n\nIt installs the shared helper once to `~/.continuum/bin/`\n\n, then for each agent it detects writes the\nprotocol into that agent's global instruction file **and** wires its native hooks:\n\n| Agent | Global instruction file | Hooks wired into |\n|---|---|---|\n| Claude Code | `~/.claude/CLAUDE.md` + skill `~/.claude/skills/continuum/` |\n`~/.claude/settings.json` |\n| Codex | `~/.codex/AGENTS.md` |\n`~/.codex/hooks.json` |\n| Gemini CLI | `~/.gemini/GEMINI.md` |\n`~/.gemini/settings.json` |\n| Antigravity | `~/.gemini/AGENTS.md` (cross-tool; avoids the GEMINI.md conflict) |\n— |\n| Cursor | (User Rules / `AGENTS.md` in-repo) |\n`~/.cursor/hooks.json` |\n| Windsurf | `~/.codeium/windsurf/memories/global_rules.md` |\n`~/.codeium/windsurf/hooks.json` |\n\nHook merges are idempotent and preserve any hooks you already have. After this, the only per-project\nstep is creating the `.aicontext/`\n\nledger — which any agent will do for you on request (Claude\nself-bootstraps; or run Option B).\n\nRun from the cloned folder, pointing at the project you want continuity for:\n\n```\n# Windows / PowerShell\npowershell -ExecutionPolicy Bypass -File .\\install.ps1 -Target C:\\path\\to\\my-project\n# macOS / Linux\nbash ./install.sh /path/to/my-project\n```\n\nThis creates `.aicontext/`\n\nand drops `CLAUDE.md`\n\n/ `AGENTS.md`\n\n/ `.windsurfrules`\n\nadapters in the repo\nroot. Useful when you *haven't* done the global install, or want the adapters committed for teammates.\n\nAll installers are\n\nidempotent— re-run any time to refresh without touching accumulated context. The per-project installer takes`-Force`\n\n(PS) /`FORCE=1`\n\n(sh) to also reset the ledger.\n\nA memory ledger is only as good as the discipline that keeps it current. The naïve version —\n\"agent, please read this at start and update it before you stop\" — breaks in exactly the case\nContinuum exists for: **when a usage limit or crash kills the session, there's no chance to write\nthe handoff.** So Continuum doesn't rely on remembering. It wires **native hooks** into every agent\nthat has them and uses a **shared helper CLI** for the bookkeeping:\n\n**Guaranteed catch-up**— a session-start hook injects`STATE.md`\n\n(plus recent journal + drift notes) into context every session. Catching up stops being something the agent might forget.**Handoff before context loss**— a pre-compaction hook fires right as the context window is about to compact and prompts the handoff*then*, while the detail still exists.**A gentle safety net, not a nag**— a stop hook reminds you*once per session*if you changed files but never saved, or if you*committed*code but never recorded the decision behind it. Once, never twice. (Keeps`TASKS.md`\n\n/`DECISIONS.md`\n\nhonest too — not just`STATE.md`\n\n.)**Reconstruction for hard kills**— if a session ends with no handoff (limit/crash), the next session detects the gap and`continuum import --from auto`\n\nrebuilds a draft handoff from the last agent's own transcript**plus** a git-based view. The one moment a hook*can't*capture is recovered after the fact — even across a tool switch (Codex → Claude, or back).**Never trust a stale ledger**— catch-up compares the saved git commit to`HEAD`\n\nand flags drift (\"12 commits + uncommitted changes since last save\"), so the agent verifies against`git`\n\ninstead of confidently briefing you from an out-of-date snapshot.**Bounded cost**—`continuum save`\n\nrotates old`JOURNAL.md`\n\nentries into`.aicontext/archive/`\n\n, so the ledger never bloats the context it's meant to save.\n\nThe helper is plain PowerShell + bash (no runtime, no dependencies). It only does mechanics —\ntimestamps, `manifest.json`\n\n, git checks, transcript parsing, rotation. **The agent still writes the\nactual prose**; that judgment isn't something to automate away.\n\n| Agent | Catch-up (start) | Handoff prompt | Stop nudge | Transcript recon | Status |\n|---|---|---|---|---|---|\n| Claude Code | ✅ `SessionStart` hook |\n✅ `PreCompact` |\n✅ `Stop` |\n✅ native | ✅ verified |\n| Codex | ✅ `SessionStart` hook |\n✅ `PreCompact` |\n✅ `Stop` |\n✅ native (cwd-matched) | ✅ verified |\n| Antigravity | ✅ honor-protocol¹ | — | — | git-based² | ✅ verified |\n| Gemini CLI | ✅ `SessionStart` hook |\n✅ `PreCompress` |\n— | ✅ native | 🧪 beta |\n| Cursor | ✅ `sessionStart` hook |\n✅ `preCompact` |\n✅ `stop` |\ngit-based | 🧪 beta |\n| Windsurf | ✅ first per-turn hook | — | — | git-based | 🧪 untested |\n\n**Status** = has it been confirmed on a real session? ✅ verified · 🧪 not yet. ¹ Antigravity has no\nhook system, so catch-up rides the honor-protocol (it reads `AGENTS.md`\n\n/`GEMINI.md`\n\nand can run the\n`continuum`\n\nCLI itself). ² Its transcripts are binary, so reconstruction uses the git floor.\n\nUniversal floor:even where native hooks or transcript parsing aren't available, thegit-based reconstruction(`--from git`\n\n, always included in`auto`\n\n) rebuilds \"what changed\" from`git log`\n\n/`git diff`\n\n, and the honor-protocol in each agent's instruction file (`AGENTS.md`\n\n/`GEMINI.md`\n\n/`CLAUDE.md`\n\n/ rules) still drives read-at-start, save-before-stop. Continuity never fully fails, on any tool. Verified end-to-end on real Claude Code, Codex, and Antigravity sessions; Gemini/Cursor rely on the same mechanisms and the floor, pending a real-session pass.\n\n**Day 1, Codex:** you build a feature. Before the limit hits, Codex updates`STATE.md`\n\nand appends a`JOURNAL.md`\n\nentry:*\"Built auth flow, left off at wiring the token refresh.\"***Day 1, later, Claude Code:** you open the project. Claude reads`.aicontext/STATE.md`\n\n, says*\"📍 Caught up: building the auth flow, next is token refresh,\"*and continues — no re-explaining.**Day 2, Antigravity:** same thing. Everyone shares one brain.\n\n**Gitignored by default**—`.aicontext/`\n\nis machine-local, not pushed. The adapter files*are*committed, so the protocol travels with the repo and each clone re-inits its own local ledger. (Want it shared with your team? Remove`.aicontext/`\n\nfrom`.gitignore`\n\nand commit it.)**Plain Markdown + JSON**— no runtime, no service, no lock-in. Readable and editable by hand.— so you always have both a fast current snapshot and a full, trustworthy history.`STATE.md`\n\nis living;`JOURNAL.md`\n\n/`DECISIONS.md`\n\nare append-only\n\n- ✅\n~~Deterministic capture~~— shipped: native session-start / pre-compaction / stop hooks on Claude Code, Codex, Gemini and Cursor (Windsurf via its per-turn hook). - ✅\n~~History importer~~— shipped:`continuum import --from auto`\n\nreconstructs a missed handoff from the last agent's transcript (Claude/Codex/Gemini native parsers) plus a universal git-based view. - ✅\n~~Drift detection~~— shipped: catch-up flags commits/changes since the ledger was last saved. - ✅\n~~One-line remote install~~— shipped (see[One line, no clone](#-one-line-no-clone-recommended)). **Native transcript parsers for Cursor/Windsurf**(SQLite`state.vscdb`\n\n) — today they use git-based reconstruction.**Team mode**— optional shared (committed) ledger with conflict-resistant per-session journal files.\n\nBuilt by ** Anas Nafees**.\n\nContinuum is open source and contributions are welcome — open an issue or PR at\n[github.com/AnasNafees1802/continuum](https://github.com/AnasNafees1802/continuum).\nIf it saves you from re-explaining your project to yet another agent, a ⭐ is appreciated.\n\n[MIT](/AnasNafees1802/continuum/blob/main/LICENSE) © Anas Nafees — free to use, modify, and distribute. Use it everywhere.", "url": "https://wpnews.pro/news/show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project", "canonical_source": "https://github.com/AnasNafees1802/continuum", "published_at": "2026-07-24 07:05:03+00:00", "updated_at": "2026-07-24 07:22:17.003944+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "large-language-models"], "entities": ["AnasNafees1802", "Continuum", "Codex", "Claude", "Windsurf", "Gemini CLI", "Cursor", "Zed"], "alternates": {"html": "https://wpnews.pro/news/show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project", "markdown": "https://wpnews.pro/news/show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project.md", "text": "https://wpnews.pro/news/show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project.txt", "jsonld": "https://wpnews.pro/news/show-hn-continuum-switch-ai-coding-agents-without-re-explaining-your-project.jsonld"}}