Skip to content

feat(provider): add Wally - #2482

Open
adityabatra072 wants to merge 1 commit into
ThinkInAIXYZ:devfrom
RunanywhereAI:feat/add-wally-provider
Open

adityabatra072 wants to merge 1 commit into
ThinkInAIXYZ:devfrom
RunanywhereAI:feat/add-wally-provider

Conversation

@adityabatra072

@adityabatra072 adityabatra072 commented Oct 29, 2026 •

Copy link
Copy Markdown

Adds Wally as a disabled built-in OpenAI-compatible provider, in the same registry shape as CloudGPU (#2474) and the other API-key providers.

Wally is RunAnywhere's inference API for open-weight models (DeepSeek V4.1 Flash, DeepSeek V4 Pro, GLM-5.3, Kimi K3, MiniMax M3).

  • defaults.ts: wally, base URL https://inference.runanywhere.ai/v1, disabled by default. Keys at https://console.runanywhere.ai/, API docs at https://docs.runanywhere.ai/wally-cloud/api, models and prices at https://www.runwally.com/pricing.
  • providerRegistry.ts: ...OPENAI_BASE with credentialStrategy: 'api-key' and embeddingStrategy: 'none', so it uses the existing openai-compatible runtime and live /v1/models discovery. Wally's GET /v1/models answers without a key, so the check is generate-text with deepseek-v4.1-flash and the shared 16-token limit, like CloudGPU. No embeddings endpoint is offered.
  • Icon: the Wally colour mark, registered with the colour icons.
  • README grids: Wally next to Obscurify.ai.
  • Tests: a defaults case and a check case next to CloudGPU's.
BEFORE
Provider catalog
  Runcrate
  CloudGPU
  cheapaimodel

AFTER
Provider catalog
  Runcrate
  CloudGPU
  [icon] Wally
    URL: https://inference.runanywhere.ai/v1
  cheapaimodel

Validation:

  • pnpm exec vitest run --config vitest.config.ts test/main/provider: 75 files, 1053 passed
  • pnpm exec vitest run --config vitest.config.renderer.ts test/renderer/components/ModelIcon.test.ts: 8 passed
  • pnpm run typecheck, pnpm run lint, pnpm run format:check, pnpm run i18n, pnpm run icons:check, pnpm run architecture:renderer-baseline:check: clean
  • With a real key, the connection check, model list, chat, streaming and tool calls work for deepseek-v4.1-flash and glm-5.3-flash; a bad key fails the check.

Summary by CodeRabbit

  • New Features
    • Added Wally to the model provider listings, including its icon and website links. Wally is currently disabled in the provider catalog.
  • Documentation
    • Updated the English, Japanese, and Chinese README files to include Wally in the provider list.

@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Walkthrough

The provider catalog and registry now include Wally, with an OpenAI-compatible configuration and an API-key connection check. Tests cover the provider configuration and request. The icon registry and README provider tables also include Wally.

Changes: Wally provider integration

Layer / File(s) Summary
Provider configuration and connection check
src/main/provider/defaults.ts, src/main/provider/providerRegistry.ts, test/main/provider/defaultProviders.test.ts, test/main/provider/basicApiKeyProviders.test.ts
Adds Wally as a disabled OpenAI-compatible provider. Its API-key connection check sends a text-generation request to the Wally inference endpoint. Tests cover the provider settings and check request.
Provider icon and README listings
src/renderer/src/components/icons/modelIconRegistry.ts, README.md, README.jp.md, README.zh.md
Maps the Wally icon to the wally key and adds Wally to the supported-provider tables in three README files.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Suggested reviewers: zerob13

Merge Risk: Minimal · up to 7f649

No concrete merge-blocking defect is established in the Wally integration.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely identifies the main change: adding the Wally provider.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 5 files. (3 skipped: 3 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔇 Additional comments: 1
src/main/provider/providerRegistry.ts-675-675: 1

675-675: Minor · Functional Correctness · Quick win

⚠️ Unverified finding
Verification ran but could not confirm this finding. It is shown for review, not as a verified issue.

Check a model available to the key.

Wally documents model entitlements per environment. A valid key can therefore receive a 403 for deepseek-v4.1-flash while another model works. The connection check then reports failure. (docs.runanywhere.ai)

Select an available chat model for the check and handle model-entitlement failures.


Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c14661ba-84a3-47b9-93a4-7669fc9e651d
Commits

Reviewing files that changed from the base of the PR and between e946167 and 7f6499b.

Files ignored due to path filters: 1
  • src/renderer/src/assets/llm-icons/wally-color.svg is excluded by !**/*.svg
Files selected for processing: 8
  • README.jp.md
  • README.md
  • README.zh.md
  • src/main/provider/defaults.ts
  • src/main/provider/providerRegistry.ts
  • src/renderer/src/components/icons/modelIconRegistry.ts
  • test/main/provider/basicApiKeyProviders.test.ts
  • test/main/provider/defaultProviders.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

@zerob13 zerob13 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. Additive provider registration, no blocking issues.

What this PR does

  • Registers Wally as a built-in provider that starts disabled, on the existing OpenAI-compatible transport with an API-key credential.
  • Uses a text-generation request for the connection check instead of the model list, because Wally's /v1/models answers without a key and so cannot prove that a key is valid.
  • Adds the icon, the provider table rows in the three READMEs that carry that table, and two tests.

Review

Over-engineering: none. It maps to OPENAI_BASE and adds no adapter, runtime kind, or dependency. That is the path docs/features/provider-runtime/spec.md asks for when the wire format already matches.

Consistency with the existing provider designs: the defaults.ts profile and the registry entry follow the CloudGPU shape, including credentialStrategy: 'api-key' and embeddingStrategy: 'none'. generate-text is the right check strategy for a catalog that is readable without credentials, and the 16-token limit matches the other providers that use it.

Breaking changes: none. Everything is additive, the provider ships with enable: false, and no existing provider id, model source, or runtime mapping is touched.

Tests: proportional. One test for the default profile and one for the check request. They pin the contract without duplicating the existing provider tests or testing internals.

Verification: PR Check and Package Check are green on 7f6499b. Locally I ran test/main/provider/defaultProviders.test.ts and test/main/provider/basicApiKeyProviders.test.ts (94 tests) and oxfmt --check on the changed TypeScript files; all passed.

Non-blocking notes

  1. docs/features/provider-runtime/spec.md documents CloudGPU and Obscurify.ai because their check strategy is not obvious from the registry. Wally makes the same kind of decision (public model list, so the check generates text). A short section would save the next reader the investigation. Optional.
  2. If Wally grants model access per key, a valid key without deepseek-v4.1-flash will fail the check. The PR reports a real-key check passing with that model, so I am not asking for a change; just recording the tradeoff.
  3. expect(defaults).toBeDefined() after the non-null assertion cannot fail. Harmless, no action needed.

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.

2 participants