Gyrus

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.

See it work

Run the install. Gyrus scans your sessions, pulls out the decisions, and keeps a handoff card for every project — automatically.

gyrus init
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

safety-alerts.md

SafetyAlerts

active pre-launch

Built 12 minutes ago from 115 notes · cowork, claude-code, codex, antigravity

Current Focus

  • •App Store resubmission without the scanner tab
  • •Donations through direct Play Billing on Android

Recent Decisions (from every tool)

  • 04-01Dynamic sitemap via edge worker for SEO pages codex
  • 03-30Switched to direct Play Billing for donations antigravity
  • 03-28Fixed push notification key mismatch across platforms claude-code
  • 03-25Killed scanner tab before App Store resubmission cowork

Open Questions & Blockers

  • •Which agencies to launch with in the EU

Durable Context

  • •All user data stays on-device; only anonymous push tokens leave it
  • •iOS and Android share one backend

Then any tool picks it up

codex · ~/work/safety-alerts
$ 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.

How it works

1

Scans all tools

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.

2

Extracts

A model you choose picks out decisions, status changes, blockers, and constraints. Not code diffs or terminal output.

3

Summarizes

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.

4

Hands off

gyrus context gives any tool the card, a freshness line, and Claude Code’s memory for the repo.

Supported tools

Claude Code Claude Cowork OpenAI Codex Google Antigravity Cursor Copilot Cline Continue.dev Aider OpenCode Claude Code memory

Runs automatically

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.

Scheduled sync

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.

Tool skills

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.

Fails loudly

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

The problem it solves

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

  • cowork "Decided to cut the scanner feature before App Store resubmission"
  • claude "Renamed package across 155 files — rebrand complete"
  • codex "OAuth token expiration causing 401s on /login endpoint"
  • antigravity "Tech stack decided: Next.js on edge hosting + managed Postgres"

What it skips

  • • Code diffs, file edits, terminal commands
  • • "Let me check that file" / "sounds good"
  • • CSS changes, dependency updates, config tweaks

Works with your tools’ own memory

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

  • •Claude Code remembers your Claude Code sessions
  • •Codex remembers your Codex sessions
  • •Neither sees the other — or your other projects

Gyrus

every tool · every project

  • •One card per project, built from all your tools’ sessions
  • •Hands Codex the card plus Claude Code’s memory for that directory
  • •Lets Claude Code keep its own memory first and ask only when work happened elsewhere
  • •Ranks every project by this week’s activity in status.md

Only use one tool on one repo? Its built-in memory probably covers you.

Cards stay short and current

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.

What it costs

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.

You pick the model

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.

We measure quality

LLM-generated docs can be polished but subtly wrong. We built an eval framework to catch that and iteratively improve.

Extraction quality

Scored against hand-curated golden fixtures across 5 metrics:

Recall
0.93
Precision
0.85
Noise rejection
0.88
Project attribution
0.95
Composite 0.90

How we got here

Iterative prompt tuning against 7 golden test fixtures:

Baseline0.59
+ match calibration0.77
+ idea classification0.83
+ few-shot examples0.91
+ selectivity tuning0.90 stable

Run --eval to test our prompts against your own golden fixtures. Run curate to create them.

Built-in hallucination detection

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.

The view across projects

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

Sync across machines

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.

Who it's for

Good fit

  • •People who switch between Codex, Claude Code, and other tools on the same projects
  • •Founders and solo builders juggling multiple projects
  • •Anyone who makes decisions in AI chats and then forgets them

Less useful for

  • •One repo, one tool — its built-in memory already covers you
  • •Teams that already maintain disciplined docs
  • •Users expecting exact, source-of-truth technical documentation

FAQ

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.

Try it on your sessions

Takes 2 minutes. You'll see what it finds.

$ curl -fsSL https://gyrus.sh/install | bash