Documentation

Getting Started

Install LeanCTX and add a context layer to your AI workflow in under 5 minutes. Step-by-step guide for macOS, Linux, and Windows.

LeanCTX reduces your LLM's token consumption by up to 99% through a single Rust binary that provides: a Shell Hook with 95+ CLI compression patterns, an MCP Server with 59 tools for cached reads and session intelligence, and a Persistent Project Graph for structural code understanding. Install it once, and every file read, shell command, and code navigation becomes more efficient.

Prompt Generator

Select your platform and AI tool below. The generated prompt can be pasted into any AI coding assistant - it will walk through the full installation and configuration automatically.

[x] [-] [o] generated prompt
 

Get Started in 3 Steps

[x] [-] [o] 3 commands - that's it
# 1. Install (pick one)
curl -fsSL https://leanctx.com/install.sh | sh          # universal
brew tap yvgude/lean-ctx && brew install lean-ctx        # macOS / Linux
npm install -g lean-ctx-bin                              # Node.js
cargo install lean-ctx                                   # Rust
pi install npm:pi-lean-ctx                               # Pi Coding Agent

# 2. Setup (auto-configures shell + ALL detected editors)
lean-ctx setup

# 3. Restart your shell
source ~/.zshrc  # or ~/.bashrc

lean-ctx setup automatically detects and configures: Cursor, Claude Code, Windsurf, VS Code / Copilot, Codex CLI, Gemini CLI, Zed, Antigravity, OpenCode, Crush, and Pi. Run lean-ctx doctor to verify everything works.

Detailed installation instructions per platform

Step 1: Install the Binary

Universal Installer (any platform)

The fastest way to install lean-ctx without any prerequisites:

curl -fsSL https://leanctx.com/install.sh | sh

The install script detects your OS and architecture, downloads the correct binary, and places it in /usr/local/bin. It works on macOS, Linux, and WSL.

If you prefer to review the script before running it:

curl -fsSL https://leanctx.com/install.sh -o install.sh
chmod +x install.sh
./install.sh --download    # pre-built binary (no Rust)
./install.sh               # build from source (requires Rust)

npm (Node.js)

Install the pre-built binary via npm - no Rust toolchain required:

npm install -g lean-ctx-bin

This downloads the correct binary for your platform during postinstall with SHA256 verification. Works on macOS (Intel + Apple Silicon), Linux (x86_64), and Windows (x86_64).

macOS

Option A: Homebrew (recommended)

brew tap yvgude/lean-ctx
brew install lean-ctx

Homebrew handles updates and PATH automatically.

Option B: Cargo (build from source)

cargo install lean-ctx

If lean-ctx isn't found after install, add Cargo's bin directory to your PATH:

echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Option C: Manual binary download

  1. Download the binary for your architecture from GitHub Releases:
    • lean-ctx-aarch64-apple-darwin.tar.gz (Apple Silicon / M1+)
    • lean-ctx-x86_64-apple-darwin.tar.gz (Intel)
  2. Extract and move to PATH:
    tar xzf lean-ctx-aarch64-apple-darwin.tar.gz
    chmod +x lean-ctx
    sudo mv lean-ctx /usr/local/bin/

If macOS blocks the binary with a Gatekeeper warning, remove the quarantine attribute:

xattr -d com.apple.quarantine /usr/local/bin/lean-ctx

Linux

Option A: Homebrew

brew tap yvgude/lean-ctx && brew install lean-ctx

Option B: AUR (Arch Linux)

# Source build from crates.io
yay -S lean-ctx

# Or pre-built binary from GitHub
yay -S lean-ctx-bin

Works with any AUR helper: yay, paru, trizen, etc.

Option C: Cargo (build from source)

cargo install lean-ctx

Requires Rust toolchain. Install via rustup.rs if needed.

Option D: Manual binary download

  1. Download lean-ctx-x86_64-unknown-linux-gnu.tar.gz from GitHub Releases
  2. Extract and move to PATH:
    tar xzf lean-ctx-x86_64-unknown-linux-gnu.tar.gz
    chmod +x lean-ctx
    sudo mv lean-ctx /usr/local/bin/
