feat: add Atlas Cloud provider - #3962
Conversation
Signed-off-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com>
|
👋 Some commits in this PR are not signed and verified by GitHub. Please sign your commits with a GPG or SSH key registered in your GitHub account, then force-push. Commits that are not verified: See GitHub's guide on signing commits for setup instructions. I've added |
Sayt-0
left a comment
There was a problem hiding this comment.
Adding Atlas Cloud as a built-in alias follows the established pattern and the Go changes are complete and well tested. Three integration points are missing and the default model needs verification before merge.
| # | Finding | File | Blocking |
|---|---|---|---|
| 1 | New docs page absent from the sidebar | docs/data/nav.yml |
yes |
| 2 | Built-in alias table not updated | docs/concepts/models/index.md |
yes |
| 3 | Provider list in schema description not updated | agent-schema.json |
no |
| 4 | Default model qwen/qwen3.8-max unverifiable |
pkg/config/auto.go (see inline) |
yes |
| 5 | Front matter weight breaks alphabetical convention | docs/providers/atlascloud/index.md (see inline) |
no |
Ready-to-paste fixes for the files outside the diff:
1. docs/data/nav.yml, between the Anthropic and AWS Bedrock entries:
- title: Atlas Cloud
url: /providers/atlascloud/2. docs/concepts/models/index.md, built-in alias table, after the OpenRouter row (matches the placement used in docs/providers/overview/index.md; adjust the description column if needed):
| Atlas Cloud | `atlascloud` | Qwen and other open models | `ATLASCLOUD_API_KEY` |3. agent-schema.json, provider description, add atlascloud after openrouter in the alias enumeration:
... any built-in alias (requesty, openrouter, atlascloud, azure, xai, ...)
Process notes:
- The
status/needs-signed-commitslabel is set; the commit must be signed before merge. - The branch is 11 commits behind
main. A rebase also picks up 95f3d1a, which fixes the pre-existingTestParseExamplesgopher failures inpkg/config, unrelated to this PR but noisy in local runs.
| title: "Atlas Cloud" | ||
| description: "Use Atlas Cloud models with Docker Agent." | ||
| keywords: docker agent, ai agents, model providers, llm, atlas cloud | ||
| weight: 235 |
There was a problem hiding this comment.
Provider pages use alphabetical-by-title weights in increments of 10 (Anthropic 20, AWS Bedrock 30, Baseten 40, ...). "Atlas Cloud" sorts between Anthropic and AWS Bedrock, so 235 places the page between OpenRouter and OVHcloud in weight-ordered listings.
| weight: 235 | |
| weight: 25 |
| "dmr": "ai/qwen3:latest", | ||
| "mistral": "mistral-small-latest", | ||
| "openrouter": "meta-llama/llama-3.3-70b-instruct", | ||
| "atlascloud": "qwen/qwen3.8-max", |
There was a problem hiding this comment.
Can the existence of qwen/qwen3.8-max in the Atlas Cloud catalog be confirmed (catalog link or output of the live smoke test mentioned in the PR description)? Two concerns:
- This ID is the auto-selection default: if it is wrong, every user with only
ATLASCLOUD_API_KEYset gets a broken first run. - Neither an
atlascloudprovider nor anyqwen3.8-maxentry exists inpkg/modelsdev/snapshot.json, so capability lookup falls back to text-only with a warning. A "-max" model is also unusual for an open-model host (the-maxline is API-only, not open weights), which is worth double-checking against theopenModelHostProvidersclassification.
If the ID changes, the two examples in docs/providers/atlascloud/index.md (atlascloud/qwen/qwen3.8-max and model: qwen/qwen3.8-max) and the assertions in pkg/config/auto_test.go and pkg/model/provider/openai_alias_providers_test.go must be updated in sync.
|
Hello @binyangzhu000-sudo looks good now but one more thing before approve : your commits must be signed. Don't hesitate to ping me when it's done ! |
|
👋 This PR has merge conflicts with the base branch. Please rebase or merge the latest base branch and resolve them. I've moved it to draft and added |
Two conflicts, both where upstream refreshed default models next to the Atlas Cloud entry: took upstream's meta-llama/llama-4-maverick and deepseek-ai/DeepSeek-V4-Pro in DefaultModels and its assertions, and kept qwen/qwen3.8-max for atlascloud. That id is still current — it is the newest qwen max in the Atlas catalogue returned by /api/v1/models. The merge also brought in TestDefaultModelsExistInModelsDev (docker#4133), which requires every DefaultModels entry to resolve in the models.dev catalog. Atlas Cloud is not listed there — its model ids come from its own endpoint — so it is registered in modelsDevAbsentProviders, the escape hatch that test documents for exactly this case, rather than weakening the test.
|
@aheritier Conflicts cleared — merged current Both conflicts were in the same place, where you refreshed default models next to the Atlas Cloud entry. I took your values for the two you changed and kept ours: "openrouter": "meta-llama/llama-4-maverick", // yours
"atlascloud": "qwen/qwen3.8-max",
"baseten": "deepseek-ai/DeepSeek-V4-Pro", // yourswith the matching assertions in The merge also brought in Verification on the merged branch:
@Sayt-0 — on the signing requirement: that's the one thing I can't do from here, since it needs the author's own signing key. I've flagged it to the account owner and it will be handled separately; I didn't want the rebase to keep blocking in the meantime. Note the merge commit above is also unsigned, so it will need to be included when the branch is re-signed and force-pushed. |
Summary
ATLASCLOUD_API_KEYfor automatic model selection and credential forwardingTesting
go test ./pkg/model/provider(focused alias and end-to-end provider tests)go test ./pkg/config ./pkg/runtime ./pkg/creator ./pkg/environment(focused provider/config tests)go test ./pkg/config ./pkg/model/provider ./pkg/model/provider/openaigo build ./...go run ./lint .golangci-lint v2.12.2 rungo mod tidy --diffCI=true ./scripts/build.shHTTP 200)GET https://api.atlascloud.ai/v1/modelson 2026-08-17:HTTP 200, 136 models, and the defaultqwen/qwen3.8-maxis presentA full
go test ./...run passed all emitted packages exceptpkg/teamloader's DMR examples, which require a local Docker Model Runner at127.0.0.1:12434; it was not running in this environment.