Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/openagents-org/openagents/pigit clone --depth 1 https://github.com/openagents-org/openagentsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.05511 |
| Opus 5 | $0.00000 | $0.02756 |
| Sonnet 5 | $0.00000 | $0.01102 |
| Haiku 4.5 | $0.00000 | $0.00551 |
Grade A, and why
pi scanned grade A with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
REST API through its built-in `bash` tool and curl, exactly like the OpenCode Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
`child_process`, `crypto`, `fs`, `os`, `path`). A test asserts the package's How it starts
The opening of the file, as written. The whole thing — 448 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Pi
OpenAgents supports Pi, Earendil's coding agent for the terminal —
executable pi, distributed as the npm package
@earendil-works/pi-coding-agent.
- Internal agent id:
pi - User-facing name: Pi
- Adapter:
packages/agent-connector/src/adapters/pi.js - Stream parser:
packages/agent-connector/src/adapters/pi-stream.js - Registry source:
sdk/src/openagents/registry/pi.yaml(hand-synced intopackages/agent-connector/registry.json) - Verified against:
pi 0.83.0
Architecture: one long-lived RPC subprocess per channel
Pi is integrated the same way every other coding agent in this repo is — as a
CLI subprocess. Nothing in OpenAgents imports Pi's SDK, AgentSession, or
any @earendil-works/* module, and no Pi source is vendored in. A test
statically asserts this (test/pi.test.js → "never imports a Pi SDK or
internal Pi module").
The adapter reuses the persistent-process model already proven by
claude.js, structure for structure:
| Concern | claude.js |
pi.js |
|---|---|---|
| per-channel process record | _persistentProcs[channel] |
same |
| process handle the daemon/stop path reads | _channelProcesses[channel] |
same |
| release an idle channel | _resetIdleTimer (1 h) |
same (1 h) |
| kill a wedged process | _startWatchdog / _stopWatchdog (15 s × 20) |
same |
| cross-platform tree kill | _stopProcess (SIGTERM→SIGKILL / taskkill /F /T) |
same |
| stop only one channel | _onControlAction('stop', {channel}) |
same |
| dedup the stop notice | _stopNoticeSent |
same |
| teardown on daemon shutdown | stop() → _stopAllProcesses |
same |
What differs is the wire protocol. Claude Code takes one user message per
stdin line and answers with a result event; Pi speaks a request/response RPC:
pi --mode rpc --session-dir <oa dir> --session-id <uuid> --no-approve \
[--provider …] [--model …] [--thinking …] --append-system-prompt <text> --name <agent/channel>
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 448 lines · 0 tokens per session scan A 10bf7393f5b3
pi is an agent published in the GitHub repository openagents-org/openagents (4,020 stars, last pushed 2d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 5,511 tokens. A static security scan graded it A with 2 findings (makes network calls, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
worker
General-purpose subagent with full capabilities, isolated context.
deep-review-claude
Independent deep technical review using Anthropic Claude model.
external.openai
You are an External Integration agent - a specialized assistant for executing actions across connected external services. Your purpose is to interact with any connected Composio toolkit (900+ platform-wide) and return structured results to the main agent.
explorer.openai
You are an Explorer agent - a specialized workspace investigation assistant. Your purpose is to efficiently gather context from the workspace and return structured findings to the main agent.
external.anthropic
You are an External Integration agent - a specialized assistant for executing actions across connected external services. Your purpose is to interact with any connected Composio toolkit (900+ platform-wide) and return structured results to the main agent.
explorer.anthropic
You are an Explorer agent - a specialized workspace investigation assistant. Your purpose is to efficiently gather context from the workspace and return structured findings to the main agent.