Skip to content

feat: add first-class AtmoRouter provider template - #1887

Open
bayuh85 wants to merge 1 commit into
Nano-Collective:mainfrom
bayuh85:feat/atmorouter-provider
Open

bayuh85 wants to merge 1 commit into
Nano-Collective:mainfrom
bayuh85:feat/atmorouter-provider

Conversation

@bayuh85

@bayuh85 bayuh85 commented Oct 26, 2026

Copy link
Copy Markdown

Description

Adds a first-class AtmoRouter provider template to the /settings providers wizard, following the same shape as the Cheaper Inference (#1364), API Route (#1548) and FutureInfra (#1559) templates. AtmoRouter is an OpenAI-compatible gateway (https://atmorouter.dev/v1), so it uses the existing apiKeyTemplate helper and the generic OpenAI-compatible client; no new runtime code.

File Change
source/wizards/templates/provider-templates.ts New atmorouter template (base URL, key prompt, default model)
source/wizards/templates/provider-templates.spec.ts Two tests: config built from answers, and defaults
docs/configuration/providers/atmorouter.md New provider page
docs/configuration/providers/index.md Link in the OpenAI-compatible list
.changeset/add-atmorouter-provider.md Minor changeset

Disclosure: I'm submitting this on behalf of the AtmoRouter team.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Changeset

  • Added a changeset (pnpm changeset) describing this change for the changelog

Testing

Automated Tests

  • New features include passing tests in .spec.ts/tsx files
  • All existing tests pass (pnpm test:all completes successfully)
  • Tests cover both success and error scenarios

test:format, test:lint, test:types, test:types:vscode and test:knip pass, and provider-templates.spec.ts passes (51 tests, 2 new). In my local pnpm test:all run on Node 24 the only failures were in source/cli-value-flags.cli-integration (34 failures with The requested module 'ink' does not provide...). These fail the same way on a clean main checkout, so I think they're down to my environment. read_file returns the body again after the file changes failed once and then passed on a re-run. This PR only touches the template list, its spec and docs.

Manual Testing

  • Tested with Ollama
  • Tested with OpenRouter
  • Tested with OpenAI-compatible API
  • Tested MCP integration (if applicable)

I built a config from the new template via buildConfig and ran it against the live endpoint:

  • Model fetch through fetchModels: returned the catalog, including the model IDs listed in the docs page
  • nanocoder --provider AtmoRouter --model <id> run "Use the read_file tool to read note.txt, then reply with only the secret word it contains.": tool call and correct answer for cc/claude-sonnet-4-6, cbcn/glm-5.3, ali/deepseek-v4.1-flash and ali/qwen3.8-max

Checklist

  • If this was for an open issue, I was assigned to it
  • Code follows project style guidelines
  • Self-review completed
  • Documentation updated (if needed)
  • No breaking changes (or clearly documented)
  • Appropriate logging added using structured logging (see CONTRIBUTING.md) (n/a, no runtime code)

@github-actions

Copy link
Copy Markdown
Contributor

nc-review: nothing to raise

@bayuh85 — nothing to raise from the automated review.

Adds a first-class AtmoRouter provider template to the /settings providers wizard via the existing apiKeyTemplate helper, with two spec tests, a docs page, an index link and a valid minor changeset. I verified the template integrates correctly: the base URL is unique so findTemplateForProvider's baseUrl fallback resolves to it, resolveOpenAICompatibleModelsEndpoint maps https://atmorouter.dev/v1 to the documented /v1/models catalog URL, no sdkProvider is set so the generic OpenAI-compatible client applies, the template id does not collide with any sdkProvider value (the pre-existing invariant test still holds), and the changeset package name matches package.json. It follows the shape of the already-merged Cheaper Inference / API Route / FutureInfra templates, has no duplicate in the open-PR corpus, and no issues were found; the only claims I could not verify from this environment are external facts (the listed model IDs, the ar- key prefix, and the dashboard URL), which the author reports verifying manually against the live endpoint.


🔴 blocking · 🟠 a reviewer would ask for a change · ⚪ optional

Automated code review — correctness, security, design, tests, plus duplicates and scope. A human still decides; this is not a substitute for review and is not exhaustive. The required status checks separately cover lint, formatting, types, unused dependencies, the test suite and the build. This bot never merges. Maintainers can rerun with /re-review.

@github-actions github-actions Bot added the agent:clean nc-review had nothing to raise label Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:clean nc-review had nothing to raise area:docs Documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant