# 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.

## Install

Use the current npm package through Bun:

```bash
bun install -g @oh-my-pi/pi-coding-agent
```

## Provider shape

For a deployed instance, add:

```yaml
providers:
  codex-pooler:
    baseUrl: https://codex-pooler.example.com/v1
    api: openai-responses
    apiKey: CODEX_POOLER_API_KEY
    authHeader: true
    models:
      - id: gpt-5.5
        name: GPT-5.5 via Codex Pooler
        reasoning: true
        thinking:
          mode: effort
          efforts:
            - xhigh
          defaultLevel: xhigh
          effortMap:
            xhigh: xhigh
        input:
          - text
          - image
        compat:
          streamIdleTimeoutMs: 300000
        contextWindow: 272000
        maxTokens: 128000
```

For local setup, change `baseUrl` to `http://localhost:4000/v1`.

`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.

The `thinking` block exposes the `xhigh` effort level for the Codex Pooler model and makes the role defaults below resolve cleanly.

OMP accepts `contextWindow` and `maxTokens` in `models.yml`; it does not accept `contextTokens`. Its Codex `gpt-5.5` catalog uses a 272k context window and 128k output budget. `compaction.reserveTokens: 128000` makes OMP compact before a prompt plus a long completion can exceed that 272k window.

`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`.

## Default model roles

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

```yaml
startup:
  setupWizard: false
defaultThinkingLevel: xhigh
enabledModels:
  - codex-pooler/gpt-5.5
modelProviderOrder:
  - codex-pooler
modelRoles:
  default: codex-pooler/gpt-5.5:xhigh
  smol: codex-pooler/gpt-5.5:xhigh
  slow: codex-pooler/gpt-5.5:xhigh
  plan: codex-pooler/gpt-5.5:xhigh
  task: codex-pooler/gpt-5.5:xhigh
  vision: codex-pooler/gpt-5.5:xhigh
compaction:
  reserveTokens: 128000
```

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

## Connection Check

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

```bash
export CODEX_POOLER_API_KEY=<pool-api-key>
omp --model codex-pooler/gpt-5.5: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.

## Pi relationship

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`.

## MCP boundary

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`.