v0.3.0
0.3.0 - 2026-07-22
Bug Fixes
- openapi: Add ApiKeyAuth security scheme to schema definition in #248 by @Sourav-Tripathy (
ca5608c) - Fixing the render deploy url in #257 by @ojusave (
d7fd902) - sandbox: Give exec POST its own timeout above the execution budget in #279 by @njbrake (
d7ed152) - cli: Honor --log-level names and reject unsupported --workers in #284 by @njbrake (
36893fc) - metrics: Label requests by route template, not raw path in #274 by @njbrake (
a147e42) - config: Honor explicit OTARI_MODE instead of deriving from token alone in #276 by @njbrake (
2314b23) - batches: Enforce user resolution, budget, rate limiting, and batch ownership in #273 by @njbrake (
3f2c23e) - usage: Bill vision side-call before top-up and track usage report tasks in #277 by @njbrake (
81b0677) - api: Unify error handling and hybrid streaming fallback across completion routes in #281 by @njbrake (
ff6acb1) - deps: Bump any-llm to 1.21.0 to meter streaming /v1/messages usage in #292 by @njbrake (
01335b2) - Return 400 for unresolvable model selectors in #254 by @AloysJehwin (
b07a37c) - config: Reject invalid OTARI_SECRET_KEY at startup in #325 by @njbrake (
e2a8cbb) - observability: Don't count locked-in tool-loop failures as abandoned in #326 by @njbrake (
48e3e1d) - auth: Accept a raw token on the Otari-Key header, not just Bearer in #323 by @njbrake (
794eeef) - models: Bound provider discovery, cache failures, single-flight in #342 by @njbrake (
7c5c79c) - providers: Make API key optional when the provider env var is set in #344 by @njbrake (
f7b96c5) - Preserve Codex Responses metadata for OpenAI in #364 by @njbrake (
7915544) - dashboard: Limit automatic provider health checks in #363 by @njbrake (
e114665) - Require any-llm 1.22.1 in #369 by @njbrake (
3711f4c) - dashboard: Streamline first-run navigation in #368 by @njbrake (
f421a93)
Features
- Enforce "PERF" ruff rules by @MooseTheRebel (
6547fe8) - Enforce ruff PERF rules across codebase in #245 by @MooseTheRebel (
dd8b71d) - models: Config-level model aliases that map to real selectors in #229 by @njbrake (
ed1a531) - Add API key rotation endpoint in #285 by @njbrake (
2756f08) - config: Surface hidden otari_env settings on GatewayConfig and fix config docs in #280 by @njbrake (
34f7a20) - Otel tool spans telemetry in #289 by @Sourav-Tripathy (
74b0d58) - ui: Add a standalone admin dashboard for models, pricing, and settings in #227 by @njbrake (
fc02390) - Add agent skills and scoped review instructions in #296 by @njbrake (
0c3542b) - ui: Manage providers, pricing, and aliases at runtime from the dashboard in #297 by @njbrake (
7d09276) - auth: Accept x-api-key header so Anthropic-native clients work (fixes #253) in #315 by @AloysJehwin (
4b4bd96) - dashboard: API key management and per-key model access control in #318 by @njbrake (
f49d70f) - observability: Count upstream attempts abandoned before first chunk in #324 by @njbrake (
b65e669) - dashboard: Budget and user management with two-layer model access in #322 by @njbrake (
eac679e) - Remove gateway/GATEWAY_ and pre-rename legacy aliases in #314 by @njbrake (
cb89cd2) - dashboard: Activity / request log viewer with per-request latency in #330 by @njbrake (
631a006) - batches: Add a batches table for idempotent accounting, spend folding, and strict ownership in #340 by @njbrake (
de23b87) - dashboard: Connection toast, resizable columns, and form polish in #343 by @njbrake (
e2ff7c8) - dashboard: Provider health monitor on the Providers page in #347 by @njbrake (
769c713) - dashboard: Usage & analytics page with aggregation endpoints (#303) in #345 by @njbrake (
2c95f65) - dashboard: Expand Settings with a full config viewer, wider settable set, and search in #346 by @njbrake (
d6d8ccf) - Add ability to edit alias target in dashboard in #348 by @njbrake (
58ed119) - dashboard: Built-in tools & guardrails configuration (#306) in #350 by @njbrake (
35991e2) - dashboard: Link provider name to filtered models page in #352 by @njbrake (
632b68a) - dashboard: Overview / home page (#302) in #354 by @njbrake (
150b2b1) - Price cached input tokens in standalone cost calculation in #356 by @njbrake (
1a8196e) - Add dashboard key lifecycle controls in #360 by @njbrake (
3f31c9c)
Other
Performance
New Contributors
- @Shaurya2k06 made their first contribution in #334
- @AloysJehwin made their first contribution in #315
- @Sourav-Tripathy made their first contribution in #289
- @ojusave made their first contribution in #257
- @MooseTheRebel made their first contribution in #245
Full Changelog: v0.2.0...v0.3.0