opencrow is a thin wrapper around the interactive Claude Code CLI. You launch opencrow instead of claude: the foreground session is your normal terminal claude, but it can now recall relevant work from past sessions, and when the conversation ends it learns in the background: it indexes your past conversations so they stay searchable, remembers your preferences and how you like to work, and turns recurring tasks into reusable skills (pruning the ones you stop using).
No extra API key. Your Claude subscription stays the core — opencrow only attaches hooks and an MCP server to the claude you already log into.
Claude Code already ships the building blocks — hooks, skills, memory files, and MCP. opencrow uses them to add what isn't built in: automatic cross-session recall and a learning loop that runs every time you finish a conversation.
日本語版の README は
README.ja.mdにあります。
How it works
opencrow has two faces:
Foreground (your terminal) — opencrow spawns claude with stdio inherited (a normal interactive session) and injects:
- a
UserPromptSubmithook that prefetches related past work into the prompt each turn, - an MCP server exposing
recall_search(search your own history) andskill_save(let the model persist/refine its own skills).
Background (unattended) — when the session ends (/exit, Ctrl+D, Ctrl+C), a detached process runs one learning pass:
- Recall index — transcripts → SQLite + FTS5.
- Learning loop — extracts durable user-model facts and generates/merges skills, a few items at a time, by driving a headless
claudeover a PTY (text-in / text-out, still on your subscription).
Everything accumulated is inspectable and reversible via the CLI.
Where things accumulate
opencrow does the learning, but the generated skills are written into your global claude (~/.claude/skills/, or CLAUDE_CONFIG_DIR if set) — so any claude session can use them, whether or not you launched it through opencrow. The recall index (recall.db) and the preferences it remembers (user-model.json) live in opencrow's own directory (~/.opencrow) and are surfaced into your live session via the hook and MCP.
Principles
- The core is the interactive
claude(subscription). A/login-edclaudeis launched as-is. Noclaude -p, SDK, or API key. - The foreground stays your normal
claude. opencrow doesn't intercept or re-render your session — it just passesclaudethe hooks and MCP server that power the learning layer (context injection, history search, skill save), so it feels exactly like theclaudeyou already use. - The background is unattended PTY-driven. Learning inference runs a headless
claudefor one turn at a time. - Automatic, incremental, non-destructive. Generation needs no approval, runs a few items per pass, and skills are archived (never hard-deleted).
- Management is visible and reversible.
opencrow memory/opencrow skillslet you view and remove what was learned.
Requirements
- Node.js >= 20
- The
claudeCLI, already logged in (claude /login). opencrow drives theclaudeon yourPATH. - Native modules (
@lydell/node-pty,better-sqlite3) are built/downloaded on install. Primary target is macOS (arm64); other platforms may work but are less tested.
Install
git clone https://github.com/opencrow-ai/opencrow.git
cd opencrow
npm install
npm run build
npm link # put the `opencrow` command on your PATH (optional)
Without
npm link, run it asnode dist/cli/main.cjs …(ornpm run cli …in dev).
Usage
Run opencrow instead of claude. It launches your normal interactive session with the learning layer attached (prefetch hook + recall MCP):
opencrow # launch claude with learning attached
opencrow --resume # any claude flag passes straight through
opencrow --model <name> # e.g. --model, -c, --resume — forwarded to claude
When the conversation ends, a background learning pass runs automatically.
Search your history and manage what opencrow has learned, all from the terminal:
opencrow recall <query> # full-text search your past sessions
opencrow memory # show remembered preferences & facts
opencrow memory clear # forget them all
opencrow skills # list auto-generated skills
opencrow skills archive <name> # archive one (reversible, non-destructive)
opencrow skills rm <name> # remove one
opencrow status # recall store dashboard
opencrow learn # run a learning pass now (normally automatic on exit)
opencrow --help
Unrecognized arguments are forwarded to
claude. To pass one that collides with a subcommand name, prefix it with--— e.g.opencrow -- statuslaunches claude withstatusas a claude argument.OPENCROW_DRY_RUN=1prints the resolved launch without spawning.
Documentation
docs/ARCHITECTURE.md— full design and component map.docs/DESIGN.md— a one-page snapshot of the current design (rationale, scope, non-goals).docs/CONTRIBUTING.md— how to build, test, and contribute.docs/SECURITY.md— how to report a vulnerability.
Japanese versions live next to each file as *.ja.md under docs/.
A note on usage
opencrow runs against your own Claude account and claude CLI login. Use it in accordance with Anthropic's terms of service. This project is not affiliated with or endorsed by Anthropic.
License
MIT © Gekko0114
No comments yet
Be the first to share your take.