Durable, AI-ready memory
for your repository

Git tracks what changed. recall tracks why.

A local-first CLI that writes the decisions, constraints, and standards behind your code into plain files that live next to it — and validates that memory with a deterministic recall doctor. Architecture-neutral. No network, no telemetry, no AI API calls.

$npx recall-os@latest init

No install needed — run any command with npx recall-os <command>, or npm i -g recall-os.

MIT licensed Local-first No telemetry No network calls Node.js ≥ 20

The reasoning shouldn't live in the chat

AI gets software to a working shape fast — but most of the why ends up in a chat window that resets every session. When a teammate, a real engineering team, or a fresh agent takes over, they inherit the code without the context. Recall OS keeps that reasoning in the repository, where it survives every session and gets reviewed in pull requests.

🧠

Memory that outlives the chat

Decisions, ownership, and constraints are committed to the repo — not trapped in a context window.

A gate, not just docs

recall doctor is deterministic and returns an exit code, so "is this actually done and consistent?" becomes a check you can run.

🧭

It proposes, you decide

Presets, adopt, and MCP capture produce proposed memory. A human accepts it with recall adr accept — nothing becomes truth silently.

See it in 40 seconds

Create memory, accept a decision, capture an MCP tool's context, and let the gate flag what's still missing.

Terminal demo of Recall OS: recall init scaffolds repository memory, recall adr accept promotes a proposed decision, recall mcp add figma captures context offline, and recall doctor flags the unfilled threat model.
A real terminal session — init → adr accept → mcp add → doctor.

How it works

You capture intent and decisions; Recall writes durable memory that humans review and agents re-read; the doctor validates it for a hook or CI gate.

Flow diagram: intent, decisions, ownership, standards, and security feed recall init / feature / adr / module, which writes durable memory under docs/ and .recall/config.json. Humans review it in pull requests and agents re-read it every session. recall doctor validates it, returning exit code 0, 1, or 2 for a pre-commit hook or CI gate.

Every command

Each command guides you — it names the file it created, where it lives, and what to do next.

CommandWhat it does
recall initCreate neutral repository memory, plus agent skills, a pre-commit hook, a CI workflow, a Claude SessionStart hook, and a Cursor rule. Surfaces the detected stack (proposed).
recall init --preset <id>Add an opinion pack: rich guidance and proposed ADRs for a real stack.
recall adoptInspect an existing repo (read-only) and propose reviewable memory, with the source each signal was inferred from.
recall preset listList the built-in opinion packs.
recall feature create <name>Scaffold feature memory: PRD, acceptance, tests, review, completion report.
recall adr create <title>Create a proposed architecture decision record.
recall adr accept <name>Promote a proposed ADR to accepted source-of-truth.
recall module create <name>Scaffold module memory: ownership, boundaries, tests, decisions.
recall skill create <name>Generate a portable AI agent skill for Claude Code and the Agent Skills format.
recall mcp add <server>Generate offline, proposed memory for an MCP server (e.g. Figma) and a capture skill.
recall doctorValidate memory health, completion evidence, drift, and unfilled security docs. Exit codes 0 / 1 / 2.

Opinion packs for real stacks

Presets propose vetted, stack-specific decisions — always as proposed ADRs you accept or reject. The schema makes a silent acceptance impossible.

PresetStackProposes
laravel-reactLaravel + ReactInertia + React, Eloquent, Sanctum, Form Requests + Policies, queues, Pest
laravel-vueLaravel + VueInertia + Vue, Eloquent, Sanctum, Form Requests + Policies, queues, Pest
laravel-apiLaravel (API)Versioned REST + API Resources, Eloquent, Sanctum, queues, Pest
nextjsNext.js / TSApp Router, typed data layer, Tailwind, Vitest + Playwright
python-fastapiPython / FastAPIFastAPI, PostgreSQL + SQLAlchemy, Pydantic, pytest, Redis
kotlin-androidKotlin / AndroidCompose, Coroutines + Flow, Hilt, Room, MVVM
ios-swiftiOS / SwiftSwiftUI, async/await + Observation, SwiftData, MVVM
flutterFlutterPlatform and state-management guidance
genericnoneArchitecture-neutral memory

The memory loads itself, in every tool

Writing memory only helps if the agent reads it, so recall init wires each tool with its own native mechanism.

🟣

Claude Code

CLAUDE.md auto-loads and imports AGENTS.md; a SessionStart hook injects a live map of accepted ADRs and modules every session.

🟦

Cursor

.cursor/rules/recall-memory.mdc is an always-apply rule that loads the memory rules into every request.

Codex & others

AGENTS.md is auto-discovered — the portable floor that carries the same rules everywhere.

Deterministic on purpose

A memory layer and a quality gate have to be trustworthy. So Recall OS never calls a model to judge your work — it checks structure and evidence with reproducible rules. Same input, same answer, every time. The thinking stays with you and your agent; the proof-of-work stays with the gate.