Skip to content

feat: add Atlas Cloud as a new LLM provider - #13302

Open
binyangzhu000-sudo wants to merge 1 commit into
continuedev:mainfrom
binyangzhu000-sudo:feat/atlascloud-provider
Open

binyangzhu000-sudo wants to merge 1 commit into
continuedev:mainfrom
binyangzhu000-sudo:feat/atlascloud-provider

Conversation

@binyangzhu000-sudo

Copy link
Copy Markdown

Description

Adds Atlas Cloud as a first-class LLM provider — an OpenAI-compatible gateway to 300+ models (OpenAI, Anthropic, DeepSeek, Qwen, GLM, Kimi, MiniMax, ...) behind one endpoint, using vendor/model ids like openai/gpt-4.1-mini.

Mirrors the merged MiniMax PR (#11367)'s exact 13-file shape:

  • core/llm/llms/AtlasCloud.ts — the model class, a plain OpenAI subclass (no request-shape overrides: unlike MiniMax, I don't have evidence Atlas needs temperature clamping or response_format stripping, so I left that out rather than guessing)
  • core/llm/llms/index.ts — import + registration
  • core/llm/autodetect.tsPROVIDER_HANDLES_TEMPLATING + PARALLEL_PROVIDERS
  • docs/customize/model-providers/more/atlascloud.mdx + an overview.mdx row
  • gui/src/pages/AddNewModel/configs/{models,providers}.ts — 9 curated models + the provider entry
  • packages/config-types/src/index.ts — the zod provider enum
  • packages/llm-info/src/{index.ts,providers/atlascloud.ts} — the same 9 models for autodetect/capability lookup
  • packages/openai-adapters/src/{apis/AtlasCloud.ts,index.ts,types.ts} — the GUI-side adapter + config schema + discriminated-union entry

Models

Context/max-output numbers are from the live GET /v1/models catalog (2026-09-20), not guessed.

Model Description
openai/gpt-4.1-mini (default) OpenAI GPT-4.1 Mini. 1M context.
openai/gpt-5.4-mini OpenAI GPT-5.4 Mini. 400K context.
anthropic/claude-sonnet-4.6 Anthropic Claude Sonnet 4.6. 200K context.
deepseek-ai/deepseek-v3.2 DeepSeek V3.2. 164K context.
Qwen/Qwen3-235B-A22B-Instruct-2507 Qwen3 235B Instruct. 131K context.
qwen/qwen3.5-35b-a3b Qwen3.5 35B A3B. 262K context.
zai-org/GLM-4.6 Z.AI GLM-4.6. 203K context.
moonshotai/kimi-k2.5 Moonshot Kimi K2.5. 262K context.
minimaxai/minimax-m2.5 MiniMax M2.5. 197K context.

One thing worth flagging: Atlas ids contain / (they're already vendor/model), which is JS regex literal syntax, not a metacharacter — the regex fields in packages/llm-info/src/providers/atlascloud.ts escape it (/^openai\/gpt-4\.1-mini$/i) and are fully anchored so they can't accidentally match another provider's bare model name.

Why

Atlas Cloud lets Continue users reach the same 300+-model catalog other aggregators (OpenRouter, MiniMax) expose, through one API key, with a low-dead-air default (gpt-4.1-mini answered a tool-calling test in the fewest tokens of the models I checked, with no reasoning-token overhead).

Testing

No test files added — the MiniMax precedent (271 lines, 13 files) added none either; this repo's convention for a thin OpenAI-compatible provider is tsc + the existing generic test suites, not a per-provider test file.

  • packages/openai-adapters: tsc clean, existing vitest suite — 145 passed
  • packages/llm-info, packages/config-types: tsc clean
  • core: tsc -p ./ --noEmit clean across the whole package (had to build the sibling packages/* first — core's node_modules/@continuedev/* are live symlinks to packages/*, and none had a dist/ yet, which is an environment-bootstrap step unrelated to this change); existing vitest suite under llm/465 passed
  • gui: tsc -p . --noEmit clean across the whole package
  • prettier --check on every touched file: clean
  • Live, against the real gateway: constructed the actual AtlasCloud class and called streamChat() with a real ATLASCLOUD_API_KEY — got a real streamed response ("continue atlascloud ok"). This was a throwaway vitest file, removed before committing, matching MiniMax's no-test precedent.

Screen recording or screenshot

Not included — this is a config/backend provider addition with no new UI surface (same as the MiniMax PR above, which didn't include one either). Happy to add one of the Add Model flow if that'd help review.

Checklist

  • I've read the contributing guide
  • The relevant docs, if any, have been updated or created
  • The relevant tests, if any, have been updated or created — n/a per the MiniMax precedent above; verified via tsc + existing suites + live gateway instead

Disclosure: I work at Atlas Cloud.

Atlas Cloud is an OpenAI-compatible gateway to 300+ models (OpenAI,
Anthropic, DeepSeek, Qwen, GLM, Kimi, MiniMax, ...) behind one endpoint,
using vendor/model ids like openai/gpt-4.1-mini. Mirrors the merged
MiniMax PR's exact 13-file shape:

- core/llm/llms/AtlasCloud.ts - the model class, a plain OpenAI subclass
  (no request-shape overrides: unlike MiniMax, there's no found evidence
  Atlas needs temperature clamping or response_format stripping)
- core/llm/llms/index.ts - import + registration
- core/llm/autodetect.ts - PROVIDER_HANDLES_TEMPLATING + PARALLEL_PROVIDERS
- docs/customize/model-providers/more/atlascloud.mdx + overview.mdx row
- gui/src/pages/AddNewModel/configs/{models,providers}.ts - 9 curated
  models (context/max-output from the live GET /v1/models catalog, not
  guessed) + the provider entry
- packages/config-types/src/index.ts - the zod provider enum
- packages/llm-info/src/{index.ts,providers/atlascloud.ts} - the same 9
  models for autodetect/capability lookup. Regexes are anchored
  (^...$) and slash-escaped (Atlas ids contain "/", which is JS regex
  literal syntax, not a metacharacter)
- packages/openai-adapters/src/{apis/AtlasCloud.ts,index.ts,types.ts} -
  the GUI-side adapter + config schema + discriminated union entry

No test files added - the MiniMax precedent (271 lines, 13 files) added
none either; this repo's convention for a thin OpenAI-compatible
provider is verification via tsc + the existing generic test suites,
not a per-provider test file.

Verified:
- packages/openai-adapters: tsc clean, existing vitest suite 145 passed
  (no per-adapter test file for MiniMax either, so none added here)
- packages/llm-info, packages/config-types: tsc clean
- core: tsc -p ./ --noEmit clean across the whole package (had to build
  the sibling packages/{llm-info,config-types,openai-adapters,fetch,
  config-yaml,terminal-security} first - core's node_modules/@continuedev/*
  are live symlinks to packages/*, and none had a dist/ yet); existing
  vitest suite under llm/ - 465 passed
- gui: tsc -p . --noEmit clean across the whole package
- prettier --check on every touched file: clean
- Live, against the real gateway: constructed the actual AtlasCloud
  class and called streamChat() with a real ATLASCLOUD_API_KEY - got a
  real streamed response ("continue atlascloud ok"). This was a
  throwaway vitest file removed before this commit, not left in the
  diff, matching MiniMax's no-test precedent.
@binyangzhu000-sudo
binyangzhu000-sudo requested a review from a team as a code owner September 20, 2026 13:22
@binyangzhu000-sudo
binyangzhu000-sudo requested review from sestinj and removed request for a team September 20, 2026 13:22
@github-actions

Copy link
Copy Markdown
Contributor


Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment same as the below format.


I have read the CLA Document and I hereby sign the CLA


You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant