Open source · Local-first · Two surfaces, one format

Git for LLM context.

Every AI conversation ends somewhere — quota runs out, the tab closes, you switch tools. AnyLLM snapshots what happened and hands it to whatever comes next.

A browser extension carries context between Claude.ai, ChatGPT and Gemini. A CLI carries it between Claude Code, Codex and Agy. Same idea, two front doors.

AnyLLM logo
AnyLLM two versions

# in the browser — Claude.ai, ChatGPT, Gemini

Pack → Prime

 

# in the terminal — Claude Code, Codex, Agy

$ pip install anyllm-ctx

$ anyllm install

> /anyllm-pack

packed → .anyllm/current.md (58 turns)

The 10-minute tax you pay every time.

You build up context across dozens of AI turns — in a chat tab or a coding agent. Then one of these happens, and the next tool needs the whole thing explained again.

01

Credits Exhausted

API quota or subscription caps hit — in the browser or the terminal. You switch tools, but the built-up context is gone.

02

Context Window Full

The model starts forgetting earlier decisions. A fresh session — or a fresh tab — doesn't know what happened.

03

Tool Switch

ChatGPT to Claude. Claude Code to Codex. Every switch means re-explaining decisions and failed attempts from scratch.

04

New Session Tomorrow

You pick up work the next day. Yesterday's chat or coding session is gone — you're re-explaining the project to yourself through a model.

Same brief. Different front door.

Pick the surface that matches where the conversation actually lives. The context underneath is the same idea either way.

EXT

AnyLLM for Chat

A browser extension that docks beside the conversation itself. Pack, prime, and push — without leaving Claude.ai, ChatGPT, or Gemini.

  • Pack — keep single messages, or the whole chat at once.
  • Prime — decisions, next steps, and code, distilled into a briefing.
  • Push — send that briefing straight into another platform's tab.

Works with: Claude.ai · ChatGPT · Gemini

CLI

AnyLLM for Code

A Python CLI that snapshots a dying coding session and primes the next model in 30 seconds — as a slash command inside your agent.

  • Rolling Project Memory — decisions accumulate across sessions.
  • Confidence-Aware — CONFIRMED, STALE, or ORPHANED, tracked automatically.
  • Zero-token in Claude Code — slash commands run in the shell, no AI call.

Works with: Claude Code · Codex · Agy (+ Kiro, Kilocode, OpenCode, Cursor)

The browser extension.

Works inside the tab you're already in. Click the toolbar icon and a side panel docks beside the conversation — nothing is injected on top of the page, and everything stays local to your machine.

AnyLLM side panel docked next to a ChatGPT conversation, showing the Pack, Prime, and History tabs
The AnyLLM side panel on ChatGPT — Pack, Prime, History.
1

Pack

📦 Pack

Hover any message and click 📦, or pack the entire chat in one click. Everything you keep lands in the Pack tab.

2

Prime

🫸 Prime

Extract decisions, next steps, and code from the thread into one structured briefing, ready to paste.

3

Push

Claude · ChatGPT · Gemini

Copy the briefing, or send it straight into a fresh tab on another platform — it's typed in for you.

04

Push anywhere

Copy the briefing to your clipboard, or open Claude, ChatGPT, or Gemini in a new tab with the prompt already injected.

05

History

Every extraction is kept — the last 20 per conversation — timestamped and re-copyable, so an earlier briefing is never lost.

06

Local-First Storage

Packs, highlights, and history live in chrome.storage on your machine. No server, no account, no telemetry.

Also on every message — a hover toolbar for the smaller edits: 📦 Add to Pack ✎ Edit locally 🗑 Hide locally 🖍 Highlight selection
Claude.ai supported

Adapter reads Claude's message DOM to pack, edit, and highlight in place.

ChatGPT supported

Works on both chat.openai.com and chatgpt.com.

Google Gemini supported

Same panel, same feature set — the adapter layer normalises each platform's DOM.

Try it locally — Manifest V3, not yet on the Chrome Web Store: npm install npm run build chrome://extensions → Load unpacked → dist/

The CLI tool.

Install once, and /anyllm-pack works inside every AI coding tool you use — without leaving your session.

An AI coding agent's command palette listing the installed /anyllm-init, /anyllm-pack, /anyllm-prime, /anyllm-push, /anyllm-repack, /anyllm-status, /anyllm-log and /anyllm-diff slash commands
After anyllm install — all 8 commands, autocompleting inside your coding agent.
1

Install

anyllm install

