base (basemode) CLI
A Rust CLI that builds a knowledge graph of code and decisions and feeds the agent the right slice through Claude Code hooks
- 306 ★ on the repository
- Last commit
Broad access
Why this level
- base hooks fire at every step of the agent's turn and add data to its context
- The installer runs as curl piped to sh and executes downloaded code
Install
- Works in
Manual install
curl -fsSL https://raw.githubusercontent.com/ChristopherKahler/base/main/install.sh | shmacOS and Linux. On Windows: irm https://raw.githubusercontent.com/ChristopherKahler/base/main/install.ps1 | iex. Then `base scaffold` in the workspace. Install Claude Code before base.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- base hooks fire at every step of the agent's turn and add data to its context
- The installer runs as curl piped to sh and executes downloaded code
This is third-party code. Review the repository files before installing.
What it does
base, or basemode, is a single Rust binary that builds a knowledge graph from your workspace and wires itself into Claude Code's hooks. The graph holds code structure with functions, calls and imports, plus projects and tasks. It also keeps decisions with rationale, rules and session data. tree-sitter parses code in more than 35 languages, and the graph sits in plain NQuads text files in the repository, so its changes show up in git. base brings the relevant facts in itself at four points of the agent's turn. At session start these are the active projects, open handoffs and stale files. At your prompt base picks matching rules and past decisions. Before a tool touches a file the agent gets its shape, imports and dependents, and after a read it sees the call chain for exactly the lines it read. The code map updates itself: on the first session in an app, on the first file read and after edits. Star commands typed straight into chat close out sessions: `*handoff` passes the work to the next session, `*fork` parks side work, `*base` saves decisions and learnings into the graph and `*end` does all at once. Several open sessions coordinate through a local relay, and `base dashboard` opens an embedded control panel over the same graph.
Who it is for. For people who work in Claude Code across several apps and are tired of an agent that meets the code anew every session and forgets decisions.
Good fit when
- The agent re-greps the project every session and you want it to have the call and import map before it starts searching
- You need to keep decisions with their rationale and find them with `base decision search` when a topic returns
- Work spans several sessions in a row and you need to pass context with `*handoff` and `*fork`
- You want to ask the graph who calls a function or what a file contains
- Markdown documentation should become a graph of concepts and links that you can query
Not a fit when
- You do not work in Claude Code: the author promises Codex and Antigravity support, but it is not ready yet
- You just need a static file of project rules: CLAUDE.md is enough for that
- You plan to sell base itself or a service that stands in for it: the FSL license does not allow that
Example request
Find who calls the validate function and remind me which decision we made on the database schemaLimitations
Right now base works only with Claude Code. The installer writes hooks only into an existing ~/.claude directory, so install Claude Code before base. Otherwise you get an inert binary and must rerun `base install`.
At session start base updates itself from GitHub releases in a background process, which you can turn off with `base config set update.auto false`. The `base graph extract` command calls a language model. Each version moves to the Apache 2.0 license two years after release.
How to disable. To pause, turn off the relay with `base config set relay.enabled false`. To remove base, delete its hooks from ~/.claude/settings.json, then the ~/.local/bin/base binary and the ~/.base-gbl/ directory. Delete the graph files in the repository along with project folders.
FAQ
How do I install base for Claude Code?
On macOS and Linux run `curl -fsSL https://raw.githubusercontent.com/ChristopherKahler/base/main/install.sh | sh`, on Windows `irm https://raw.githubusercontent.com/ChristopherKahler/base/main/install.ps1 | iex`. No Rust compiler is needed. Then run `base scaffold` in the workspace.
What does base add to Claude Code settings?
`base install` puts the binary in ~/.local/bin/base, writes global config to ~/.base-gbl/, installs the AST extraction scripts and adds hooks to ~/.claude/settings.json.
How is base different from a CLAUDE.md file?
CLAUDE.md is static, written by a person and unaware of which file is open now. base runs a query at every step of a turn and brings only the matching rules, decisions and file structure.
Does my data stay on my machine?
The graph lives in NQuads files in your repository, and the relay between sessions is local and sends nothing out. Only the self-update and the `base graph extract` command go online.
Can I use base at a commercial company?
Yes. The FSL-1.1-ALv2 license allows running, modifying and using base at a company of any size and building products on it. Only selling base itself or a service that stands in for it is forbidden, and versions convert to Apache 2.0 after two years.
Discussion
No questions or reviews yet.
Related
CLI toolsOpen-source personal AI assistant on your own machine: answers in Telegram, Slack, Discord and WhatsApp, extended with skills and plugins
An engineering system for coding agents: 68 agents, 292 skills, hooks, memory, rules and the AgentShield security scanner
DeepSeek Harness is an open-source AI agent from DeepSeek where every feature is a plugin. It runs in the browser, on macOS and on Windows.
A self-improving agent from Nous Research with a TUI, messaging gateway, cron jobs and skills it writes itself
An open source coding agent for the terminal and desktop with build and plan modes
Ollama runs open models on your own machine and serves them to agents through a local API compatible with OpenAI and Anthropic.
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| base (basemode) (this entry) | no | 306 | ||
| CORE: memory and tasks for Claude Code | no | 2,002 | a Claude Code plugin that connects CORE memory through a remote MCP server and two session hooks | |
| Trail-code (formerly Graft) | no | 10,707 | a CLI that builds a code map and keeps team decisions in .trail | |
| GitNexus | no | not required | 48,013 | indexes code into a graph and answers agent queries but does not push context into the turn itself |
README in short
The author opens with an example: the agent's answer to the same question with and without the graph. A quick start with sample queries follows, along with a comparison of base against LSP and vector memory.