Journeys
Journey: Daily Use
The invisible core loop. Once connected, LeanCTX intercepts the reads, searches and shell commands your AI runs all day and returns compressed, cached results — with no change to how you work.
You arecoding with your AI every day
readgrepfindls-c / execgaintools
You’re connected. Now you (and your AI) work in the codebase every day. This journey covers the commands and MCP tools you’ll touch constantly: reading files, running commands, searching, and seeing what you saved.
The two ways LeanCTX helps you every day
| Path | When it fires | What you do |
|---|---|---|
| MCP tools | Your AI reads/searches files | Nothing — your editor calls ctx_* automatically |
| Shell hook | A command runs in a hooked shell | Nothing — output is compressed automatically |
You rarely call the CLI by hand. The CLI commands below exist so you can (for scripts, for inspection, and to understand what your AI is doing).
Reading files
lean-ctx read <file> / ctx_read
What it does: Reads a file with compression and a session cache. The first read compresses; an unchanged re-read costs ~13 tokens instead of the whole file.
lean-ctx read src/main.rs # auto mode
lean-ctx read src/main.rs -m signatures
lean-ctx read src/main.rs --fresh # bypass cache
The 10 read modes (mode param):
| Mode | Returns | Use when |
|---|---|---|
auto | LeanCTX picks the best mode | you’re unsure (default) |
full | whole file, cached | you’ll edit it |
map | imports + API surface | context-only file |
signatures | function/type signatures only | you need the API |
aggressive | heavy compression | very large file |
entropy | entropy-ranked lines | huge file, want the dense parts |
task | lines relevant to a task | task-focused read |
reference | reference handle, not content | output too big to inline |
diff | lines changed since last read | re-checking a file |
lines:N-M | a specific range | you know where to look |
Under the hood: ctx_read consults the session cache; a cache hit returns a
file reference instead of content. A mode predictor learns which mode works best
for which file over time.
Golden output — the same file in three modes. Reading a 66-line file:
mode = map, imports + API surface only:
jetbrains.rs 66L
deps: super::super::resolve_binary_path
API:
λ+install_jetbrains_hook()
λ-print_jetbrains_manual_step(display_path:s)
mode = signatures, the same API as a flat signature list:
jetbrains.rs 66L
deps super::super::resolve_binary_path
λ+install_jetbrains_hook()
λ-print_jetbrains_manual_step(display_path:s)
mode = full returns all 66 lines verbatim. The λ+ / λ- markers encode
visibility (+ public, - private), so map and signatures convey the file’s
shape in ~5 lines instead of 66, and the first read in a session may also prepend
an --- AUTO CONTEXT --- block with related files and graph edges.
lean-ctx diff <a> <b> / ctx_delta
Compressed diff between two files (CLI) or incremental diff since the last read
of one file (ctx_delta, the MCP tool, returns only changed lines).
Running commands
lean-ctx -c "cmd" / ctx_shell
What it does: Runs a shell command and compresses noisy output (test runners, builds, package managers) while keeping the signal.
lean-ctx -c "cargo test" # compressed
lean-ctx -c "cargo test" --raw # full output
lean-ctx -t "cargo build" # tracked: full output + recorded stats
lean-ctx bypass "cmd" # zero compression (= LEAN_CTX_RAW=1)
When the shell hook is installed, your AI’s terminal commands route through this
automatically, you don’t type lean-ctx -c yourself. The hook respects an
allowlist (shell_allowlist, ~200 binaries) and skips excluded_commands.
Safety: commands run under PathJail and the shell allowlist. Secrets in
output are redacted when [secret_detection] is on (default). Set
shell_strict_mode = true to block $() / backticks.
Searching & navigating
| Command | MCP tool | What it does |
|---|---|---|
lean-ctx grep <pat> [path] | ctx_search | Regex search, compressed results |
lean-ctx find <pat> [path] | — | Find files by glob/substring |
lean-ctx ls [path] | ctx_tree | Compact directory map with counts |
lean-ctx deps [path] | — | Project dependencies |
| — | ctx_semantic_search | Meaning-based search (BM25 + embeddings) |
Regex vs. semantic: use ctx_search/grep when you know the string; use
ctx_semantic_search when you know the concept (“where do we validate auth
tokens?”). Semantic search needs an index, it builds on first use and updates
in the background.
One call instead of three: when you’re exploring (“where is X handled?”),
ctx_composeanswers in a single call — keywords + ranked files + matches + the top symbol inline — instead of a separate search → read → search loop. It’s the highest-leverage everyday power tool; see Context Engineering for details.
Seeing what you saved — lean-ctx gain
What it does: The token-savings dashboard. This is where savings live — by
design, LeanCTX does not print “↓80% saved” footers inline (that would cost
tokens). You check gain when you want the numbers.
lean-ctx gain # summary dashboard
lean-ctx gain --live # live-updating
lean-ctx gain --graph # trend graph
lean-ctx gain --daily # per-day breakdown
lean-ctx gain --wrapped # "year in review" summary
lean-ctx gain --json # machine-readable
Empty state: a fresh install shows “No savings recorded yet — and that’s
expected,” with next steps. Savings accrue as your AI uses the ctx_* tools;
the first real numbers appear after a few file reads or commands.
Golden output — a populated dashboard (real numbers from a long-running install):
lean-ctx gain, token savings dashboard
╭──────────────────────────────────────────────────────────────╮
│ ◆ lean-ctx Token Savings Dashboard │
├──────────────────────────────────────────────────────────────┤
│ 388.8M 62.6% 18,707 $983.19 │
│ tokens saved compression commands USD saved │
╰──────────────────────────────────────────────────────────────╯
past 30 days: $971.96 saved
Cost Breakdown @ $2.50/M input · $10.00/M output
──────────────────────────────────────────────────────────────
Without lean-ctx $1585.68 $1552.01 input + $33.67 output
With lean-ctx $602.50 $580.05 input + $22.45 output
You saved $983.19 input $971.96 + output $11.22
Related: lean-ctx token-report (token + memory report), lean-ctx ghost
(hidden token waste from uncompressed commands), lean-ctx discover (missed
compression opportunities in your shell history).
Choosing how much LeanCTX exposes — lean-ctx tools
What it does: Sets the tool profile — how many MCP tools your AI sees. Fewer tools = less per-call overhead.
lean-ctx tools minimal # 5 essential tools
lean-ctx tools standard # 20 tools (balanced)
lean-ctx tools power # all tools (default for existing installs)
lean-ctx tools show # current profile
lean-ctx tools list # what each profile contains
toolsvs.profile:toolscontrols which MCP tools are exposed.profile(see Advanced & Integrations) controls context profiles — compression and read-mode behavior. They sound similar but do different things;lean-ctx toolsis the canonical entry point for tool profiles.
After changing the profile, restart your AI tool so it re-reads the tool list.
Output verbosity
lean-ctx compression standard # off | lite | standard | max
Controls how aggressively shell/tool output is compressed (terse is an alias).
max is the densest; off disables it for a session. Default is lite.