a ridge on the cerebral cortex
Your AI tools each remember their own work.
Gyrus is the handoff between them.
Claude Code, Codex, Cursor, Antigravity — each keeps its own memory, and none of them sees the others. Gyrus reads all of them and keeps one short, current card per project that any tool can pick up. Plain markdown, local-first, editable.
curl -fsSL https://gyrus.sh/install | bash
One command. Use a local model or bring an API key. macOS, Linux & Windows.
Run the install. Gyrus scans your sessions, pulls out the decisions, and keeps a handoff card for every project — automatically.
Found: 51 cowork, 33 claude-code, 53 codex, 132 antigravity Cost estimate: ~$4.11 | Time estimate: ~14 minutes [1/269] claude-code travel-app — 5 thoughts [2/269] cowork safety-alerts — 8 thoughts [3/269] codex clinic-notes — 4 thoughts [4/269] antigravity style-engine — 11 thoughts Building card for 'safety-alerts' (115 new notes)... ✓ Card rebuilt in 2 passes from 115 notes Building card for 'style-engine' (271 new notes)... ✓ Card rebuilt in 4 passes from 271 notes Done. 269 sessions, 1226 notes, 31 project cards. Cost: ~$4.88 | LLM calls: 266 extract, 38 card_
What a project card looks like
Built 12 minutes ago from 115 notes · cowork, claude-code, codex, antigravity
Then any tool picks it up
$ gyrus context --cwd "$PWD" --tool codex > Gyrus card for safety-alerts · built 12m ago · notes through 04-03 # SafetyAlerts ## Current Focus - App Store resubmission without the scanner tab ... ## Claude Code memory for this directory ### push-keys (updated 04-02) Push keys differ per platform; rotate both together.
Codex gets the card plus what Claude Code’s own memory recorded in this repo. Claude Code gets the card when the work happened somewhere else.
Reads sessions from ten AI tools on the machine, plus Claude Code’s own saved memory. A Cowork planning session and a Codex build session land on the same project.
A model you choose picks out decisions, status changes, blockers, and constraints. Not code diffs or terminal output.
Each project’s card is rebuilt from the previous card plus what’s new. It stays a few KB; the full history stays in the notes log.
gyrus context gives any tool the card, a freshness line, and Claude Code’s memory for the repo.
Supported tools
A scheduled job pulls the latest from your GitHub sync, ingests new sessions, and pushes back. No new sessions = no API calls = zero cost. Skim the cards now and then — they're drafts, not gospel.
The installer sets up a cron job (or Windows Scheduled Task) at your chosen frequency — every 30 minutes, hourly, every 4 hours, or daily. Each run git pulls the latest, ingests anything new, and pushes back. If nothing changed, it exits immediately. No LLM calls, no cost.
Gyrus writes instructions for Codex, Antigravity, and Claude Code, plus a /gyrus command. Codex fetches the card before project work; Claude Code keeps its own memory first and asks Gyrus when the work crossed tools.
If summaries stop working, the freshness line says so, gyrus doctor names the cause (down to a model that’s no longer installed), and three failed runs in a row trigger a desktop notification.
When there are new sessions: ~$0.01–0.04 per run • Frequency is configurable during install • Self-updates with gyrus update • Diagnose with gyrus doctor
Monday you architect in Cowork. Tuesday you build in Claude Code. Wednesday you debug in Codex. Thursday you refactor in Antigravity. By Friday, none of them know what happened in the others.
What Gyrus captures
What it skips
Claude Code’s auto-memory and Codex’s memories are good at one thing: remembering that tool’s work in that repo. Gyrus doesn’t compete with them. It connects them.
Built-in memory
one tool · one repo
Gyrus
every tool · every project
status.mdOnly use one tool on one repo? Its built-in memory probably covers you.
A card is a snapshot of where a project stands, not a history. Each run rewrites it from the previous card plus what’s new.
Bounded
Fixed limits per section, so a card stays a few KB however long the project runs. We learned this the hard way: long wiki pages grew until the model couldn’t rewrite them, and the busiest projects quietly stopped updating.
Honest about freshness
Every handoff opens with when the card was built and which notes it covers. If notes are waiting or summaries are failing, it says so and tells the agent to check the repo.
Yours to edit
Anything under ## Manual Notes is kept word for word. The rest is rewritten from evidence each run; the full note history stays in thoughts/.
> Gyrus card for pulse · built 12m ago > notes through 2026-04-03 # a day with the model down: > ⚠ Freshness: 14 newer notes are not > summarized yet; summaries have failed > for 3 runs in a row: model 'x' is not > installed. Verify against the repo.
Cards work best for current focus, recent decisions, open questions, and constraints. They’re weaker for precise architecture docs or exact dependency versions — keep those in the repo.
Gyrus runs on your machine. You pay your chosen LLM provider directly — or point it at a local model and pay nothing at all. No Gyrus account or middleman.
Thought extraction
~$0.01/session
GPT-6 Luna, Haiku, Gemini Flash
Card summaries
~$0.05/card rebuild
Claude Sonnet 5, GPT-6 Sol, Gemini Pro — or ~30–50 s locally on gemma4:26b
Typical monthly cost
$5-15
$0 on local models
Gyrus accounts needed
Zero
Run compare to benchmark models on your own sessions and pick one. Supports Anthropic, OpenAI, and Google — or any local model through Ollama or LM Studio. Swap anytime.
30 models across Anthropic, OpenAI, Google — and local inference via Ollama, LM Studio, llama.cpp, MLX, or vLLM. Run compare to benchmark them on your own sessions — it tests extraction quality, generates sample pages, and an AI judge grades each model. You choose the extraction model and the model that writes cards.
Benchmark: 5 sessions, 7 fixtures, scored by Sonnet judge
| Model | Thoughts | Time | Cost/run | Quality |
|---|---|---|---|---|
| gpt-4.1-mini | 31 | 25s | $0.030 | 9/10 |
| gpt-5.4-nano | 34 | 17s | $0.008 | 7/10 |
| gpt-4.1-nano | 30 | 13s | $0.012 | 7/10 |
| haiku | 27 | 25s | $0.045 | 8/10 |
| sonnet | 24 | 49s | $0.180 | 9/10 |
| gemini-flash | 14 | 23s | $0.010 | 8/10 |
| gemini-lite | 10 | 8s | ~free | 5/10 |
These are our results from an earlier model generation; the defaults are now GPT-6 Luna for extraction and Claude Sonnet 5 for cards. Yours will vary — compare runs the same benchmark on your sessions and lets you pick.
Fully local: on an M2 Ultra, gemma4:26b rebuilds a card in 30–50 seconds and qwen3.8:27b in 70–100. Extraction runs on every session, so it wants the faster model.
LLM-generated docs can be polished but subtly wrong. We built an eval framework to catch that and iteratively improve.
Scored against hand-curated golden fixtures across 5 metrics:
Iterative prompt tuning against 7 golden test fixtures:
Run --eval to test our prompts against your own golden fixtures. Run curate to create them.
Entity grounding
Named entities in generated pages must trace back to input notes. Ungrounded terms are flagged.
Date verification
Every date in the output must exist in the input. No fabricated timestamps.
Confidence calibration
Detects when "exploring" becomes "committed to" or "might" becomes "will" without evidence.
status.md ranks every project by this week’s activity and parks junk-looking names under Needs sorting. Ideas go into ideas.md; a working-style profile (me.md) is opt-in. Override any status by hand.
## 🟢 Active this week (3) - safety-alerts: active | last: 2026-04-03 | notes 7d: 42, 30d: 180 - pulse: active | last: 2026-04-02 | notes 7d: 17, 30d: 64 - style-engine: active | last: 2026-03-31 | notes 7d: 5, 30d: 90 ## 🧹 Needs sorting (1) - untitled-draft-2: unknown | last: 2026-02-11
Gyrus syncs via a private GitHub repo you own. Every run pulls the latest, ingests new sessions, and pushes. Zero config once set up.
iCloud / Dropbox / Google Drive are actively not recommended — they evict and lock files, silently breaking ingest.
✓ First machine
curl -fsSL https://gyrus.sh/install | bash # Installer offers GitHub setup # or run: gyrus init
✓ Second machine
curl -fsSL https://gyrus.sh/install | bash gyrus init --clone <your-repo-url>
Obsidian
Set your vault path to ~/.gyrus/ — cards are plain markdown
Notion
Optional adapter via --storage=notion
Auto-sync is non-fatal — network hiccups never block local work.
Good fit
Less useful for
Built-in memory is scoped to one tool, usually one repo. If that’s how you work, it may be all you need.
Gyrus is for the gaps between tools and projects. Claude Code keeps using its own memory; Gyrus passes that memory to Codex through gyrus context, and turns what happened in Codex, Cursor, or Cowork into a card Claude Code can read. It also gives you one view across every project.
Different approach. Mem0 and OpenMemory store facts as vector embeddings in a database. They're designed as memory APIs for AI apps.
Gyrus produces editable markdown handoff cards, one per project. You can read them, edit them, sync them with any tool. The output is short documents, not database rows.
Those are static files you write and maintain by hand, scoped to a single repo. Gyrus extracts knowledge from your actual sessions across all your projects and tools automatically. They're complementary — AGENTS.md tells the AI how to behave, Gyrus captures what you've decided and built.
Gyrus currently supports Claude Code, Claude Cowork, OpenAI Codex, Google Antigravity, Cursor, GitHub Copilot, Cline, Continue.dev, Aider, and OpenCode — plus Claude Code’s own saved memory, so distilled facts about your projects feed the cards even when the session itself has rolled off. If another tool writes sessions to disk, contributions are welcome.
Gyrus reads sessions locally. With a local model, the content stays on your machine; with a cloud model, eligible session text and page content are sent to that provider. Optional GitHub sync uploads the knowledge base to a repository you own, and Notion/email integrations send data to those services when enabled.
Yes. Cards are rewritten every run, so put anything you want kept under a ## Manual Notes heading — it’s copied word for word. Set project statuses in status.md. Cards are model-written drafts and can be subtly wrong; the freshness line tells you how current each one is.
Run gyrus doctor. It checks storage location, ingest freshness, scheduled-job status, GitHub sync, API keys, whether your configured models are actually installed, whether summaries are succeeding, session sources, backlog, and lockfile in one pass — then tells you the single most likely root cause. Add --fix to auto-patch the safe ones (removes stale locks, installs cron, runs brctl download, initializes git, syncs). Every gyrus run also prints a heartbeat line so silent-failure modes are impossible to miss.
gyrus update. Downloads the latest code from GitHub. Your knowledge base, config, and API keys are preserved.
curl -fsSL https://gyrus.sh/uninstall | bash. Removes the cron job, Claude Code skill, and ~/.gyrus/ directory. It will warn you to back up your knowledge base first.
Takes 2 minutes. You'll see what it finds.
curl -fsSL https://gyrus.sh/install | bash