26382a7ac6
CI / Clippy (push) Failing after 15m13s
CI / Test (ubuntu-latest) (push) Failing after 16m1s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Build (no embeddings / no ORT) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Cookbook (Node) (push) Has been cancelled
CI / Pi Extension (Node) (push) Has been cancelled
CI / Rust SDK (lean-ctx-client) (push) Has been cancelled
CI / Embed SDK (lean-ctx-sdk) (push) Has been cancelled
CI / Python SDK (leanctx) (push) Has been cancelled
CI / Hermes Plugin (Python) (push) Has been cancelled
CI / SDK Conformance Matrix (push) Has been cancelled
CI / Coverage (push) Has been cancelled
CI / cargo-deny (push) Has been cancelled
CI / Adversarial Safety (push) Has been cancelled
CI / Benchmarks (push) Has been cancelled
CI / Output-Quality Gate (eval A/B) (push) Has been cancelled
CI / Documentation (push) Has been cancelled
CI / CI Green (push) Has been cancelled
JetBrains Plugin / Actionlint (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (rust) (push) Has been cancelled
JetBrains Plugin / Validation (push) Has been cancelled
JetBrains Plugin / Build (push) Has been cancelled
JetBrains Plugin / Test (push) Has been cancelled
Security Check / Security Scan (push) Has been cancelled
300 lines
9.9 KiB
Markdown
300 lines
9.9 KiB
Markdown
# Pi Coding Agent + lean-ctx Integration Guide
|
|
|
|
Complete guide to setting up and optimally using lean-ctx with [Pi Coding Agent](https://github.com/badlogic/pi-mono).
|
|
|
|
## Overview
|
|
|
|
| Property | Value |
|
|
|----------|-------|
|
|
| Integration mode | **Hybrid** (CLI tools + optional MCP bridge) |
|
|
| Package | [`pi-lean-ctx`](https://pi.dev/packages/pi-lean-ctx) |
|
|
| npm | [`pi-lean-ctx`](https://www.npmjs.com/package/pi-lean-ctx) |
|
|
| Rules file | `AGENTS.md` (auto-generated in project root) |
|
|
| Setup command | `lean-ctx init --agent pi` |
|
|
|
|
## Quick Setup
|
|
|
|
```bash
|
|
# Install the Pi extension
|
|
pi install npm:pi-lean-ctx
|
|
|
|
# Or use lean-ctx's setup
|
|
lean-ctx init --agent pi
|
|
|
|
# Verify
|
|
lean-ctx doctor
|
|
```
|
|
|
|
## Tool Modes
|
|
|
|
pi-lean-ctx supports two operational modes:
|
|
|
|
### Additive Mode (Default)
|
|
|
|
Pi's built-in tools (`read`, `bash`, `ls`, `find`, `grep`) remain available alongside `ctx_*` tools. The agent can choose either set.
|
|
|
|
### Replace Mode
|
|
|
|
Disables Pi builtins — only `ctx_*` tools available:
|
|
|
|
```bash
|
|
export LEAN_CTX_PI_MODE=replace
|
|
```
|
|
|
|
## Available Tools
|
|
|
|
### CLI-backed Tools (Always Available)
|
|
|
|
| Tool | Replaces | What it does |
|
|
|------|----------|-------------|
|
|
| `ctx_read` | `read` | Smart mode selection (full/map/signatures) based on file type and size |
|
|
| `ctx_shell` | `bash` | All shell commands compressed via lean-ctx's 95+ patterns |
|
|
| `ctx_grep` | `grep` | Results grouped and compressed via ripgrep + lean-ctx |
|
|
| `ctx_find` | `find` | File listings compressed and .gitignore-aware |
|
|
| `ctx_ls` | `ls` | Directory output compressed |
|
|
| `lean_ctx` | — | Direct lean-ctx CLI access (overview, session, knowledge, gain) |
|
|
|
|
Pi's `edit` and `write` builtins remain unchanged in both modes.
|
|
|
|
### MCP Tools (Optional)
|
|
|
|
Enable advanced MCP tools by setting:
|
|
|
|
```bash
|
|
export LEAN_CTX_PI_ENABLE_MCP=1
|
|
```
|
|
|
|
Or during setup:
|
|
|
|
```bash
|
|
lean-ctx init --agent pi --mode mcp
|
|
```
|
|
|
|
This spawns lean-ctx as an embedded MCP server and registers additional tools:
|
|
|
|
| Tool | Purpose |
|
|
|------|---------|
|
|
| `ctx_session` | Session state management and persistence |
|
|
| `ctx_knowledge` | Project knowledge graph with temporal validity |
|
|
| `ctx_semantic_search` | Find code by meaning, not exact text |
|
|
| `ctx_overview` | Codebase overview and architecture analysis |
|
|
| `ctx_repomap` | PageRank-based repo map (most important symbols) |
|
|
| `ctx_callgraph` | Multi-hop call graph traversal and risk analysis |
|
|
| `ctx_impact` | Blast radius analysis for code changes |
|
|
| `ctx_pack` | Context packaging (export project as AI-friendly format) |
|
|
| `ctx_compress` | Manual compression control |
|
|
| `ctx_metrics` | Token savings dashboard |
|
|
| `ctx_multi_read` | Batch file reads |
|
|
|
|
### Tool surface: lean / standard / power
|
|
|
|
The MCP bridge advertises whatever surface it requests from lean-ctx. By default
|
|
that's the **lean core** + the `ctx_call` gateway — identical to a normal lean-ctx
|
|
install, with every other tool (including the editors `ctx_edit` / `ctx_patch`)
|
|
reachable through `ctx_call`. Pi's native `edit` / `write` builtins stay available
|
|
in every mode, so you can always edit files regardless of this setting.
|
|
|
|
To surface the **whole** registry (`ctx_edit`, `ctx_patch`, architecture/quality
|
|
tools, …) as first-class Pi tools:
|
|
|
|
```bash
|
|
export LEAN_CTX_PI_TOOL_PROFILE=power # or "standard" for a balanced 16-tool set
|
|
```
|
|
|
|
or set `"toolProfile": "power"` in `config.json`. Values: `lean` (default) ·
|
|
`standard` · `power` (`full`/`all` alias `power`). It maps to the engine's
|
|
`LEAN_CTX_TOOL_PROFILE`, so it mirrors `lean-ctx profile <name>`. `power` widens
|
|
the surface at some prompt-token cost. Run `/lean-ctx` to see the active profile.
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `LEAN_CTX_PI_MODE` | `additive` | `additive` or `replace` |
|
|
| `LEAN_CTX_PI_TOOL_PROFILE` | `lean` | Bridge tool surface: `lean`, `standard`, or `power` (all tools incl. `ctx_edit`/`ctx_patch`) |
|
|
| `LEAN_CTX_PI_ENABLE_MCP` | `0` | Set to `1` to enable MCP bridge |
|
|
| `LEAN_CTX_PI_MCP_TOOLS` | (all) | Comma-separated list of MCP tools to register |
|
|
| `LEAN_CTX_EMBEDDING_MODEL` | `minilm` | Embedding model: `minilm`, `jina-code`, `nomic` |
|
|
|
|
### Config file (`config.json`)
|
|
|
|
If you only use lean-ctx through Pi, you can keep every setting in one file
|
|
instead of juggling env vars and `~/.lean-ctx/config.toml`. Create:
|
|
|
|
```
|
|
~/.pi/agent/extensions/pi-lean-ctx/config.json
|
|
```
|
|
|
|
```json
|
|
{
|
|
"mode": "replace",
|
|
"enableMcp": true,
|
|
"toolProfile": "power",
|
|
"binary": "/opt/lean-ctx/bin/lean-ctx",
|
|
"env": {
|
|
"LEAN_CTX_COMPRESSION": "aggressive"
|
|
}
|
|
}
|
|
```
|
|
|
|
| Key | Equivalent to | Notes |
|
|
|-----|---------------|-------|
|
|
| `mode` | `LEAN_CTX_PI_MODE` | `additive` (default) or `replace` |
|
|
| `toolProfile` | `LEAN_CTX_PI_TOOL_PROFILE` | `lean` (default), `standard`, or `power` — see [Tool surface](#tool-surface-lean--standard--power) |
|
|
| `enableMcp` | `LEAN_CTX_PI_ENABLE_MCP` | Start the embedded MCP bridge |
|
|
| `binary` | `LEAN_CTX_BIN` | Absolute path to the `lean-ctx` binary |
|
|
| `env` | — | Extra env forwarded to every `lean-ctx` subprocess; use it to override `~/.lean-ctx/config.toml` engine settings (the engine honours `LEAN_CTX_*` vars) |
|
|
|
|
**Precedence (most explicit wins):** an explicit `LEAN_CTX_PI_*` / `LEAN_CTX_BIN`
|
|
environment variable overrides `config.json`, which overrides the built-in
|
|
default. This keeps a shared, file-only config working with no env vars while
|
|
still allowing ad-hoc env overrides on a single machine. Run `/lean-ctx` inside
|
|
Pi to see which config file (if any) was loaded.
|
|
|
|
### AGENTS.md
|
|
|
|
lean-ctx auto-generates an `AGENTS.md` file in your project root with Pi-optimized instructions:
|
|
|
|
```bash
|
|
lean-ctx init --agent pi
|
|
# Creates AGENTS.md with lean-ctx tool usage patterns
|
|
```
|
|
|
|
The `AGENTS.md` instructs Pi to prefer `ctx_*` tools over builtins for token efficiency.
|
|
|
|
## Recommended Workflow
|
|
|
|
### Basic (CLI-only)
|
|
|
|
Best for simple tasks — no MCP overhead:
|
|
|
|
```
|
|
You (in Pi): "Read the auth module and find security issues"
|
|
|
|
Pi uses:
|
|
ctx_read src/auth/mod.rs → compressed, ~60% smaller
|
|
ctx_grep "password" src/ → grouped results
|
|
ctx_shell "cargo clippy" → compressed output
|
|
```
|
|
|
|
### Advanced (MCP-enabled)
|
|
|
|
Best for complex tasks — full lean-ctx power:
|
|
|
|
```
|
|
You (in Pi): "Understand the architecture and find what's affected by changing the User model"
|
|
|
|
Pi uses:
|
|
ctx_overview → project architecture
|
|
ctx_repomap → most important symbols
|
|
ctx_callgraph action=risk symbol=User → impact analysis
|
|
ctx_semantic_search query="user model" → find related code
|
|
ctx_knowledge recall → previous findings about User
|
|
```
|
|
|
|
### Session Continuity
|
|
|
|
lean-ctx persists context across Pi sessions:
|
|
|
|
```
|
|
# Session 1: investigate a bug
|
|
Pi → ctx_knowledge remember --category=blocker --content="Race condition in auth middleware"
|
|
|
|
# Session 2 (next day): lean-ctx auto-restores context
|
|
Pi → ctx_knowledge recall → "Race condition in auth middleware" (from yesterday)
|
|
```
|
|
|
|
## Complementary Pi Extensions
|
|
|
|
Users have found these extensions work well alongside pi-lean-ctx:
|
|
|
|
| Extension | Purpose | Synergy with lean-ctx |
|
|
|-----------|---------|----------------------|
|
|
| `pi-git` | Git operations | lean-ctx compresses git output |
|
|
| `pi-search` | Web search | Combine with ctx_knowledge for persistence |
|
|
| `pi-test` | Test runner | lean-ctx compresses test output |
|
|
|
|
### Coexisting with AFT and magic-context
|
|
|
|
lean-ctx, [AFT](https://github.com/cortexkit/aft) and
|
|
[magic-context](https://github.com/cortexkit/magic-context) compose cleanly when
|
|
each owns a distinct concern: **AFT** symbol-aware file ops, **lean-ctx** context
|
|
compression + the session cache, **magic-context** long-horizon memory/compaction.
|
|
|
|
Keep lean-ctx in its default **additive** mode (don't set `LEAN_CTX_PI_MODE=replace`)
|
|
so it never contends for AFT's hoisted `read`/`write`/`edit`/`bash` slots. If two
|
|
extensions register the same tool name (e.g. magic-context's `ctx_expand`), the
|
|
extension that loads second would normally crash Pi — pi-lean-ctx instead **skips
|
|
the clashing tool with a warning** and keeps loading (#359). To control the split:
|
|
|
|
```bash
|
|
# Hand specific names to the other extension:
|
|
export LEAN_CTX_PI_DISABLE_TOOLS="ctx_memory,ctx_expand,ctx_search"
|
|
# …or prefix all bridge tools so nothing collides:
|
|
export LEAN_CTX_PI_TOOL_PREFIX="lc_" # ctx_expand → lc_ctx_expand
|
|
```
|
|
|
|
Run `/lean-ctx` inside Pi to see exactly which tools were registered, handed off,
|
|
or skipped. Full reference:
|
|
[pi-lean-ctx README → Coexisting with AFT and magic-context](https://github.com/yvgude/lean-ctx/blob/main/packages/pi-lean-ctx/README.md#coexisting-with-aft-and-magic-context).
|
|
|
|
## Troubleshooting
|
|
|
|
### lean-ctx binary not found
|
|
|
|
```bash
|
|
# Ensure lean-ctx is in PATH
|
|
which lean-ctx
|
|
|
|
# If not installed
|
|
curl -fsSL https://leanctx.com/install.sh | sh
|
|
```
|
|
|
|
### MCP tools not appearing
|
|
|
|
```bash
|
|
# Check if MCP is enabled
|
|
echo $LEAN_CTX_PI_ENABLE_MCP # Should be "1"
|
|
|
|
# Check MCP server health
|
|
lean-ctx doctor integrations
|
|
```
|
|
|
|
### High latency on first use
|
|
|
|
lean-ctx builds indexes on first run. Subsequent uses are cached:
|
|
|
|
```bash
|
|
# Pre-build index
|
|
lean-ctx index build
|
|
```
|
|
|
|
### Proxy configuration
|
|
|
|
If using lean-ctx's API proxy:
|
|
|
|
```bash
|
|
lean-ctx proxy enable
|
|
# Sets ANTHROPIC_BASE_URL, OPENAI_BASE_URL, GEMINI_API_BASE_URL
|
|
# All three providers are configured (not just Gemini)
|
|
```
|
|
|
|
## Performance
|
|
|
|
Typical token savings with pi-lean-ctx:
|
|
|
|
| Operation | Without lean-ctx | With lean-ctx | Savings |
|
|
|-----------|-----------------|---------------|---------|
|
|
| Read large file (1000 LOC) | ~4000 tokens | ~400 tokens | 90% |
|
|
| `git status` | ~200 tokens | ~50 tokens | 75% |
|
|
| `cargo test` output | ~2000 tokens | ~100 tokens | 95% |
|
|
| `grep` results (50 matches) | ~1500 tokens | ~300 tokens | 80% |
|
|
|
|
## Further Reading
|
|
|
|
- [pi-lean-ctx README](https://github.com/yvgude/lean-ctx/tree/main/packages/pi-lean-ctx)
|
|
- [Pi Coding Agent Docs](https://github.com/badlogic/pi-mono)
|
|
- [lean-ctx Documentation](https://leanctx.com/docs)
|