CommandMethod
lean-ctx-x86_64-unknown-linux-musl.tar.gzx86_64 - statically linked (musl)
lean-ctx-aarch64-unknown-linux-musl.tar.gzARM64 / aarch64 (Graviton, Raspberry Pi 4+, etc.) - statically linked

Windows

Option A: Binary download (recommended)

  1. Download lean-ctx-x86_64-pc-windows-msvc.zip from GitHub Releases
  2. Extract the .zip file
  3. Open the extracted folder - you'll see lean-ctx.exe
  4. Move lean-ctx.exe to a folder in your PATH, for example:
    mkdir %USERPROFILE%\bin
    move lean-ctx.exe %USERPROFILE%\bin\
  5. Add the folder to your PATH if it isn't already:
    • Open Settings → System → About → Advanced system settings
    • Click Environment Variables
    • Under User variables, select Path, click Edit, then New
    • Add the path to your bin folder (e.g. C:\Users\you\bin)
  6. Open a new PowerShell or CMD window and verify:
    lean-ctx --version

Option B: Cargo (build from source)

  1. Install Rust if not already installed
  2. Build and install:
    cargo install lean-ctx
  3. The binary is placed in %USERPROFILE%\.cargo\bin\ which is usually already in your PATH.

Option C: Build from source (clone & compile)

git clone https://github.com/yvgude/lean-ctx.git
cd lean-ctx\rust
cargo build --release
copy target\release\lean-ctx.exe %USERPROFILE%\bin\

WSL users: If you're running WSL, follow the Linux instructions instead.

Build from Source (any platform)

git clone https://github.com/yvgude/lean-ctx.git
cd lean-ctx/rust
cargo build --release

The binary is at target/release/lean-ctx (or lean-ctx.exe on Windows). Copy it to a directory in your PATH.

Step 2: Setup

After installing the binary, run lean-ctx setup to configure everything automatically:

lean-ctx setup

This single command:

  • Installs shell aliases (git, npm, cargo, docker, kubectl, curl, ls, find, and 95+ more)
  • Auto-detects installed editors (Cursor, Claude Code, Windsurf, VS Code/Copilot, Codex CLI, Gemini CLI, Zed, Antigravity, OpenCode, Crush, Pi)
  • Creates MCP config files for each detected editor
  • Injects agent rules into every detected tool's global config, instructing the AI to use lean-ctx's MCP tools (ctx_read, ctx_shell, ctx_search, ctx_tree) instead of native equivalents
  • Runs lean-ctx doctor to verify everything

Important: Restart your IDE after setup!

The MCP connection must be re-established for the new tools and agent rules to take effect. Close and re-open your IDE completely (Cmd+Q / Ctrl+Q, then reopen). After restart, agent rules are also automatically updated on every IDE start - no need to re-run lean-ctx setup after future updates.

After setup, restart your shell:

ShellRestart command
Zsh (macOS default)source ~/.zshrc
Bashsource ~/.bashrc
Fishsource ~/.config/fish/config.fish
PowerShellClose and reopen PowerShell

Then restart your editor completely.

Manual alternative

If you prefer to install only shell aliases without editor auto-detection:

lean-ctx init --global

Then configure your editor manually using the instructions in Step 3 below.

Eval-based init (recommended)

As an alternative to lean-ctx init --global, you can use the eval pattern - the same method used by starship, zoxide, and atuin. The hook code is printed to stdout by the currently-installed binary, so it's always up-to-date after upgrades:

# bash: add to ~/.bashrc
eval "$(lean-ctx init bash)"

# zsh: add to ~/.zshrc
eval "$(lean-ctx init zsh)"

# fish: add to ~/.config/fish/config.fish
lean-ctx init fish | source

# powershell: add to $PROFILE
lean-ctx init powershell | Invoke-Expression

Advantage: The eval method generates hooks from the installed binary at shell startup, so hooks are never stale after a lean-ctx update. No need to run lean-ctx setup again after upgrading.


