Model Discovery
Crewship can enumerate the models each LLM provider can serve so you don’t have to guess a model identifier (and only find out it’s wrong when an agent 404s on its first run). Discovery is live when possible, curated when not:- If the workspace has an active API key for the provider, Crewship asks the provider’s own models API and returns exactly what your key can use.
- Otherwise it returns a curated fallback — a hand-maintained list of the provider’s current generally-available models.
source field
("live" or "curated").
HTTP API
provider is required and case-insensitive. Supported values:
ANTHROPIC, OPENAI, GOOGLE, OLLAMA.
Response:
| Provider | Live source | Curated fallback |
|---|---|---|
| ANTHROPIC | GET /v1/models | Yes |
| OPENAI | GET /v1/models | Yes |
| (none yet) | Yes | |
| OLLAMA | GET /api/tags | No |
OLLAMA has no curated fallback. Its model set is whatever the local Ollama
daemon has pulled, so there is no sensible static list. If the daemon can’t be
reached, the endpoint returns 502 Bad Gateway rather than an empty list, so
“daemon unreachable” is never silently mistaken for “no models installed”.
provider returns 400 Bad Request. CURSOR and
FACTORY route through CLI adapters and have no model-discovery surface.
CLI
Every API endpoint has a matching CLI command. Usecrewship model list:
--format json / --format yaml emit the full payload, including the source
field, for programmatic use.
Model validation on agent update
Because Crewship knows each provider’s model set, updating an agent now validatesllm_model instead of silently accepting any string. A
PATCH /api/v1/agents/{id} that sets llm_model to a value the provider can’t
serve returns 400 Bad Request:
llm_provider in the same request if
present, otherwise the agent’s currently stored provider. Validation is
skipped (the model passes through) only when the model set can’t be
determined — for example an OLLAMA daemon that isn’t reachable — so Crewship
never rejects a model it can’t prove invalid.