Audit of the operator docs against live reality (2026-11-04): - app-inventory.md: all 19 Cloudron apps with id, fqdn and registry image pin. Corrects the portal path (code/member-portal, not co-op/member-portal) and the panel path (local/coop.inference.admin-panel, not code/admin-panel). - maintenance/backups.md: the two backup systems; the deliberate per-user restic cache split and the --group-by "" retention fix, with why. - maintenance/woodpecker-ci.md: CI server + agent, image build/pin, manual-only trigger, git-lfs requirement, and its current not-yet-green state (agent's job-collection long-poll gets HTTP 500 from the server). - provider-pricing/: index + GreenPT, Tinfoil (local EHBP proxy architecture) and the Metis /v1/systemone decision-model route; regolo.md updated to record the gateway prices were applied. - agent-fleet.md: steward, infrastructure-bot and socialbot (Unix users, gateway units, teams); member-bot tier 2 planned but not yet provisioned. - README: file list; operator-token-runbook: correct the membership_sweep cadence (3x daily, not nightly); migration doc: post-migration addendum (16->19 apps, DNS split resolved, old box still on with apps stopped).
45 lines
2.0 KiB
Markdown
45 lines
2.0 KiB
Markdown
# Provider pricing
|
||
|
||
What our model providers charge, and where the authoritative numbers live.
|
||
|
||
## The authority
|
||
|
||
**The gateway's own per-model costs are the authority** — they are what the
|
||
response headers (`x-litellm-response-cost`) and member billing both read. They
|
||
live in the LiteLLM config on the gateway's persistent volume
|
||
(`/app/data/config.yaml`), under each model's `model_info`, as **USD per token**
|
||
(the comments in that file quote per-1M rates). Read them live with
|
||
`GET https://gateway.inference.coop/model/info` (master key), or read the config
|
||
straight from the running app.
|
||
|
||
**The member-facing mirror** is `co-op/docs/models.md`. When a rate changes,
|
||
update **both** the gateway config and `models.md` — the config is authoritative,
|
||
`models.md` is the mirror.
|
||
|
||
A missing cost field makes a paid feature free; a stale one bills wrong; a missing
|
||
`cache_read_input_token_cost` bills cache hits at the full input rate. All three
|
||
have happened here.
|
||
|
||
## The pages
|
||
|
||
| File | Provider | Notes |
|
||
|---|---|---|
|
||
| `greenpt.md` | GreenPT | renewable energy; the default model lives here |
|
||
| `tinfoil.md` | Tinfoil | TEE; the local-proxy architecture lives here |
|
||
| `regolo.md` | Regolo | renewable + ZDR; includes our measured usage |
|
||
| `decision-model.md` | GreenPT "Metis" via `/v1/systemone` | a pass-through **route**, not a chat model |
|
||
|
||
## The routing rule
|
||
|
||
Members reach models through one gateway, which fronts all providers. The
|
||
per-request cost the gateway records is the number to trust; do not re-derive a
|
||
price from a provider's public page (they drift, and some are login-walled).
|
||
|
||
## A note on currencies
|
||
|
||
Regolo quotes in **EUR**; our gateway figures convert at **EUR × 1.16 → USD**
|
||
(the rate our numbers use — `regolo.md` documents the derivation). GreenPT's own
|
||
listed rates appear in **EUR with the same numerals the gateway carries** —
|
||
whether an EUR→USD conversion is intended there is **unverified**; confirm it
|
||
against the GreenPT invoice before treating the figures as final.
|