Step 3: Verify

  1. Check the binary is installed:
    lean-ctx --version   # → lean-ctx 3.x.x
    lean-ctx doctor      # checks PATH, config, aliases, MCP
  2. Test the shell hook:
    git status           # output is now compressed
    lean-ctx gain        # shows token savings so far
  3. Open your AI coding tool and start coding - lean-ctx tools should be available automatically.

Setup complete! What's next?

Manual editor configuration

only if lean-ctx setup didn't work

Connect lean-ctx to your AI coding tool by adding it as an MCP server.

Before you start: Find your lean-ctx binary path. You'll need it for editors that require a full path.

# macOS / Linux:
which lean-ctx
# Example output: /opt/homebrew/bin/lean-ctx  or  /Users/you/.cargo/bin/lean-ctx

# Windows (PowerShell):
where.exe lean-ctx
# Example output: C:\Users\you\.cargo\bin\lean-ctx.exe

Keep this path handy - some editors need the full absolute path instead of just lean-ctx.

Cursor

  1. Create or edit the MCP config file:
    # macOS / Linux:
    mkdir -p ~/.cursor
    nano ~/.cursor/mcp.json
    
    # Windows (PowerShell):
    mkdir -Force "$env:USERPROFILE\.cursor"
    notepad "$env:USERPROFILE\.cursor\mcp.json"
  2. Paste this JSON:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "lean-ctx"
        }
      }
    }
  3. Restart Cursor completely (Cmd+Q / Alt+F4, then reopen).
  4. Verify: open the MCP panel in settings - lean-ctx should show as "connected".

Optional: install agent rules to make Cursor prefer lean-ctx tools:

lean-ctx init --agent cursor

Claude Code

Claude Code has built-in MCP support. No config file needed:

# Add lean-ctx as MCP server:
claude mcp add lean-ctx lean-ctx

# Install the CLAUDE.md instructions (makes Claude use lean-ctx tools):
lean-ctx init --agent claude

The init command creates a CLAUDE.md file that teaches Claude to use lean-ctx tools instead of native file reads and shell commands.

Claude Code: 2048-Character Limit

Claude Code truncates MCP server instructions to 2048 characters. This means lean-ctx's full instruction set (session management, compression protocols, tool preferences) gets cut off.

lean-ctx handles this automatically: lean-ctx init --agent claude installs the full instructions as a Claude Rules file (~/.claude/rules/lean-ctx.md) and an Agent Skill (~/.claude/skills/lean-ctx/). Claude Code loads these without any character cap.

# Automatic (recommended) - run during init:
lean-ctx init --agent claude

# This automatically:
# 1. Registers MCP server in ~/.claude.json
# 2. Installs full instructions to ~/.claude/rules/lean-ctx.md
# 3. Installs Agent Skill to ~/.claude/skills/lean-ctx/

If you installed lean-ctx manually (without init), copy the rules file: lean-ctx init --agent claude to retroactively install rules + skills.

GitHub Copilot (VS Code)

Option A: Copilot CLI (.github/mcp.json)

  1. Create .github/mcp.json in your project root:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "lean-ctx"
        }
      }
    }
  2. Restart VS Code / Copilot CLI.

Option B: VS Code Copilot (.vscode/mcp.json)

  1. Create .vscode/mcp.json in your project root:
    {
      "servers": {
        "lean-ctx": {
          "type": "stdio",
          "command": "lean-ctx"
        }
      }
    }
  2. Restart VS Code.

Tip: lean-ctx init --agent copilot creates both files automatically.

Note: GitHub Copilot MCP support requires VS Code 1.99+ and the latest Copilot extension. Copilot CLI uses .github/mcp.json with the mcpServers key; VS Code Copilot uses .vscode/mcp.json with the servers key.

Per-project: These configs are per-project. Commit them to share with your team.

Windsurf

  1. Open the MCP config file:
    # macOS:
    mkdir -p ~/.codeium/windsurf
    nano ~/.codeium/windsurf/mcp_config.json
    
    # Linux:
    mkdir -p ~/.codeium/windsurf
    nano ~/.codeium/windsurf/mcp_config.json
    
    # Windows:
    mkdir -Force "$env:USERPROFILE\.codeium\windsurf"
    notepad "$env:USERPROFILE\.codeium\windsurf\mcp_config.json"
  2. Paste this JSON:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "/FULL/PATH/TO/lean-ctx"
        }
      }
    }

    Important: Windsurf requires the full absolute path to the binary. Example for Homebrew on macOS:

    {
      "mcpServers": {
        "lean-ctx": {
          "command": "/opt/homebrew/bin/lean-ctx"
        }
      }
    }
  3. Restart Windsurf completely.
  4. Check MCP connection in Windsurf settings.

