·
29 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Starport v1.1.0 is an OpenAI- and OpenRouter-compatible LLM
inference gateway backed by the Starmap provider and model catalog.
See the README and operator guide before deployment. Verify downloaded
archives with checksums.txt and GitHub artifact attestations.
Changelog
Features
- c159993: feat!: cut over to the single-page console (#177) (@jackspirou)
- 1e0852e: feat(api): expose catalog authors at /api/v1/authors (CP4) (#161) (@jackspirou)
- eac1414: feat(catalog): widen projections with authors, lineage, offerings, and provider policies (CP3) (#160) (@jackspirou)
- 400cc84: feat(console): CM6 keys page with CRUD, budgets, and BYOK (#151) (@jackspirou)
- 973b367: feat(console): CM7 usage page with charts (#152) (@jackspirou)
- 079fb98: feat(console): CM8 presets page with catalog-backed model picker (#153) (@jackspirou)
- 1365e6b: feat(console): CM9 settings page with save-and-test key flow (#154) (@jackspirou)
- cfe8bc4: feat(console): CP1 brand sweep — STARPORT wordmark, API Keys, TTFT, provider display names (#158) (@jackspirou)
- e67da9b: feat(console): KaTeX math and Mermaid diagrams in chat (#141) (@jackspirou)
- b7caed3: feat(console): add author pages (CP11) (#170) (@jackspirou)
- 3d65c35: feat(console): add chat comparison mode (CM12) (#163) (@jackspirou)
- 4e8fe0a: feat(console): add the global command palette (CP12) (#171) (@jackspirou)
- 550e203: feat(console): aligned id column, one id vocabulary, tint for bare marks (#274) (@jackspirou)
- 3fd6a38: feat(console): chat shell and composer with bottom-bar model picker (CM10) (#155) (@jackspirou)
- 48af849: feat(console): complete the model detail page (CP9) (#168) (@jackspirou)
- e56a589: feat(console): design review fixes across the shell, catalog, and chat (#272) (@jackspirou)
- ffc32cd: feat(console): give an operator a view of what an account stores (#235) (@jackspirou)
- e33db83: feat(console): make the models list traversable (CP10) (#169) (@jackspirou)
- 8924b97: feat(console): provider surface redesign — health rollup, credential sources, policy summary (#275) (@jackspirou)
- 9a6385b: feat(console): restore legacy chat UX details (#140) (@jackspirou)
- 421d9a1: feat(console): retool the composer for attachments (CP13) (#172) (@jackspirou)
- 4c94e7b: feat(console): revamp the providers page with identity cards (CP7) (#166) (@jackspirou)
- 07c16e7: feat(console): serve catalog identity marks with an offline fallback chain (CP5) (#162) (@jackspirou)
- 55df516: feat(console): show what a model serves and what a reranker costs (#269) (@jackspirou)
- 7e71726: feat(console): streaming message rendering with Streamdown (CM11) (#156) (@jackspirou)
- 7323e60: feat(files): FIL1, the blob seam (#227) (@jackspirou)
- b5624f4: feat(files): FIL2, the object store backend (#229) (@jackspirou)
- d4f70e8: feat(files): FIL3, the file record (#230) (@jackspirou)
- 6d1887e: feat(files): FIL4, the file routes and their scopes (#231) (@jackspirou)
- 1396097: feat(files): FIL5, retention and deletion (#232) (@jackspirou)
- 2c2f970: feat(gateway): per-request overhead timing seam + x-starport-overhead-ms header (CP14) (#173) (@jackspirou)
- c3d58d2: feat(inference): add the canonical rerank shape (#263) (@jackspirou)
- 7ba4183: feat(jobs): create the seam for work that outlives its request (#239) (@jackspirou)
- a3244b6: feat(jobs): persist a job under its tenant (#240) (@jackspirou)
- 614de91: feat(jobs): submit, poll, and cancel one provider job (#242) (@jackspirou)
- 49fb41c: feat(limits): bound the bytes one account keeps (#233) (@jackspirou)
- 3dd4e9d: feat(modalities): MOD13, one operation set over three guards (#221) (@jackspirou)
- c03ef78: feat(modalities): MOD14, the media types, routes, and scopes (#222) (@jackspirou)
- ea4d986: feat(modalities): MOD15, the console reads the media catalog (#223) (@jackspirou)
- 2ad094b: feat(modalities): MOD16, the media gate runs and the vocabulary has a home (#224) (@jackspirou)
- 4f9b924: feat(modalities): Phase B, non-text chat output end to end (#219) (@jackspirou)
- e9c7b10: feat(protocol): own every rerank wire name in two codecs (#265) (@jackspirou)
- c5579e3: feat(providers): serve the rerank operation at the connector seam (#264) (@jackspirou)
- 6c25827: feat(proxy): let a chat request name a stored file (#234) (@jackspirou)
- 78b40f9: feat(routing): refuse a rerank request to a model that serves other operations (#267) (@jackspirou)
- b72f627: feat(routing): serve the video generation operation (#241) (@jackspirou)
- 39e70e8: feat(server): serve reranking at two routes behind one scope (#266) (@jackspirou)
- c69d904: feat(videos): store a finished asset and serve it under a retention window (#244) (@jackspirou)
- 2080b4d: feat(videos): submit, poll, list, and cancel a video job over HTTP (#243) (@jackspirou)
- 1d3d438: feat: accept the local admin token as a console session grant (#210) (@jackspirou)
- 382f82a: feat: add PostgreSQL and MySQL connects to internal/sqlstore (CSH-B2) (#284) (@jackspirou)
- dd47ab6: feat: add console usage page with request log and real overview stats (#130) (@jackspirou)
- d68af6f: feat: add design tokens, self-hosted Geist, and the app shell (CM2) (#147) (@jackspirou)
- 41fd11a: feat: add internal/sqlstore relational seam with embedded SQLite (CSH-B1) (#283) (@jackspirou)
- 3c7ac77: feat: add per-key limits and budgets with 402 enforcement (#136) (@jackspirou)
- ab9fc23: feat: add the console jobs surface (AMJ8) (#246) (@jackspirou)
- d33adb1: feat: add the models catalog page (CM4) (#149) (@jackspirou)
- f934320: feat: add the overview page with live gateway stats (CM3) (#148) (@jackspirou)
- 0f3812a: feat: add the providers page (CM5) (#150) (@jackspirou)
- 6c033e8: feat: add the tenant seam and the shared limits vocabulary (AON1) (#187) (@jackspirou)
- 6956436: feat: add the usage concept repository (ORP1) (#127) (@jackspirou)
- 500dccb: feat: address a credential by its owner, not by a key (AON4) (#191) (@jackspirou)
- acd31a4: feat: address shared credentials by id on the admin routes (CSH-C2) (#286) (@jackspirou)
- 5eb0daa: feat: bill a rerank turn and bound its spend (#268) (@jackspirou)
- 4c147f1: feat: capture per-request usage records with Starmap-priced cost (#128) (@jackspirou)
- a91915e: feat: catalog freshness surface with generation diff and forced refresh (#131) (@jackspirou)
- 69c038d: feat: chat comparison mode (#138) (@jackspirou)
- e9b922e: feat: complete the provider detail page (CP8) (#167) (@jackspirou)
- 8918650: feat: console catalog freshness surface (#132) (@jackspirou)
- e9ff67b: feat: console key limits and budgets UI (#137) (@jackspirou)
- d19eca2: feat: console lists every shared credential with its access rule (CSH-C3) (#288) (@jackspirou)
- a08a4bb: feat: console presets page and chat routing preferences (ORP9) (#135) (@jackspirou)
- d11a621: feat: enforce the OpenRouter file-parser plugin (#250) (@jackspirou)
- 6e5b12c: feat: give a gateway API key an owning tenant (AON2) (#188) (@jackspirou)
- 4e3fde5: feat: give each credential idea one screen and one owner (#199) (@jackspirou)
- c187c5a: feat: give the machine a local admin token it can hand its operator (#195) (@jackspirou)
- abd1a9c: feat: govern accounts with limits the gateway enforces (#192) (@jackspirou)
- f4dbb3e: feat: let an operator change the authentication mode while the gateway runs (#194) (@jackspirou)
- d3fb6d8: feat: let an operator run the gateway without a key (#193) (@jackspirou)
- 44fdead: feat: make console session minting a registered set of grants (#209) (@jackspirou)
- 8b16f62: feat: meter recognized pages and refuse past the spend bound (#255) (@jackspirou)
- 512431f: feat: mint console sessions from named grants and give first contact a page (#213) (@jackspirou)
- b53dccf: feat: multimodal chat input and audio token prices (MOD0 to MOD8) (#218) (@jackspirou)
- 71cd24e: feat: name the three provider credential sources (AON3) (#190) (@jackspirou)
- 72d9ae1: feat: normalize streaming usage and show live tok/s in console (#142) (@jackspirou)
- 4d28df4: feat: preset CRUD API and @preset/ chat resolution (ORP7) (#133) (@jackspirou)
- d74e617: feat: price a terminal video job once and bound outstanding jobs (AMJ7) (#245) (@jackspirou)
- 062cb38: feat: provider preferences, price caps, and model variants (#134) (@jackspirou)
- b2535f2: feat: read a document's text layer in process (#251) (@jackspirou)
- b64c056: feat: read a scanned document before the chat model reads it (#253) (@jackspirou)
- b0f18a9: feat: read one document once for each account, engine, and generation (#254) (@jackspirou)
- fdb746f: feat: record which credential plane paid for a request (#200) (@jackspirou)
- 7e66d07: feat: refuse to plan a recognition route the gateway cannot bill (#252) (@jackspirou)
- 5dbd147: feat: register the identity grant, inert and proven (#211) (@jackspirou)
- b1b1b48: feat: replace chat UI with the Starport console (#125) (@jackspirou)
- 59e8b7d: feat: report which advertised offerings a request can reach (#204) (@jackspirou)
- 7f3c45f: feat: scaffold the modern console workspace and SPA embed (CM1) (#146) (@jackspirou)
- 0db427e: feat: serve catalog identity through the v0.7.0 Starmap pin (#165) (@jackspirou)
- 0158f63: feat: serve request activity, real metrics, and provider usage (ORP3) (#129) (@jackspirou)
- 35ff91f: feat: shared credential lists with per-credential access grants (CSH-C1) (#285) (@jackspirou)
- 79f69d3: feat: show what reading a document cost (#257) (@jackspirou)
- 515966f: feat: sign a browser in from the machine that runs the gateway (#198) (@jackspirou)
- d13a13a: feat: surface credential resolution evidence to operators (#175) (@jackspirou)
- 8a6fb90: feat: surface gateway overhead and TTFT to operators (#174) (@jackspirou)
- cc6485e: feat: surface web search capability and honor tool-call fields (#183) (@jackspirou)
Fixes
- 9467337: fix(console): one health word family — healthy, degraded, unavailable (#279) (@jackspirou)
- 7ee41a3: fix(console): serve the SPA shell for every client route on direct load (#278) (@jackspirou)
- fbea118: fix(console): unnest author card anchors and refresh dependencies (#273) (@jackspirou)
- a8b6dc2: fix(server): revalidate logo cache instead of pinning a day (#277) (@jackspirou)
- 97fec78: fix: chunk the catalog generation payload and split 401 from 403 (#179) (@jackspirou)
- d38dcff: fix: derive routing verdicts against the snapshot the reader sees (#207) (@jackspirou)
- f7dfb6b: fix: keep starport dev from writing to the configuration directory (#308) (@jackspirou)
- 9742250: fix: normalize streaming provider rejections and refuse empty cache entries (#176) (@jackspirou)
- 8f4dff4: fix: serve console assets via http.ServeContent and mark budget headers for gosec (@jackspirou)
- d316c13: fix: stop reporting the enforced plugins field as unkept (#256) (@jackspirou)
Build and CI
- b6b5826: build(deps): bump the github-actions group across 1 directory with 2 updates (#196) (@dependabot[bot])
- 20dd9b1: build(deps): bump the go-modules group across 1 directory with 11 updates (#206) (@dependabot[bot])
- 7358099: ci: register the auth and onboarding gate (#202) (@jackspirou)
- 4da62f6: ci: run the dependency direction gate in the release contract job (#182) (@jackspirou)
Other changes
- f3c29eb: Add WorkOS enterprise SSO beside gothic: one identity seam, two acquisition paths (#295) (@jackspirou)
- 45a1a12: Add account templates that stamp creation defaults (#291) (@jackspirou)
- e4e2f64: Add the console account policy panel (#290) (@jackspirou)
- 5299aba: Add the console account-template surface (#292) (@jackspirou)
- 59245d7: CSH-G2: console members and teams — the operator view over the people plane (#297) (@jackspirou)
- cbf2122: CSH-G3: rename the gateway-key identity words to API key words (#298) (@jackspirou)
- 49229f7: CSH-H1: verifier terminal at 23, wired into CI; campaign closed in docs (#299) (@jackspirou)
- 8b2a408: CSH-Z9: retire the merged credential-sharing plan (#300) (@jackspirou)
- 53f4d95: Fill the identity slot: gothic OAuth signs a person into the console (#294) (@jackspirou)
- ba523d6: Give the identity name to humans: apikey rename, identity models (#293) (@jackspirou)
- 51e5b5b: Indicate provider service incidents from the provider's own status page (#303) (@jackspirou)
- fb0c224: Map who may use which account: AccountGrant from identity to session to credential (#296) (@jackspirou)
- e864e69: Open external console links in a new tab with a new-tab glyph (#304) (@jackspirou)
- 5d8a8f4: Read every catalog-declared health API kind and separate the website link (#305) (@jackspirou)
- f1cd4a5: Rework README as a first-principles developer funnel (#307) (@jackspirou)
- c052484: Separate unreachable from unavailable in the failure taxonomy (#302) (@jackspirou)
- 6d1be9a: Serve curated logo bundle before catalog bytes (#276) (@jackspirou)
- 56a18e2: Serve each provider's incident log in the console, in two provenances (#306) (@jackspirou)
- 33afb7a: Stamp account creation time in the repository (#301) (@jackspirou)
- ccbd3e5: account: enforce operator BYOK policy and provider/model access (#289) (@jackspirou)
- 1c2f9d2: chore(deps): upgrade starmap to v0.7.1 for web search capability (#184) (@jackspirou)
- 16011ab: console: redesign the provider credential section as payer line + drawer (#281) (@jackspirou)
- e5585e3: deps: bump Starmap to v0.8.0 for correct offering operations (#205) (@jackspirou)
- f85c179: plan: CSH-A1 done (PR #281); CSH-A0 in_progress — author the campaign verifier red (#282) (@jackspirou)
- 7b224bb: plan: MOD17, close the model modalities plan (#225) (@jackspirou)
- b048308: plan: activate dependency direction hardening (#118) (@jackspirou)
- f513a56: plan: close MOD12 and start MOD13 (#220) (@jackspirou)
- 2818e74: plan: close OpenRouter parity with ORP14 cleanup (#144) (@jackspirou)
- dc3788d: plan: close RNK1 and start RNK2 (reranking) (#261) (@jackspirou)
- b3ed0df: plan: close RNK2 and start RNK3 (reranking) (#262) (@jackspirou)
- ca10f5e: plan: close dependency direction hardening (#124) (@jackspirou)
- 42e8b57: plan: close the async media jobs plan (AMJ10) (#248) (@jackspirou)
- 7023f0c: plan: close the auth and onboarding campaign (#203) (@jackspirou)
- f0b80de: plan: close the catalog, performance, and brand campaign (#180) (@jackspirou)
- cf17df8: plan: close the document parser plan (PLG10) (#259) (@jackspirou)
- 9a76fdc: plan: close the reranking plan (RNK11) (#271) (@jackspirou)
- fcf12d3: plan: close two audit rounds on the five modality plans (#217) (@jackspirou)
- a967ae3: plan: complete DDH0 and start DDH1 (#119) (@jackspirou)
- b277e59: plan: complete DDH1 and DDH2 (#120) (@jackspirou)
- b8ac8ea: plan: complete DDH3 and start DDH4 (#121) (@jackspirou)
- 851ac10: plan: complete DDH7 and start DDH8 (#123) (@jackspirou)
- fbc1063: plan: create OpenRouter parity plan (ORP0) (#126) (@jackspirou)
- cca2b3e: plan: create console modernization plan with DESIGN.md (CM0) (#145) (@jackspirou)
- c19054a: plan: harden Starport and Starmap dependency direction (#117) (@jackspirou)
- 1f596de: plan: open catalog-performance campaign (CP0 baseline) (#157) (@jackspirou)
- 88028b3: plan: open the auth and onboarding campaign (AON0) (#185) (@jackspirou)
- 4a5cd7b: plan: open the console session grants campaign (#208) (@jackspirou)
- 29a134c: plan: propose five modality and inference surface plans (#216) (@jackspirou)
- 382f8d2: plan: revise the auth and onboarding plan after full review (#186) (@jackspirou)
- 16b7809: plan: supersede console modernization into catalog-performance (#164) (@jackspirou)
- b00c47d: refactor!: rename tenant to account across the gateway (#280) (@jackspirou)
- e4c4351: refactor(catalog): extract projection seam into internal/catalog/view (CP2) (#159) (@jackspirou)
- 95903aa: test(files): FIL0, baseline the files API and write the gate red (#226) (@jackspirou)
Full changelog: v1.0.5...v1.1.0