Fast Apply, WarpGrep, Compaction & Repo Context via Morph
10,500+ tok/s code editing, agentic search, and 25,000+ tok/s compression for pi.
Sign up at morphllm.com/dashboard and configure it:
Option A: Environment variable (recommended for quick setup)
export MORPH_API_KEY="sk-..."Add this to your shell profile (~/.zshrc, ~/.bashrc, etc.) so it persists.
Option B: auth.json (recommended for persistent config)
Add to ~/.pi/agent/auth.json:
{
"morph": { "type": "api_key", "key": "sk-..." }
}The environment variable takes priority over auth.json.
pi install https://github.com/morphllm/pi-morph-pluginOr install locally in your project:
pi install -l https://github.com/morphllm/pi-morph-pluginpiYou should see morph_edit, warpgrep_codebase_search, and warpgrep_github_search in the available tools. Compaction runs automatically when context exceeds the threshold.
10,500+ tok/s code merging. The LLM writes partial snippets with lazy markers (// ... existing code ...), Morph merges them into the full file.
Best for large files (300+ lines) and multiple scattered changes. For small exact replacements, use Pi's built-in edit tool.
Fast agentic codebase search. Runs multi-turn ripgrep + file reads to find relevant code contexts. Sub-6s per query. Best for exploratory queries ("how does X work?", "where is Y handled?").
Search public GitHub repositories without cloning. Pass an owner/repo or GitHub URL and a search query. Returns relevant file contexts from Morph's indexed public repo search.
Context compression via the Morph Compact API. When Pi's built-in compaction triggers (context exceeds threshold), this extension intercepts it and uses the Morph Compact API instead of default LLM summarization. Compresses in ~250ms at 25,000+ tok/s.
All configuration is via environment variables.
| Variable | Default | Description |
|---|---|---|
MORPH_API_KEY |
required | Your Morph API key |
MORPH_COMPACT_RATIO |
0.3 |
Target compression ratio (0.05-1.0, lower = more aggressive) |
MORPH_COMPACT_PRESERVE_RECENT |
1 |
Number of recent messages to keep uncompacted |
MORPH_COMPACT |
true |
Set false to disable compaction |
MORPH_EDIT |
true |
Set false to disable Fast Apply |
MORPH_WARPGREP |
true |
Set false to disable WarpGrep |
MORPH_WARPGREP_GITHUB |
true |
Set false to disable public repo search |
Pi's compaction threshold is configured in ~/.pi/agent/settings.json or .pi/settings.json:
{
"compaction": {
"enabled": true,
"reserveTokens": 16384,
"keepRecentTokens": 20000
}
}npm installTo test locally:
pi -e ./extensions/index.tsOr symlink into your pi extensions directory:
ln -s $(pwd)/extensions/index.ts ~/.pi/agent/extensions/morph-plugin.ts