Zed

  1. Open Zed settings:
    # macOS / Linux:
    ~/.config/zed/settings.json
    
    # Windows:
    %APPDATA%\Zed\settings.json
  2. Add the lean-ctx context server configuration:
    {
      "context_servers": {
        "lean-ctx": {
          "source": "custom",
          "command": "lean-ctx",
          "args": [],
          "env": {}
        }
      }
    }

    Note: Zed uses context_servers (not mcpServers) and requires source: "custom".

  3. Save and restart Zed.
  4. Verify: lean-ctx tools should appear in the assistant panel.

Tip: Run lean-ctx init --agent zed to install agent rules that make Zed prefer lean-ctx tools.

OpenAI Codex CLI

  1. Create or edit the Codex config file:
    # macOS / Linux:
    mkdir -p ~/.codex
    nano ~/.codex/config.toml
    
    # Windows:
    mkdir -Force "$env:USERPROFILE\.codex"
    notepad "$env:USERPROFILE\.codex\config.toml"
  2. Add the MCP server entry:
    [mcp_servers.lean-ctx]
    command = "lean-ctx"
    args = []
  3. Restart Codex CLI.

Alternative: use the Codex CLI built-in command:

codex mcp add lean-ctx

Install agent instructions for Codex:

lean-ctx init --agent codex

Gemini CLI

  1. Create or edit the Gemini MCP config:
    # macOS / Linux:
    mkdir -p ~/.gemini
    nano ~/.gemini/settings.json
    
    # Windows (PowerShell):
    mkdir -Force "$env:USERPROFILE\.gemini"
    notepad "$env:USERPROFILE\.gemini\settings.json"
  2. Add the MCP server configuration:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "lean-ctx"
        }
      }
    }

    Important: If Gemini can't find the binary, use the full path. Example for Homebrew on macOS:

    {
      "mcpServers": {
        "lean-ctx": {
          "command": "/opt/homebrew/bin/lean-ctx"
        }
      }
    }
  3. Restart Gemini CLI.
  4. Verify with a prompt that triggers tool use.

Known issue: Gemini CLI may not always invoke MCP tools consistently. If tools aren't triggered, try adding lean-ctx init --agent gemini to install a GEMINI.md with usage instructions.

Antigravity

Antigravity uses the same MCP config format as Gemini CLI but in a separate directory.

  1. Create the Antigravity MCP config directory and file:
    # macOS / Linux:
    mkdir -p ~/.gemini/antigravity
    nano ~/.gemini/antigravity/mcp_config.json
    
    # Windows (PowerShell):
    mkdir -Force "$env:USERPROFILE\.gemini\antigravity"
    notepad "$env:USERPROFILE\.gemini\antigravity\mcp_config.json"
  2. Paste this JSON:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "lean-ctx"
        }
      }
    }

    Important: If Antigravity can't find the binary, use the full absolute path to lean-ctx.

  3. Restart Antigravity.
  4. Verify with a prompt that triggers tool use.

You can also manage MCP servers via Antigravity's built-in server management UI.

OpenCode

  1. Create or edit the OpenCode config file:
    # macOS / Linux:
    mkdir -p ~/.config/opencode
    nano ~/.config/opencode/opencode.json
  2. Add the MCP server configuration:
    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "lean-ctx": {
          "type": "local",
          "command": ["lean-ctx"],
          "enabled": true
        }
      }
    }
  3. Restart OpenCode.

OpenClaw

OpenClaw supports MCP servers natively. You can add lean-ctx from the settings UI or via CLI.

  1. Open OpenClaw settings and navigate to the MCP servers section.
  2. Add a new MCP server with command: lean-ctx
  3. Restart OpenClaw to activate.