Detects which AI coding CLIs you have installed and wires up slash commands in all of them at once.

2

Pack

/anyllm-pack

Distills your session into a structured snapshot with decisions, failed paths, and what's next. Merges into rolling project memory.

3

Prime

/anyllm-prime

Copies a briefing to the clipboard. Paste it into any model — ChatGPT, Claude, Gemini — and continue without re-explaining.

Ingestor Distiller Merger Composer Adapter

Works inside 7 AI coding tools.

Built around three core agents — Claude Code, Codex, Agy — plus four more anyllm install already knows how to wire up.

Claude Code zero tokens
/anyllm-pack

Slash commands run directly in the shell — no AI call, no tokens consumed. The fastest integration.

Codex AI-triggered
$anyllm-pack

Uses Codex's $command prefix. Skills are installed globally in ~/.codex/prompts/.

Antigravity / Agy skill
anyllm-pack

Skills are installed in ~/.gemini/config/skills/. Type the name as a plain message — no slash prefix.

Kiro steering
/anyllm-pack

Installed as steering documents in ~/.kiro/steering/. Kiro reads them as persistent agent instructions.

Kilocode zero tokens
/anyllm-pack

Claude Code-compatible format. Commands run directly in the shell — no tokens used.

OpenCode AI-triggered
/anyllm-pack

Installed in ~/.config/opencode/commands/ or project-local .opencode/commands/.

Cursor skill
/anyllm-pack

Installed as a skill directory in ~/.cursor/skills-cursor/.

All 8 commands are installed in each CLI: /anyllm-init /anyllm-pack /anyllm-repack /anyllm-prime /anyllm-push /anyllm-status /anyllm-log /anyllm-diff
A

Rolling Project Memory

Every pack merges into current.md — not overwrites it. Decisions from three sessions ago survive even if today's session never mentioned them.

B

Confidence-Aware Decisions

Each decision is classified CONFIRMED, STALE, or ORPHANED across sessions. The receiving model knows exactly what to trust and what to verify.

C

Cross-Tool Portability

Move context from Claude Code to Codex to Agy — same briefing, same project memory, no ecosystem lock-in.

D

Delta Repacking

/anyllm-repack ingests only turns since the last pack. Use it mid-session to update context without reprocessing the full history.

E

Failed Approaches — Forever

Failed paths accumulate across all sessions. Every future model knows what was tried and failed — so it doesn't try again.

F

Local-First and Private

No cloud, no database, no telemetry. Transcripts and snapshots are plain files on disk. Commit .anyllm/ to your repo.

Not a memory SDK. A handoff tool.

The market is full of memory systems for app developers. AnyLLM is for developers actively moving a task between AI tools — chat or code.

Tool Audience Cross-tool Slash commands Rolling memory Open source
mem0App developersNoNoYesYes
Letta / MemGPTApp developersNoNoYesYes
PiecesEnd-user devsSomeNoNoNo
Claude MEMORY.mdClaude onlyNoNoManualN/A
Cursor RulesCursor onlyNoNoManualN/A
AnyLLM CLIEnd-user devs7 toolsYesYesYes
AnyLLM ExtensionEnd-user devs3 platformsN/ALocal pack + historyYes

A format designed to become boring infrastructure.

Versioned markdown keeps context inspectable, diff-friendly, and easy for other tools to build on. This powers the CLI's rolling memory — the extension keeps its own packs, highlights, and history in chrome.storage.

  • Versioned so the format can evolve without breaking old snapshots.
  • Merged so decisions accumulate across sessions — never silently dropped.
  • Confidence-aware so uncertain claims are surfaced at handoff time.
  • Hand-editable because plain markdown is still the right default.
  • Committable.anyllm/ belongs in your repo alongside the code.
.anyllm/current.md
---
anyllm_version: 0.1
project: myapp
merged_from: [session-a, session-b]
confidence_report:
  confirmed: 4
  stale: 1
---

## Task
Build a multi-agent orchestration layer.

## Decisions
- [CONFIRMED] Use SQLite for state — auth/store.py
- [CONFIRMED] Event sourcing over CRUD — core/events.py
- [NEW] Retry budget capped per-tool, not global

## Failed Approaches
- Redis for state. Overkill. Do not redo.
- Polling loop for tool results. Use callbacks.

## Stale / Needs Verification
- [STALE] Tool registry auto-discovers plugins

## Next Step
Implement persistence layer in store.py.

Stop re-explaining. Start continuing.

Two surfaces, one format. Add the extension to your browser, install the CLI in your terminal, or both.