Skip to main content
Glama
README.md
# Zenrei(前例)

> "That proposal? There's a precedent." — Decision memory for AI-driven development.

AI agents don't remember past discussions. They keep re-proposing designs you rejected weeks ago. Zenrei records your decisions — accepted, rejected, deferred — as Markdown in your repos, and serves them to every AI agent (Claude Code / Cursor / CI) over MCP. When an agent re-proposes a rejected design, `check_proposal` stops it.

- **git-native** — decisions live in *your* git. Zenrei indexes and serves; it never owns your data
- **Humans decide** — agents can only file drafts (`pending`); only a human can accept or reject
- **Deterministic & light** — no LLM calls, no API key, works offline (Japanese-aware bigram BM25). With 1,000 decisions, responses stay ~1,800 chars / 44ms — your prompts never bloat

🌐 How it works: https://zenrei.karakurio.com ・ Operations guide: https://zenrei.karakurio.com/guide

## Quick start

```bash
claude mcp add zenrei --scope user -- npx -y zenrei --root /path/to/repo1 --root /path/to/repo2
```

For English tool responses, append `--lang en` (default is Japanese; or set `ZENREI_LANG=en`).

Add three lines to each repo's CLAUDE.md (agent instructions):

```markdown
## Decision memory (zenrei)
- At session start, call get_context (scope: this repo) to load decided matters
- Before proposing designs or policies, call check_proposal
- File new decision points with record_decision (humans approve)
```

Decision file format: [docs/decision-format.en.md](docs/decision-format.en.md)(日本語: [docs/decision-format.md](docs/decision-format.md))

## Tools (fixed at five)

| tool | role |
|---|---|
| `check_proposal` | Match a proposal against past decisions — "rejected on 2026-07-08, because …" |
| `search_decisions` | Search by keyword / status / scope / date range |
| `record_decision` | File a decision draft (`pending`; humans approve) |
| `list_pending` | List drafts and deferred decisions |
| `get_context` | A digest of relevant decisions for session start |

## Repository layout

- `src/` — local MCP server (stdio)
- `packages/core/` — parsing / matching / formatting
- `packages/cli/` — the [`zenrei`](https://www.npmjs.com/package/zenrei) npm package
- `docs/` — decision format spec (EN / JA)

The hosted version (GitHub App, cross-repo timeline, approval UI, PR gate) is operated separately: https://zenrei.karakurio.com

## Development

```bash
npm install
npm run build
npm test
```

---

## 日本語

Zenrei(前例)は、AI駆動開発のための意思決定メモリです。採用・却下・保留の決定をリポジトリ内のMarkdown(`decisions/*.md`)で管理し、MCP経由で全AIエージェントに配ります。エージェントが却下済みの設計を蒸し返したら `check_proposal` が止めます。

- git-native: 決定はあなたのgitの中。データを人質に取りません
- 決定するのは人間: AIが起票できるのは承認待ち(pending)まで
- 決定論的照合: LLM不使用・APIキー不要・オフライン動作。決定が増えてもプロンプトは太りません

導入は上のQuick startのとおり。仕組み: https://zenrei.karakurio.com / 使い方: https://zenrei.karakurio.com/guide / 決定フォーマット仕様: [docs/decision-format.md](docs/decision-format.md)

## License

MIT