Tip: Run lean-ctx init --agent openclaw to install lean-ctx skills for OpenClaw.

Pi

Pi has a dedicated lean-ctx plugin (pi-lean-ctx) that integrates automatically.

  1. Make sure lean-ctx is installed:
    cargo install lean-ctx
  2. Install the Pi plugin:
    pi install npm:pi-lean-ctx

    Or use lean-ctx's built-in command:

    lean-ctx init --agent pi
  3. Restart Pi.
  4. Verify: lean-ctx tools should appear in Pi's tool list.

Note: Pi's smart reads automatically use lean-ctx when the plugin is installed. No additional configuration needed.

AWS Kiro

AWS Kiro requires both an MCP config and a steering file to use lean-ctx tools instead of native equivalents.

  1. Run lean-ctx setup - Kiro is auto-detected and both MCP config + steering file are created.
  2. Or use the dedicated command (creates both files):
    lean-ctx init --agent kiro
  3. This creates two files:
    • ~/.kiro/settings/mcp.json - MCP server connection
    • .kiro/steering/lean-ctx.md - Steering file that tells Kiro to prefer mcp_lean_ctx_ctx_read over readFile, etc.
  4. Restart Kiro to activate.

Important: The steering file (.kiro/steering/lean-ctx.md) is per-project. Without it, Kiro will default to its native tools and ignore the MCP server for reads and searches.

Verdent

Verdent supports MCP servers via configuration or CLI.

  1. Open Verdent settings or navigate to the MCP section.
  2. Run the init command:
    lean-ctx init --agent verdent
  3. Or manually create the MCP config:
    {
      "mcpServers": {
        "lean-ctx": {
          "command": "lean-ctx"
        }
      }
    }
  4. Restart Verdent to activate.

Note: Verdent's MCP support may require a recent version. Update Verdent if tools don't appear.

Other MCP-compatible tools

Any tool that supports the Model Context Protocol can use lean-ctx. The standard MCP config format is:

{
  "mcpServers": {
    "lean-ctx": {
      "command": "lean-ctx"
    }
  }
}

Key points:

  • The command must point to the lean-ctx binary (use full path if not in PATH).
  • No args or env are required - lean-ctx auto-configures.
  • The binary communicates via stdio (standard MCP transport).
  • After adding the config, restart your tool and verify lean-ctx tools appear.

Docker Installation

To use lean-ctx inside a Docker container (e.g. with Claude Code, Codex, or other AI agents), use the statically-linked musl binary and set BASH_ENV so the shell hook loads in non-interactive shells.

ARG LEAN_CTX_VERSION=3.6.0

# Download the musl binary (statically linked, no glibc dependency)
RUN curl -fsSL \
    "https://github.com/yvgude/lean-ctx/releases/download/v${LEAN_CTX_VERSION}/lean-ctx-x86_64-unknown-linux-musl.tar.gz" \
    | tar -xz -C /usr/local/bin lean-ctx && \
    chmod +x /usr/local/bin/lean-ctx

# Install shell hook (non-interactive) + configure your AI tool
RUN lean-ctx init --global && \
    lean-ctx init --agent claude

# Load shell hook in non-interactive shells
ENV BASH_ENV="/root/.lean-ctx/env.sh"

# Claude Code: sources this file before each command
ENV CLAUDE_ENV_FILE="/root/.lean-ctx/env.sh"

For ARM64 hosts (AWS Graviton, Apple Silicon via Docker), use the aarch64 binary instead:

# For ARM64 (Apple Silicon / Graviton), use the aarch64 binary:
RUN curl -fsSL \
    "https://github.com/yvgude/lean-ctx/releases/download/v${LEAN_CTX_VERSION}/lean-ctx-aarch64-unknown-linux-musl.tar.gz" \
    | tar -xz -C /usr/local/bin lean-ctx

Why this works

