relace-compact-pi
Relace Compact routing for OMP and pi-agent
Package details
Install relace-compact-pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:relace-compact-pi- Package
relace-compact-pi- Version
0.1.2- Published
- Jul 16, 2026
- Downloads
- 150/mo · 150/wk
- Author
- thejorgg
- License
- MIT
- Types
- extension
- Size
- 40.1 KB
- Dependencies
- 0 dependencies · 3 peers
Pi manifest JSON
{
"video": "https://raw.githubusercontent.com/thejorgg/relace-compact-pi/main/assets/demo.mp4",
"extensions": [
"./src/extension.ts"
],
"settings": {
"relace.enabled": {
"type": "boolean",
"default": true,
"description": "Route every pi compaction through Relace."
},
"relace.apiKey": {
"type": "string",
"default": "",
"secret": true,
"env": "RELACE_API_KEY",
"description": "Relace API key."
},
"relace.endpoint": {
"type": "string",
"default": "https://compact.endpoint.relace.run/v1/code/compact",
"description": "Relace Compact API endpoint."
},
"relace.targetPercent": {
"type": "number",
"default": 33,
"min": 1,
"max": 100,
"description": "Target percentage of the active model context after compaction."
},
"relace.idleTimeoutSeconds": {
"type": "number",
"default": 300,
"min": 0,
"description": "Global idle compaction delay in seconds; zero disables idle compaction."
},
"relace.idleModelOverrides": {
"type": "string",
"default": "{}",
"description": "JSON object mapping model globs to idle seconds, for example {\"openai/gpt*\":1800}."
},
"relace.pi.thresholdType": {
"type": "enum",
"values": [
"percentage",
"tokens"
],
"default": "percentage",
"description": "Interpret the pi auto-compaction threshold as context percentage or token count."
},
"relace.pi.threshold": {
"type": "number",
"default": 66,
"min": 1,
"description": "Pi auto-compaction threshold value."
}
}
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
Relace Compact for OMP and pi-agent ⚡️
Route conversation compaction through Relace Compact instead of spending another model request on summarization.
- 🚀 OMP: integrates with OMP's native
context-fullcompaction path. - 🧭 pi-agent: routes every native compact through Relace and adds percentage/token thresholds plus idle timers.
- 🔐 Safe configuration: API keys can come from
RELACE_API_KEYand project-local settings are only used when trusted. - 🛠️ One command: inspect, enable, disable, reset, or manually compact with
/compact-relace.
How it works
- The host prepares the messages that are eligible for compaction.
- This extension converts them to Relace's message format and sends them to the configured endpoint.
- Relace returns a shorter message history.
- The extension returns that history to the host and persists enough metadata for resumed sessions.
- New turns are appended after the Relace replacement history.
The extension never implements a second summarizer. It is a transport adapter from OMP/pi-agent to Relace.
Install
For now, git clone + local install:
pi install npm:relace-compact-pi
# or
omp plugin install npm:relace-compact-pi
For local development:
git clone https://github.com/thejorgg/relace-compact-pi relace-compact-pi
cd relace-compact-pi
omp plugin install .
# or
pi plugin install .
Configure target and thresholds through the command
You can just run:
/compact-relace target [value] /compact-relace threshold [value]
inside pi or omp
Configure OMP (context-full only) 🧩
OMP's automatic handoff, snapcompact, shake, and off strategies are not replaced. Select Context-full in OMP's compaction settings.
1. Set the Compaction Strategy and Idle Settings
Edit your global configuration (~/.omp/agent/config.yml) or your project-local configuration (.omp/config.yml) under the compaction: block. The plugin automatically respects your native OMP idle settings (idleEnabled and idleTimeoutSeconds):
compaction:
strategy: context-full
idleEnabled: true
idleTimeoutSeconds: 1800
[!IMPORTANT] Compaction Strategy must be
context-fullfor Relace routing to be active in OMP. The command/compact-relace statuswill show a notice when OMP is not set tocontext-full.
For the idle model overrides, use the following:
omp plugin config set relace-compact-pi relace.idleModelOverrides "{\"openai/gpt*\":1800,\"openai-codex/gpt*\":1800,\"anthropic/claude*\":300}"
Alternatively, use the JSON:
Linux / macOS:
$HOME/.omp/plugins/omp-plugins.lock.json
Windows (⚠️ unconfirmed):
%appdata%/.omp/plugins/omp-plugins.lock.json
{
"plugins": {
"relace-compact-pi": {
"version": "0.1.0",
"enabledFeatures": null,
"enabled": true
}
},
"settings": {
"relace-compact-pi": {
"relace.idleModelOverrides": "{\"openai/gpt*\":1800,\"openai-codex/gpt*\":1800,\"anthropic/claude*\":300}"
}
}
}
2. Configure the Relace API Key
The only plugin-specific setting you need to configure is your API key.
Option A: Environment variable (Recommended)
export RELACE_API_KEY="YOUR_RELACE_API_KEY"
Option B: Using the OMP CLI
omp plugin config relace-compact-pi set relace.apiKey "YOUR_RELACE_API_KEY"
Configure pi-agent 🤖
Pi-agent reads global settings from $HOME/.pi/agent/settings.json (or $PI_CODING_AGENT_DIR/settings.json) and trusted project settings from .pi/settings.json.
{
"relace": {
"enabled": true,
"apiKey": "",
"endpoint": "https://compact.endpoint.relace.run/v1/code/compact",
"targetPercent": 33,
"idleTimeoutSeconds": 300,
"idleModelOverrides": "{\"openai/gpt*\":1800,\"anthropic/claude*\":300}",
"pi": {
"thresholdType": "percentage",
"threshold": 66
}
}
}
Settings
| Setting | Default | Description |
|---|---|---|
relace.enabled |
true |
Enable or disable Relace routing. |
relace.apiKey |
empty | Relace API key. RELACE_API_KEY takes precedence. |
relace.endpoint |
production endpoint | Relace Compact endpoint. |
relace.targetPercent |
33 |
Target percentage of the active model context. |
relace.idleTimeoutSeconds |
300 |
Global idle compaction delay; 0 disables it. |
relace.idleModelOverrides |
{} |
JSON string mapping model globs to idle seconds. |
relace.pi.thresholdType |
percentage |
Pi threshold interpretation: percentage or tokens. |
relace.pi.threshold |
66 |
Pi compaction threshold. |
Model override examples:
"relace.idleModelOverrides": "{\"openai/gpt*\":1800,\"openai-codex/gpt*\":1800,\"anthropic/claude*\":300}"
A pattern containing / matches provider/model; a pattern without / matches the model ID. * is the wildcard.
Commands 💬
/compact-relace
/compact-relace compact
/compact-relace status
/compact-relace enable
/compact-relace disable
/compact-relace reset
/compact-relace target [value]
/compact-relace threshold [value]
- Bare
/compact-relaceprints usage. compactstarts a Relace compaction.statusreports host, route, target, context, idle timer, and session count.disablepersistsrelace.enabled: false.enablepersistsrelace.enabled: true.resetclears the current session's replacement history and counter.target [value]views the current target percentage, or sets it (e.g.25%or25).threshold [value]views the current threshold, or sets it (e.g.66%,5000, or5000 tokens).
API key and privacy 🔒
export RELACE_API_KEY="your-relace-key"
The extension sends only the messages selected for compaction, the target token count, and the active model identifier to the configured Relace endpoint. Do not configure an untrusted endpoint with a credential you do not intend to share.
Development
bun install
bun run check
bun run lint
bun run fmt