Skip to content

OMP

Oh My Pi (OMP) should use Codex Pooler through a custom provider in ~/.omp/agent/models.yml. Point that provider at the narrow OpenAI-compatible /v1 surface, keep the Pool API key in the environment, and choose openai-responses so OMP sends agent turns through the Responses route.

Use the current npm package through Bun:

Terminal window
bun install -g @oh-my-pi/pi-coding-agent

For a deployed instance, add:

providers:
codex-pooler:
baseUrl: https://codex-pooler.example.com/v1
api: openai-responses
apiKey: CODEX_POOLER_API_KEY
authHeader: true
remoteCompaction:
enabled: true
api: openai-codex-responses
endpoint: https://codex-pooler.example.com/backend-api/codex/responses/compact
v2StreamingEnabled: true
v2Endpoint: https://codex-pooler.example.com/backend-api/codex/responses
models:
- id: gpt-5.6-terra
name: GPT-5.6 Terra via Codex Pooler
reasoning: true
input:
- text
- image
compat:
streamIdleTimeoutMs: 300000
contextWindow: 258400
maxTokens: 128000
- id: gpt-5.6-luna
name: GPT-5.6 Luna via Codex Pooler
reasoning: true
input:
- text
- image
compat:
streamIdleTimeoutMs: 300000
contextWindow: 258400
maxTokens: 128000
- id: gpt-5.6-sol
name: GPT-5.6 Sol via Codex Pooler
reasoning: true
input:
- text
- image
compat:
streamIdleTimeoutMs: 300000
contextWindow: 258400
maxTokens: 128000

For local setup, change baseUrl to http://localhost:4000/v1, remoteCompaction.endpoint to http://localhost:4000/backend-api/codex/responses/compact, and remoteCompaction.v2Endpoint to http://localhost:4000/backend-api/codex/responses.

apiKey: CODEX_POOLER_API_KEY makes OMP resolve that environment variable at runtime. authHeader: true makes OMP send the Pool API key as Authorization: Bearer .... Define only model ids your assigned Pool can serve.

Keep remoteCompaction under the codex-pooler provider so /compact remote can use Codex Pooler’s backend compact route while normal OMP model traffic stays on the narrow OpenAI-compatible /v1 Responses route. Do not use compaction.remoteEndpoint for this path: OMP reserves that setting for generic summary services that accept {systemPrompt, prompt} JSON, not provider-native Responses compact payloads. In this setup, omp config get compaction.remoteEndpoint should remain (not set); remote capability comes from the provider-level remoteCompaction block in models.yml.

remoteCompaction.v2StreamingEnabled: true lets OMP use the Codex-style streaming compaction path. OMP sends a normal backend Responses request with a terminal compaction_trigger to remoteCompaction.v2Endpoint; Codex Pooler bridges that request to the backend compact route and returns Responses SSE. The V2 flag is not a global compaction setting: keep it inside remoteCompaction.

Current OMP derives an effort thinking surface, including xhigh, for custom openai-responses models that set reasoning: true. Add an explicit thinking block only when you want to override the inferred effort list, wire mapping, or per-model default level.

OMP accepts contextWindow and maxTokens in models.yml; it does not accept contextTokens. The examples keep the GPT-5.6 tiered models on a 258.4k context window and 128k output budget: gpt-5.6-luna handles lightweight roles, gpt-5.6-terra handles daily agent work, and gpt-5.6-sol is reserved for slow, planning, and design escalation. compaction.thresholdPercent: 95 starts automatic compaction at 245480 tokens. reserveTokens: 128000 remains aligned with the configured output budget; the percentage field independently defines the trigger. When available, /v1/models.context_length is the authoritative effective value for its one-field contextWindow.

For long tool-heavy OMP sessions, keep mid-turn compaction enabled and persist handoff material to disk. Those settings reduce context-overflow risk, but they cannot repair an OMP client bug that skips its own mid-run compaction check. If an OMP plan appears to restart work after a very large turn, upgrade OMP when a newer release is available and restart or resume the session before treating it as a Codex Pooler routing issue.

compat.streamIdleTimeoutMs: 300000 keeps long OpenAI Responses reasoning turns from being aborted by OMP’s semantic-progress idle watchdog while Codex Pooler and the upstream account are still working. Existing OMP sessions need to be restarted or resumed after this config change. As an environment-only override, set PI_OPENAI_STREAM_IDLE_TIMEOUT_MS=300000 before launching omp.

If you want plain omp, --smol, --slow, --plan, task, vision, advisor, commit, designer, and lightweight background paths to start on Codex Pooler, add the defaults to ~/.omp/agent/config.yml:

startup:
setupWizard: false
defaultThinkingLevel: xhigh
enabledModels:
- codex-pooler/gpt-5.6-luna
- codex-pooler/gpt-5.6-terra
- codex-pooler/gpt-5.6-sol
modelProviderOrder:
- codex-pooler
modelRoles:
default: codex-pooler/gpt-5.6-terra:xhigh
smol: codex-pooler/gpt-5.6-luna:low
tiny: codex-pooler/gpt-5.6-luna:minimal
slow: codex-pooler/gpt-5.6-sol:xhigh
plan: codex-pooler/gpt-5.6-sol:xhigh
task: codex-pooler/gpt-5.6-terra:high
vision: codex-pooler/gpt-5.6-terra:high
advisor: codex-pooler/gpt-5.6-terra:medium
commit: codex-pooler/gpt-5.6-luna:minimal
designer: codex-pooler/gpt-5.6-sol:high
compaction:
thresholdPercent: 95
reserveTokens: 128000
remoteEnabled: true
remoteStreamingV2Enabled: true
midTurnEnabled: true
handoffSaveToDisk: true

startup.setupWizard: false keeps OMP from opening the initial setup flow after the provider and roles are already configured.

Run a one-shot prompt from the repository you want OMP to inspect:

Terminal window
export CODEX_POOLER_API_KEY=<pool-api-key>
omp --model codex-pooler/gpt-5.6-terra:xhigh \
--no-session \
--tools bash \
-p 'Reply with exactly: omp ok'

--no-session keeps the check ephemeral. For normal interactive use, omit that flag if you want OMP to reuse session state.

OMP is a Pi fork, but it is not configured from Pi’s files. Pi uses the pi binary and ~/.pi/agent/models.json; OMP uses the omp binary, ~/.omp/agent/models.yml, and modelRoles in ~/.omp/agent/config.yml.

OMP model requests use Codex Pooler’s narrow OpenAI-compatible /v1 support for selected SDK routes. Codex Pooler doesn’t provide full OpenAI API parity.

OMP ships MCP-capable tooling, but Codex Pooler model use does not require MCP. If you need operator metadata from /mcp, authenticate that endpoint with an operator-owned MCP token, not the Pool API key used for /v1.