Repository navigation
feat(models): add Model Access page to gate what the endpoint serves - #3015
Open
MuhammadUsamaMX wants to merge 1 commit into
Open
MuhammadUsamaMX wants to merge 1 commit into
MuhammadUsamaMX wants to merge 1 commit into
Conversation
This was referenced Aug 3, 2026
MuhammadUsamaMX
force-pushed
the
feat/model-access-control
branch
4 times, most recently
from
August 10, 2026 14:40
68904ec to
279ef02
Compare
Blocking a model was only reachable from a single provider's page, and there was no one place to see what the final endpoint actually exposes. Add a Model Access page listing every model of every connected provider split into allowed and blocked, with search, filters, per-model toggles and per-provider bulk actions. Combos are listed too and are now gated by the same disabled list, so blocking one really removes it from /v1/models. Add a Playground that fans one prompt out to up to 4 models in parallel and shows the answers side by side, and a Fetch Models button on the provider page that loads the provider's own catalogue via an active account (falling back to the built-in one when a provider exposes no live list).
MuhammadUsamaMX
force-pushed
the
feat/model-access-control
branch
from
August 17, 2026 19:57
279ef02 to
fe75f5c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Per-model blocking already exists, but it is only reachable from one provider's page at a time, and there is no single place to see what the final endpoint actually serves. With a number of providers connected,
/v1/modelsends up listing models that were never deliberately curated, and auditing that list means walking every provider page in turn.What this adds
A
Model Accesspage (/dashboard/model-access, sidebar entry under Providers) that lists every model of every connected provider, split into allowed and blocked:All/Allowed/BlockedfiltersA
Fetch Modelsbutton on the provider page, for the providers that did not already have one. OpenAI-compatible providers keep their existing Import from /models; this gives the others the same ability to list what the provider itself reports, using an active account's credentials (/api/providers/<id>/models) rather than only the static registry. Allowed/blocked count badges were added to the same header.Approach
This deliberately does not introduce a second gating mechanism.
/api/models/accessreads and writes the same per-provider disabled list (disableModels/enableModels) that/v1/modelsalready filters on, so a model blocked here genuinely disappears from the endpoint and stays blocked across restarts.New endpoint:
GET /api/models/access→{ providers: [{ alias, connections, total, allowed, blocked, models[] }], totals }POST /api/models/access→{ providerAlias, ids[], action: "block" | "allow" }Only providers with a connected account are listed, since a model from a provider with no account can never be served anyway.
Testing
Built and run against a live instance with several providers connected (86 models across 5 providers). Round-trip verified against the real endpoint:
GET /v1/modelsdocker buildis clean on top ofmaster.Related
/v1/modelsexposing all upstream models rather than only curated ones. This does not change that default behaviour, but it does give a practical way to review and block the models that get surfaced.