0.1.0feature
First release
Multigrid goes live. One account and one balance across every model in the catalogue, billed at what each route costs us with no spread of ours on top, with a spending ceiling the gateway enforces before it calls anyone. This is the whole of it — there is no earlier history, and inventing one seemed a poor way to start.
- OpenAI-compatible API: chat completions with streaming, embeddings, images, video, reranking. Point an existing client at our base URL and change the key
- Automatic failover between the providers serving a model, with per-request provider preferences and retries that are not billed twice
- Hard spending caps — one on the account, one per API key — checked before any upstream call, so a leaked key cannot drain the balance
- Bring your own provider keys: sealed with AES-256-GCM, never returned to a client, and no percentage taken on that traffic
- Exact-match response cache, keyed per account so no two customers ever share an entry
- Guardrails that refuse a request on PII, blocked terms or a token ceiling before it is priced
- Request-level activity and analytics built from your own traffic: tokens, latency, cost and the routing trace, never message content
- Batch jobs, prompt presets with version history, projects, team roles and invites
- Webhooks signed with HMAC-SHA256 over a timestamped payload, and OTLP trace export to your own collector
- OAuth so a third-party app can spend a user's own credit instead of yours
- Credit top-ups through Stripe against an append-only ledger; `npm run db:audit` reconciles every balance from it