Repository navigation
[Provider] Finish remaining OpenAI-compatible provider batch: Chutes, Featherless, Novita #572
Description
Area
Provider registry / model discovery / catalog / CLI / Dashboard / documentation
Goal
Finish the remaining providers from the accepted OpenAI-compatible provider-promotion batch.
The original umbrella contained twelve providers. The shared discovery/security contract and nine provider presets have already landed on dev.
This issue now tracks only the three remaining candidates:
chutesfeatherlessnovita
Keep this umbrella open until each remaining candidate is either merged or explicitly deferred with the reason recorded.
Delivered work
Shared discovery/security contract
#652 landed the common provider-discovery contract, including:
- registry-owned discovery destination/query policy;
- bounded response bytes and accepted row counts;
- declarative eligibility filtering;
- redirect refusal;
- outbound destination-policy enforcement;
- fixed-preset host protection;
- same-named custom-provider destination preservation;
- fixture-based regression coverage rather than live-provider CI dependencies.
Provider presets already delivered
The following original candidates are now first-class providers on dev:
baseten— feat(providers): add Baseten Model APIs preset #653deepinfra— feat(providers): add DeepInfra preset #747hyperbolic— feat(providers): add Hyperbolic preset #751sambanova— feat(providers): add SambaNova and Nebius presets #870nebius— feat(providers): add SambaNova and Nebius presets #870digitalocean— feat(providers): add DigitalOcean and Scaleway presets #872scaleway— feat(providers): add DigitalOcean and Scaleway presets #872nscale— feat(providers): add Nscale and Vultr presets #937vultr— feat(providers): add Nscale and Vultr presets #937
These providers are complete for this umbrella and should not be reimplemented here.
Remaining work
Chutes
Tracked by draft PR #1315.
Expected preset:
id: chutes
base URL: https://llm.chutes.ai/v1
adapter: openai-chat
auth: Bearer API key
The implementation must retain the established safety properties:
- registry-owned fixed destination;
- existing same-named custom destinations must not be silently retargeted;
- bounded public-model discovery;
- admit only models with provider evidence for the required chat/tool capability;
- provider-native model IDs preserved;
- no false claim that the public model catalog validates the supplied API key;
- fixture-only tests;
- explicit security review for the credential/destination contract.
Do not broaden this preset to arbitrary user-hosted Chutes endpoints or unrelated Chutes APIs.
Featherless
Tracked by draft PR #1317.
Expected preset:
id: featherless
base URL: https://api.featherless.ai/v1
adapter: openai-chat
auth: Bearer API key
The major catalog constraint remains important: Featherless exposes a very large model catalog.
Discovery must therefore remain explicitly bounded and fail closed rather than downloading or admitting the complete catalog.
The current implementation direction should preserve:
- bounded response size and row count;
- first-page / bounded discovery behavior;
- current-plan eligibility;
- chat-model eligibility;
- tool-use eligibility;
- exclusion of gated/ineligible rows;
- conservative capability metadata;
- authenticated key-validation boundary where supported;
- same-named custom-provider destination preservation;
- fixture-only tests;
- explicit maintainer security review.
Novita AI
Tracked by draft PR #1318.
Expected preset:
id: novita
base URL: https://api.novita.ai/openai/v1
adapter: openai-chat
auth: Bearer API key
Earlier review blocked canonical promotion on operating-entity/provider evidence rather than on the wire protocol itself.
The current follow-up contains updated evidence and should be judged on that record rather than the older blocker.
The implementation should preserve:
- fixed registry-owned destination;
- same-named custom-provider destination preservation;
- bounded model discovery;
- admission only for rows positively identified as compatible chat models;
- provider-native slash-containing model IDs;
- conservative capability claims;
- public model-list success must not be treated as proof that an API key is valid;
- fixture-only tests;
- explicit maintainer/security review of the canonical-provider evidence.
Common acceptance contract
Each remaining provider must:
- be an explicit canonical registry allowlist entry;
- use the documented fixed OpenAI-compatible endpoint;
- preserve an existing same-named custom provider's destination;
- bound discovery response bytes before unbounded parsing/caching;
- bound accepted raw model rows;
- exclude models that cannot serve the supported chat/tool path;
- preserve provider-native model IDs, including embedded
/; - avoid claiming unsupported reasoning, parallel-tool, multimodal, or structured-output capabilities;
- expose the preset consistently through CLI, Dashboard/provider workspace, and documentation;
- use fixture-based deterministic tests rather than live provider endpoints in CI;
- avoid logging or exposing API-key material;
- receive required security review for new credential destinations;
- merge into
dev, or be explicitly deferred with the reason recorded here.
Active PRs
- feat(providers): add Chutes preset #1315 — Chutes
- feat(providers): add Featherless preset #1317 — Featherless
- feat(providers): add Novita AI preset #1318 — Novita AI
All three intentionally relate to this umbrella rather than auto-closing it individually.
Close condition
Close this issue as completed when all three remaining providers have either:
- landed on
dev; or - been explicitly declined/deferred with a documented reason and no remaining implementation is expected under this umbrella.
Do not reopen completed providers from the original batch here. Future providers with materially different authentication, transport, or discovery contracts should use separate issues.
Activity
github-actions commentedon Jul 27, 2026
Automated translation bookkeeping — detected language: English.
Ingwannu commentedon Jul 28, 2026
Thanks for the unusually thorough proposal and endpoint verification. The direction is useful, but this should remain an umbrella issue rather than become one review-sized change containing all twelve providers.
Please proceed in phases against
dev:The safety requirements in the report are acceptance criteria, especially preventing an existing custom provider/key from being silently retargeted and preventing oversized mixed catalogs from entering the Codex catalog. A provider should not claim streaming, tools, structured output, or multimodal support beyond what its selected upstream models and official documentation actually establish.
I am assigning this to you. You do not need to implement every provider in one PR; reference this umbrella issue from each phased PR and target
dev.lidge-jun commentedon Jul 29, 2026
Phase 1 landed: #652 merged as
48f2e8362.That is the shared discovery contract you were asked to land first — registry-owned endpoint/query policy, declarative eligibility filters, bounded response bytes and row count,
redirect: "error"so credentials cannot follow a redirect, destination-policy checks before fetch, OAuth host pinning for fixed presets, and same-named custom-provider collision preservation.Verified on the merged
devtip rather than from the PR branch:bun x tsc --noEmitclean, and 151 tests pass across the discovery-contract, provider-registry-parity, and codex-catalog suites.Keeping this umbrella open for the remaining provider batches. Next up is #653 (Baseten pilot), which no longer has the contract as a blocker. Its
windows-latestjob is currently failing on theTeststep — I confirmed that is a genuine failure rather than a cancelled run, and I have dispatched a rerun now that the prerequisite is ondev. Worth noting for the follow-on batches: the same PR's focused suites pass locally here (38 pass, typecheck clean), so if the Windows failure persists it is more likely a runner-level problem than a defect in the preset itself — the earlier #610 investigation hitEEXIST: epoll_ctlfrom the Bun test runner on Linux CI, and I could not find a matching upstream Bun issue to pin it to.Thanks for structuring this as phases. Landing the contract before the twelve presets is what made #652 reviewable as one security-boundary change instead of twelve.
docs(devlog): move three inferred PR-issue links out of the literal l…
docs(devlog): plan the #572 provider-preset stack landing
docs(devlog): record the #572 provider-preset stack outcome
olddonkey commentedon Aug 8, 2026
Progress update (2026-08-08):
After #1315, the original list has two candidates left:
featherless— needs a bounded, chat/tool-capable discovery query for its very large catalog.novita— the API shape was previously verified, but canonical-preset operating-entity evidence is still the blocker.All batch PRs use “Relates to #572”; none closes this umbrella issue. I will keep #572 open until the remaining candidates are either implemented or explicitly deferred with the reason recorded here.
olddonkey commentedon Aug 8, 2026
Progress update (2026-08-08):
8f4201f5and are resolved: the test-only private-network opt-in was removed, canonical-host path near-miss coverage was added, and sparse tool-model metadata fallback is now pinned.That leaves
novitaas the only candidate from the original list not implemented or under review. Its API/discovery shape remains viable, but canonical-preset operating-entity evidence is still the blocker; I am not promoting it until that evidence is authoritative enough to name who operates the API and under what developer terms.Both open PRs use “Relates to #572”; neither will close this umbrella issue.
olddonkey commentedon Aug 8, 2026
Follow-up to the earlier 2026-08-08 progress note:
A fresh evidence check found that Novita's official Terms were materially revised on 2026-08-05, after the #747 evidence decision. They now expressly cover AI inference APIs, third-party Model Providers, customer Input/Output processing, and Delaware law. The official USPTO TSDR record connects the NOVITA AI mark to Hivemind Labs, Inc. (with the abandoned-application status disclosed), and Hugging Face independently lists Novita as a chat/VLM Inference Providers partner.
On that updated record, #1318 is now open and ready for review. The PR asks maintainers/security to confirm the operator and routing evidence explicitly rather than assuming it. Its implementation also corrects the old draft design: the live model list is public, so key validation is
unknown; catalog admission requires bothmodel_type: chatandchat/completions; discovery is bounded to 512 KiB / 256 raw rows.Current remaining review queue for this umbrella:
Every provider in the original list is now either merged or represented by one of these open review-ready PRs. All three use “Relates to #572”; none closes this umbrella. Please keep #572 open until the outstanding PRs are merged or explicitly declined.
Wibias commentedon Aug 8, 2026
Tracking policy
This issue is the umbrella for the explicitly listed OpenAI-compatible provider batch.
Provider-specific PRs/issues that implement one of the providers listed above should reference this issue as their parent/umbrella.
Do not fold providers with materially different authentication or transport contracts into this issue.
[-][Provider] Promote a verified batch of OpenAI-compatible inference providers[/-][+][Provider] Finish remaining OpenAI-compatible provider batch: Chutes, Featherless, Novita[/+]docs(devlog): move three inferred PR-issue links out of the literal l…
docs(devlog): plan the lidge-jun#572 provider-preset stack landing
docs(devlog): record the lidge-jun#572 provider-preset stack outcome