StepPurpose
musl binary Statically linked - works on any Linux distro without installing gcc-libs or glibc
lean-ctx init --global Installs shell hook into ~/.bashrc (non-interactive, unlike lean-ctx setup)
lean-ctx init --agent claude Writes MCP server config to ~/.claude.json. Replace claude with your agent: cursor, codex, gemini, etc.
BASH_ENV Generic non-interactive shells (bash -c) source this file. Most ~/.bashrc files exit early in non-interactive mode - env.sh has no such guard.
CLAUDE_ENV_FILE Claude Code sources this file before every command it runs. This is the officially recommended way to configure the shell environment for Claude Code.

Project Identity in Docker

When multiple projects share the same /workspace mount path inside Docker containers, lean-ctx may confuse their data (graph index, semantic cache, etc.) because it uses the path to identify projects. To solve this, create a .lean-ctx-id file in your project root:

# In your project root (before building the Docker image)
echo "my-unique-project-name" > .lean-ctx-id

This file takes highest priority for project identification — above git remote, package.json, and directory name. Include it in your Dockerfile or mount it as a volume. Existing data is automatically migrated from old hash directories when the identity changes.

Common issues

ErrorCauseFix
command not found: _lc BASH_ENV not set - shell hook not loadedAdd ENV BASH_ENV="/root/.lean-ctx/env.sh" (adjust path for non-root users)
lean-ctx setup hangs Interactive prompt with no stdin in DockerUse lean-ctx init --global instead
Binary not found / exec format error Wrong architecture or using gnu binary without glibcUse the musl tarball for minimal containers

Monitor Savings

# Terminal dashboard (colors, bars, sparklines)
lean-ctx gain

# Web dashboard with charts
lean-ctx dashboard

# Find uncompressed commands in shell history
lean-ctx discover

# Run a real benchmark on your project
lean-ctx benchmark run

Agent Hooks & Editor Integration

Configure lean-ctx for your specific AI agent or editor. The init command sets up MCP configuration, shell hooks, and verifies everything works. Use doctor to diagnose and auto-fix issues.

# Configure a specific AI tool (mode auto-detected; override with --mode)
lean-ctx init --agent cursor
lean-ctx init --agent claude
lean-ctx init --agent codex
lean-ctx init --agent gemini
lean-ctx init --agent hermes
lean-ctx init --agent pi            # or: pi install npm:pi-lean-ctx
lean-ctx init --agent qoder
lean-ctx init --agent qoderwork

# Force MCP tools if you prefer ctx_* calls
lean-ctx init --agent cursor --mode mcp

# Run diagnostics and auto-fix issues
lean-ctx doctor --fix

# Check current status (MCP, shell, editors)
lean-ctx status --json

Updating

The fastest way to update lean-ctx:

lean-ctx update

This auto-detects your installation method, downloads the latest version, and replaces the binary.

You can also update manually using the original installation method:

MethodCommand
Homebrewbrew update && brew upgrade lean-ctx
Cargocargo install lean-ctx
npmnpm update -g lean-ctx-bin
AURyay -Syu lean-ctx
Pipi install npm:pi-lean-ctx
install.shRe-run curl -fsSL https://leanctx.com/install.sh | sh
BinaryDownload latest from GitHub Releases

After updating, re-run lean-ctx setup to ensure shell hooks and editor configs are up to date:

lean-ctx setup           # re-configures shell + editors
source ~/.zshrc          # restart shell

Uninstalling

To fully remove lean-ctx from your system:

lean-ctx uninstall

This removes:

  • Shell hook entries from ~/.zshrc, ~/.bashrc, ~/.config/fish/config.fish, and PowerShell profiles
  • Agent rules files (CLAUDE.md, .cursorrules, etc.)
  • Cache and config files in ~/.lean-ctx/

Then remove the binary itself:

Installed viaRemove command
Cargocargo uninstall lean-ctx
Homebrewbrew uninstall lean-ctx
AURyay -R lean-ctx
Pipi uninstall npm:pi-lean-ctx
Manual binaryrm $(which lean-ctx)

Restart your terminal and AI coding tool to complete the uninstallation.

Agent Rules

Agent rules tell your AI coding tool to prefer lean-ctx MCP tools (ctx_read, ctx_shell, ctx_search, ctx_tree) over native file reads, shell commands, and search. Run lean-ctx init --agent <name> to install them automatically.

