Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ Press `enter` and `code` launches oh-my-pi with that setup, as a one-shot
overlay — your omp config is never modified.

It's made for people who run oh-my-pi with **both Anthropic and OpenAI**:
the whole point is deciding, per task, how to blend the two pools and which
quota to spend. With a single provider you can still launch, but the dials
lose most of their meaning.
the whole point is deciding, per task, how to blend the pools and which
quota to spend. A DeepSeek API key adds a third, pay-as-you-go pool — its
own `ds` lanes, a live balance readout in Usage, and a relief tail at the
end of the heavyweight fallback chains for when the metered windows are
drained. With a single provider you can still launch, but the dials lose
most of their meaning.

## Usage

Expand Down Expand Up @@ -62,20 +65,27 @@ are not orphaned onto init while still holding their memory.

## Features

- **Dials, not config files** — provider lane, model tier, thinking depth,
advisor level, plus the spark/fable toggles; every combination maps to a
pre-computed routing.
- **Dials, not config files** — a provider **lead** dial with a led/only
blend child (scales past two pools without overflowing), notched sliders
for model tier and thinking depth, advisor level, plus the spark/fable
toggles; every combination maps to a pre-computed routing. With a DeepSeek
pool, a **relief** dial decides whether drained metered chains may spill
into the pay-as-you-go pool.
- **Live preview** — see which model leads every role, and its fallback
chain, before anything runs.
- **One-shot overlays** — each launch is an ephemeral `--config`; your omp
configuration is never written.
- **Prompt → profile** — `ctrl+o`, describe the task, a small local model
rates its difficulty and sets the dials (optional, needs
[ollama](https://ollama.com); the prompt is forwarded into the session).
Suggestions are quota-aware: a lane whose lead pool is maxed falls to a
sibling with headroom, and a low DeepSeek balance stops proposals from
spending it.
- **Usage at a glance** — quota bars and reset countdowns per provider,
before you spend the scarce bucket.
- **Account presets** — choose broker accounts and save reusable selections (`v`).
- **Cost & speed meters** — every dial change reprices the session.
- **Cost & speed meters** — every dial change reprices the session; DeepSeek
rungs are priced by the clock during its off-peak discount window.
- **Guided first run** — no catalog? `code` builds one from your omp,
interactively; `code generate` scripts the same thing.
- **Argument passthrough** — `code <anything omp understands>` just works.
Expand Down
4 changes: 2 additions & 2 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ Each entry under `models:`:
| Field | Meaning |
|---|---|
| `id` | the model id omp routes to |
| `pool` | `O` (OpenAI/Codex) or `A` (Anthropic) |
| `pool` | `O` (OpenAI/Codex), `A` (Anthropic), or `D` (DeepSeek). `O` and `A` must fill tiers 1..3; `D` is optional — one verified model is enough, missing tiers borrow the nearest rung |
| `tier` | `1` cheap · `2` regular · `3` smart — the per-pool fallback ladder. `0` (a fast idle-bucket model the `spark` toggle drains) and `4` (a scarce elite the `fable` toggle leads with) are optional |
| `bucket` | the quota window this model draws from (`claude-main`, `claude-fable`, `codex-main`, `codex-spark`). The TUI prefers it over guessing from the model family |
| `bucket` | the quota window this model draws from (`claude-main`, `claude-fable`, `codex-main`, `codex-spark`, `deepseek-main`). The TUI prefers it over guessing from the model family |
| `cost_in` / `cost_out` | dollars per 1M tokens; drives the cost meter |
| `speed` / `ttft` | output tok/s and seconds to first token; drives the speed meter. Measured by `init`'s probe — a single timed request each, so treat them as one sample rather than a stable benchmark |
| `context` | context window, in tokens |
Expand Down
Loading
Loading