pi-quiet-tools
Pi extension that automatically compacts large tool outputs before they enter the model context window, saving tokens while preserving full output as recoverable local artifacts.
Package details
Install pi-quiet-tools from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-quiet-tools- Package
pi-quiet-tools- Version
0.2.0- Published
- May 8, 2026
- Downloads
- 75/mo · 30/wk
- Author
- brunoorsolon
- License
- MIT
- Types
- extension, prompt
- Size
- 18.8 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
],
"prompts": [
"./prompts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
Pi Quiet Tools
A Pi extension that automatically compacts large tool outputs before they enter the model's context window, saving tokens without losing information.
The Problem
When Pi's agent calls tools like bash, read, or subagents, the full output becomes part of the conversation context. A single find command or verbose log dump can add thousands of tokens that the model pays for on every subsequent turn — even if only a few lines matter.
Hiding output in the UI doesn't help: the model still sees (and pays for) the full text in its context window. Quiet Tools intercepts tool results before they reach the model, replacing large outputs with a head/tail preview and saving the full text to a local artifact file the agent can read on demand.
Install
From npm:
pi install npm:pi-quiet-tools
For local development:
pi install /path/to/pi-quiet-tools
Or load for a single session:
pi -e /path/to/pi-quiet-tools
How It Works
- Every tool result passes through the extension's
tool_resulthandler. - If the output is below the threshold, it passes through unchanged.
- If it exceeds the threshold (default: 12,000 chars or 240 lines):
- The full text is saved to a timestamped artifact file.
- The model receives a compact preview: the first 100 lines, the last 60 lines, and an omission marker in between.
- The preview includes the artifact path so the agent can
readthe full output if it needs a detail from the omitted middle.
- Error outputs get a larger preview budget (160 head + 120 tail lines) since diagnostic context matters more.
The extension also caps read tool calls to 120 lines by default (when no explicit limit is set), preventing accidental full-file reads from flooding context.
Commands
Control the extension during a Pi session:
| Command | Effect |
|---|---|
/quiet-tools status |
Show current state: enabled, thresholds, artifact directory |
/quiet-tools on |
Enable compaction |
/quiet-tools off |
Disable compaction |
/quiet-tools bypass-next |
Skip compaction for the next tool result only |
/quiet-tools last [n] |
List the last n artifact paths (default: 5) |
Prompt Template
The included /quiet prompt template encourages focused, low-noise workflows:
/quiet <task>
This guides the agent to skip narration, use targeted reads, and give concise final answers. The prompt is guidance only — the extension enforces compaction regardless of prompt.
Configuration
All settings are controlled via environment variables. Defaults work well for most projects.
Thresholds
| Variable | Default | Description |
|---|---|---|
QUIET_TOOLS_ENABLED |
true |
Master switch |
QUIET_TOOLS_MAX_CHARS |
12000 |
Compact if output exceeds this character count |
QUIET_TOOLS_MAX_LINES |
240 |
Compact if output exceeds this line count |
Preview Size
| Variable | Default | Description |
|---|---|---|
QUIET_TOOLS_HEAD_LINES |
100 |
Lines to keep from the start of output |
QUIET_TOOLS_TAIL_LINES |
60 |
Lines to keep from the end of output |
QUIET_TOOLS_ERROR_HEAD_LINES |
160 |
Head lines for error output |
QUIET_TOOLS_ERROR_TAIL_LINES |
120 |
Tail lines for error output |
Per-Tool Toggles
| Variable | Default | Description |
|---|---|---|
QUIET_TOOLS_COMPACT_READ |
true |
Compact read tool results |
QUIET_TOOLS_COMPACT_BASH |
true |
Compact bash tool results |
QUIET_TOOLS_COMPACT_SUBAGENT |
true |
Compact subagent results |
QUIET_TOOLS_READ_DEFAULT_LIMIT |
120 |
Default line limit injected into read calls that don't specify one (0 to disable) |
Artifact Storage
| Variable | Default | Description |
|---|---|---|
QUIET_TOOLS_ARTIFACT_DIR |
.pi/quiet-tools/outputs |
Directory for full output files |
QUIET_TOOLS_INDEX |
.pi/quiet-tools/index.jsonl |
JSONL index of all saved artifacts |
Artifacts
Full outputs are saved as timestamped text files under .pi/quiet-tools/outputs/. A JSONL index at .pi/quiet-tools/index.jsonl tracks every artifact with metadata (timestamp, tool name, path, line/char counts).
The agent can recover any compacted detail by reading the artifact path included in every compacted preview.
Security note: Artifacts contain the raw tool output. If a command prints secrets or credentials, those will be in the artifact files. Add the artifact directory to .gitignore:
.pi/quiet-tools/
Tuning Guide
If the agent misses details from compacted output:
- Raise
QUIET_TOOLS_HEAD_LINESandQUIET_TOOLS_TAIL_LINES - Raise
QUIET_TOOLS_MAX_CHARSorQUIET_TOOLS_MAX_LINES - Disable compaction for specific tools (e.g.,
QUIET_TOOLS_COMPACT_READ=false) - Use
/quiet-tools bypass-nextbefore a specific command
If output is still too noisy:
- Lower the thresholds
- Lower
QUIET_TOOLS_READ_DEFAULT_LIMIT - Enable subagent compaction if not already on
Design Notes
- Deterministic compaction. No AI summarization — the preview is always the literal first and last lines of output. This makes behavior predictable and debuggable.
- Fail-open. If artifact writing or compaction throws an error, the original output passes through unchanged. The extension notifies once and stays out of the way.
- Non-text content preserved. Image blocks, tool-use blocks, and other non-text content in tool results are never modified.
- Additive metadata. The extension adds a
details.quietToolsobject to tool results without replacing existing detail fields.
License
MIT — see LICENSE.