How it works

  • lean-ctx init --agent <name> writes a rules/instructions file to the agent's expected location.
  • The rules file teaches the AI to use ctx_read, ctx_shell, ctx_search, and ctx_tree instead of native equivalents.
  • This is optional - lean-ctx works without agent rules, but performance improves when the AI actively uses lean-ctx tools.
  • The rules are idempotent - running init again updates them without duplicating content.

What gets injected

The rules tell the AI agent to use lean-ctx MCP tools instead of native equivalents:

Instead ofUseWhy
Read / catctx_readCached, 10 read modes, re-reads cost ~13 tokens
Shell / bashctx_shellPattern compression for git, npm, cargo, docker output
Grep / searchctx_searchCompact, token-efficient results
ls / findctx_treeCompact directory maps with file counts

Note: Write, StrReplace, Delete, and Glob have no lean-ctx replacement - the rules tell the AI to keep using native tools for those.

Where are rules installed?

AI ToolRules File
Claude Code~/.claude/CLAUDE.md
Codex CLI~/.codex/instructions.md
Cursor~/.cursor/rules/lean-ctx.mdc
Windsurf~/.codeium/windsurf/rules/lean-ctx.md
Gemini CLI~/.gemini/GEMINI.md
VS Code / Copilot.github/copilot-instructions.md
Zed~/.config/zed/rules/lean-ctx.md
OpenCode~/.config/opencode/rules/lean-ctx.md
Pipi-lean-ctx package (built-in via pi.dev)
Qoder~/.qoder/settings.json (PreToolUse hooks)

Manual rules (fallback)

If your AI tool doesn't support agent rules, you can paste these instructions into the system prompt or a rules file:

# lean-ctx - Context Layer

Hybrid mode (default):
- Use MCP tools for reads/search (cached, token-efficient):
  - ctx_read instead of Read/cat for file reads
  - ctx_search instead of Grep/search for code search
- Use lean-ctx -c "<cmd>" for compressed shell output

MCP-only mode:
- Use ctx_* tools for everything:
  - ctx_read for file reads
  - ctx_shell for shell commands
  - ctx_search for code search
  - ctx_tree for directory listing

Keep using native tools for: Write, StrReplace, Delete, Glob (no lean-ctx replacement).
Do NOT fall back to native tools for reading/shell/search/tree when a lean-ctx path is available.

Cursor users: Save this as .cursor/rules/lean-ctx.mdc in your project root for project-level rules, or ~/.cursor/rules/lean-ctx.mdc for global rules.

Troubleshooting

lean-ctx: command not found

The binary isn't in your PATH. Check where it was installed:

# Cargo installs here:
ls ~/.cargo/bin/lean-ctx

# Homebrew installs here (macOS):
ls /opt/homebrew/bin/lean-ctx

# Manual installs - wherever you placed it:
ls /usr/local/bin/lean-ctx

Add the correct directory to your PATH in your shell profile.

AI isn't using lean-ctx tools

If the AI keeps using native Read/Shell instead of ctx_read/ctx_shell:

  • Run lean-ctx init --agent <name> to install agent rules
  • Restart the AI tool completely (not just reload)
  • Check that the MCP server is connected (look for lean-ctx in the tool's MCP panel)
  • Try prompting explicitly: "use ctx_read to read this file"

No lean-ctx tools appearing

  • Verify the binary path is correct in your MCP config
  • Run lean-ctx doctor to check for issues
  • Check the AI tool's MCP logs for connection errors
  • Try using the full absolute path to lean-ctx in the config

Shell hook causes hangs

If commands hang after installing the shell hook, set the LEAN_CTX_ACTIVE environment variable to bypass compression for specific commands:

LEAN_CTX_ACTIVE=1 cargo test

This disables lean-ctx compression for that command. Useful for CI/CD scripts and long-running processes.

macOS Gatekeeper blocks lean-ctx

xattr -d com.apple.quarantine $(which lean-ctx)

Windows: PowerShell vs cmd.exe

lean-ctx prioritizes PowerShell on Windows. If you experience issues with cmd.exe, set the LEAN_CTX_SHELL environment variable to force PowerShell: $env:LEAN_CTX_SHELL = "powershell"

Next Steps