Design intent on tap — stop agents from re-auditing the whole repo every turn
Strong coding agents no longer "forget" the stack between sessions the way older models did. They treat the codebase as ground truth — and that is good for correctness.
The new failure mode is cost and thrash:
- Specs, plans, and ADRs already say why a choice was made
- The agent still re-opens large swaths of source "just to be sure"
- Rejected alternatives and non-local constraints are expensive (or impossible) to re-derive from code alone
- Every turn pays the same investigation tax; multi-agent and multi-day work multiplies it
Code answers what is implemented. It is a poor, high-token index for why we chose it, what we forbade, and what we already rejected.
sqlew is an MCP server that stores architectural decisions and constraints in a SQL database — with rationale, tags, layers, and rejected alternatives. Agents query intent first (suggest, session context, targeted decision / constraint lookups) instead of re-deriving design context from a full-tree read every turn.
┌──────────────────────────────────────────────────────────────────────┐
│ Without sqlew │ With sqlew │
│────────────────────────────────────────│─────────────────────────────│
│ Plan/spec: "use Postgres, no Mongo" │ Research/write → ADR draft │
│ Next turn: re-read half the repo │ (or Plan approved → ADR) │
│ "just to confirm the architecture" │ Next turn: suggest/query │
│ Tokens burned; same audit next agent │ → intent in milliseconds │
└──────────────────────────────────────────────────────────────────────┘
sqlew does not replace reading code for implementation detail. It replaces ritual whole-repo archaeology for design intent with structured recall:
- Capture — Plan Mode is not required. Research + Write hooks draft ADRs automatically; Plan Mode capture still works as before (sqlew-plugin)
- Recall — Session start injects recent context (where the harness supports it); Post hooks on Grep / WebSearch / WebFetch inject related ADRs via
suggest - Enforce — Constraints stay first-class rules; duplicate/similarity checks stop circular re-decisions
Built on the Model Context Protocol (MCP), so it works with any MCP-compatible AI coding tool.
This software does not send any data to external networks. We NEVER collect any data or usage statistics.
Local / full (default) — all RDB drivers (SQLite, PostgreSQL, MySQL). Unchanged:
npm install -g sqlew
# same capability under the scoped name:
npm install -g @sqlew/fullCursor Cloud / ephemeral VMs — prefer PostgreSQL-only (no native SQLite addon):
npx @sqlew/pg
# or: npm install -g @sqlew/pgWire a remote DB with SQLEW_DATABASE_URL / DATABASE_URL in Environment Secrets. Project name usually comes from the git remote basename; set SQLEW_PROJECT_NAME only when sharing one DB across repos. Plan-less auto ADR needs sqlew-plugin Cursor hooks — MCP (npx @sqlew/pg) alone is not enough. Details: Cursor Cloud Agents. Other slim installs: @sqlew/mysql, @sqlew/sqlite. Package matrix: SCOPED_PACKAGES.md.
npm 12+ (bundled with Node 24.19+) blocks dependency install scripts by default. The full/@sqlew/sqlite installs need better-sqlite3 to download or compile its native addon, so allow that script:
npm install -g --allow-scripts=better-sqlite3 sqlewWithout the flag, sqlew installs but exits on first run with Could not locate the bindings file. Re-run the command above to repair an existing install. @sqlew/pg and @sqlew/mysql do not need this flag.
npm 11 and earlier still run install scripts by default; npm install -g sqlew is enough there.
Choose the setup that matches your environment. Each client has its own install and uninstall steps.
Install:
claude plugin marketplace add sqlew-io/sqlew-plugin
claude plugin install sqlewConfigures MCP server, Skills (Plan Mode guidance), and Hooks (research suggest inject, Write enqueue / Stop flush, Plan-to-ADR).
Uninstall:
claude plugin remove sqlewInstall:
codex plugin marketplace add sqlew-io/sqlew-plugin
codex plugin install sqlew --source sqlew-pluginAfter install, open /hooks in Codex and trust the bundled sqlew hooks. Enable Plan Mode with collaboration_modes = true under [features] in your Codex config.
Do not duplicate skills in
~/.codex/skills/or add[mcp_servers.sqlew]toconfig.tomlwhen using the plugin. See Hooks Guide.
Uninstall:
codex plugin remove sqlewInstall:
grok plugin install sqlew-io/sqlew-plugin --trust
grok plugin updateConfigures MCP server, Skills (plan mode guidance), and Hooks (plan-less save enqueue, Plan-to-ADR on exit_plan_mode).
Do not duplicate hooks in
~/.grok/hooks/or add[mcp_servers.sqlew]to~/.grok/config.toml. See Hooks Guide.
Uninstall:
grok plugin remove sqlewRequires sqlew >= 5.3.0. Hermes uses a separate plugin bundle (.hermes-plugin/), not the Claude/Codex plugin manifest.
Install:
hermes plugins install sqlew-io/sqlew-plugin/.hermes-plugin
hermes plugins enable sqlewMerges MCP + shell hooks into ~/.hermes/config.yaml and copies planning skills to ~/.hermes/skills/. See Hermes Hooks Guide for wire-protocol details and manual config.yaml setup.
Uninstall:
hermes plugins remove sqlewIf you merged hooks manually before using the plugin, also remove mcp_servers.sqlew and sqlew hooks: entries from ~/.hermes/config.yaml. Skills under ~/.hermes/skills/sqlew-* are not removed automatically.
Requires sqlew with the sqlew/hooks export (see Harness Compatibility for the minimum version). omp uses an in-process Extension (.omp-plugin/), not Claude-style shell hooks.
Install:
npm i -g --allow-scripts=better-sqlite3 sqlew # see Install above (npm 12+)
omp --extension /path/to/sqlew-plugin/.omp-plugin
# or:
omp plugin install /path/to/sqlew-plugin/.omp-pluginSession context via before_agent_start; Plan-to-ADR when you approve via xd://propose / /xdev/propose. Plans live as session-local local://*-plan.md (no project .sqlew/plans/ copy by default). See Hooks Guide.
MCP still comes from the project .mcp.json (Extension does not re-register MCP when already present).
MCP server only — no sqlew-plugin hooks or skills (Cursor, Claude Desktop, custom clients, …). See Harness Compatibility.
Add to .mcp.json in your project root:
{
"mcpServers": {
"sqlew": {
"command": "sqlew"
}
}
}The database (~/.config/sqlew/sqlew-shared.db) and config are auto-created on first run. See Shared Database for details.
Plan Mode is no longer required for ADR / suggest. With sqlew-plugin hooks:
- Research — Post hooks on Grep / WebSearch / WebFetch (and equivalents) inject related context via
suggest - Write — first implementation Write enqueues a draft ADR to
.sqlew/queue/pending.json(no DB write yet) - Stop / flush —
on-stopor QueueWatcher upserts the queue into the database
Plan Mode still works as before — create a plan, get approval, and Plan-to-ADR records 📌 / 🚫 blocks automatically.
Hermes exception: Hermes cannot drive this automatic research→ADR trigger via Hooks. Create a Skill with
/learn, for example: 「調査開始時にsqlewを使ってサジェストを取得し、実装前にADRをsqlewで記録することを義務付けて」
See Harness Compatibility and Hooks Guide.
- Structured Records — Decisions stored as relational data with metadata, tags, layers, and version history
- Fast Queries — 2-50ms SQL recall for design intent; avoid multi-file repo archaeology every turn
- Duplicate Detection — Three-tier similarity scoring (0-100) prevents redundant decisions
- Constraint Tracking — Architectural rules and principles as first-class entities
- Auto-Capture (plan-less) — Research Post hooks inject related ADRs; Write enqueues drafts; Stop / flush upserts to DB
- Auto-Capture (Plan Mode) — Hooks/Extension still record decisions from Plan Mode (Claude Code, Codex, Grok Build, Hermes, and oh-my-pi via sqlew-plugin)
- Session Context Injection — Recent decisions and active constraints injected at session start (Claude Code, Hermes, omp, Codex partial; not Grok Build — see matrix)
- Multi-Database — SQLite (default), PostgreSQL, MySQL/MariaDB, or Cloud
- Git Worktree Ready — Each worktree shares the same context database
Not every feature works the same on every client. Grok Build uses passive hooks (no stdout injection), so session context and plan-mode hook enforcement are skill-based only (◎). oh-my-pi (omp) uses an in-process Extension (sqlew/hooks) rather than shell hooks — the summary rows below are full (✓). Hermes lacks Post-hook context inject for research→ADR — use a Skill (/learn); Plan-to-ADR via plan files still works.
| Feature | Claude | Codex | Grok | Hermes | omp |
|---|---|---|---|---|---|
| MCP tools | ✓ | ✓ | ✓ | ✓ | ✓ |
| Session context injection | ✓ | △ | — | ✓ | ✓ |
| Research → ADR (plan-less) | ✓ | △ | △ | ◎ | ✓ |
| Plan-to-ADR (auto) | ✓ | △ | △ | ✓ | ✓ |
| Plan mode hook enforcement | ✓ | △ | ◎ | ✓ | ✓ |
✓ full · △ partial · ◎ skills only · ✎ manual MCP · — not available
Full matrix (hooks, Other harness column, fallbacks): Harness Compatibility
Connect to sqlew.io for team-shared decisions:
Step 1: Get your API key
Visit sqlew.io and save your API key:
# ~/.config/sqlew/.sqlew.env (shared across all projects)
SQLEW_API_KEY=your-api-keyStep 2: Configure each project
# .sqlew/config.toml
[database]
type = "cloud"
[project]
name = "your-project-name"Benefits:
- All team members share the same decision database
- Works seamlessly with Git worktree workflows
- No local database setup required
| Metric | Value |
|---|---|
| Query speed | 2-50ms |
| Concurrent agents | 5+ simultaneous |
| Storage efficiency | ~140 bytes/decision |
| Token savings | Fewer full-tree "confirm the architecture" passes; 60-75% vs dumping Markdown ADRs into context |
- Architecture Evolution — Document major decisions with full context and alternatives considered
- Pattern Standardization — Establish coding patterns as constraints, enforce via AI code generation
- Cross-Session Continuity — Agents reuse recorded intent across days without re-auditing the tree for why
- Multi-Agent Coordination — Multiple AI agents share architectural understanding
- Onboarding Acceleration — New sessions/agents load decisions and constraints first, then read only the code paths that matter
| Guide | Description |
|---|---|
| ADR Concepts | Architecture Decision Records explained |
| Configuration | Config file setup, database options |
| Harness Compatibility | Feature × harness matrix (MCP, hooks, session context, Plan-to-ADR) |
| Hooks Guide | Claude Code, Codex, Grok Build, Hermes, and oh-my-pi (omp) integration |
| Hermes Hooks Guide | Hermes-specific setup and wire-protocol notes |
| Cross Database | Multi-database support |
| CLI Usage | Database migration, export/import |
| Scoped packages | @sqlew/* matrix, Cloud install, npm release via GitHub Actions |
- Migrating to SaaS — Export local data to sqlew.io cloud
8 action-based tools: decision, constraint, project, suggest, help, example, use_case, queue
All tools support action: "help" for documentation. The project tool targets a project per call for desktop AI agents (Claude Desktop, Hermes Desktop) — see Shared Database.
Support development via GitHub Sponsors.
Current version: 5.3.0
See CHANGELOG.md for release history.
What's New in v5.3.0:
- Hermes support — Plan-to-ADR via sqlew-plugin
.hermes-pluginbundle (hermes plugins install sqlew-io/sqlew-plugin/.hermes-plugin) - Hook normalization — Hermes
pre_tool_call/pre_llm_callpayloads mapped to canonical Claude-shaped events and tools - Every-turn plan guidance —
on-promptinjects FULL/SHORT context via Hermespre_llm_call({"context":"..."}) .hermes/plans/— Plan files written by the Hermesplanskill are tracked for decision extraction
Apache License 2.0 — Free for commercial and personal use. See LICENSE for details.
Built with MCP SDK, better-sqlite3, and TypeScript.
