Skip to content

feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b)#2488

Open
oyi77 wants to merge 1 commit into
diegosouzapw:mainfrom
oyi77:feat/free-providers-wave1b
Open

feat(providers): add 14 free-tier providers — Chinese regional + dev tools (Wave 1b)#2488
oyi77 wants to merge 1 commit into
diegosouzapw:mainfrom
oyi77:feat/free-providers-wave1b

Conversation

@oyi77
Copy link
Copy Markdown
Contributor

@oyi77 oyi77 commented May 21, 2026

Summary

  • Added 14 new free-tier providers covering Chinese/Asian regional AI + developer tools
  • All providers have hasFree: true, passthroughModels: true, and descriptive freeNote
  • SVG icons created for all 14 providers
  • Lobe icon aliases added for 11 providers (Baidu, Baichuan, Coze, Dify, Doubao, Phind, SenseNova, Stepfun, Tencent, Yi, SparkDesk)
  • Provider count updated from 198 to 212 in README.md and AGENTS.md

Chinese Regional Providers (11)

Provider ID Website Free Tier
Baidu (ERNIE) baidu yiyan.baidu.com ERNIE Speed/Lite — China's #2 LLM
Tencent Hunyuan tencent hunyuan.tencent.com Hunyuan Lite — WeChat ecosystem
iFlytek Spark iflytek xinghuo.xfyun.cn Spark Lite — China's voice AI leader
Baichuan baichuan baichuan.com Free Baichuan models
Yi (01.AI) yi 01.ai Yi-Light — Kai-Fu Lee's company
StepFun stepfun stepfun.com Step-2 models
Coze coze coze.com ByteDance agent platform
360 AI 360ai ai.360.cn 360 AI Brain
Doubao doubao doubao.com ByteDance chatbot
SenseNova sensenova platform.sensenova.cn SenseTime models
SparkDesk sparkdesk xinghuo.xfyun.cn iFlytek Spark alias

Developer Tools (3)

Provider ID Website Free Tier
Phind phind phind.com Code search + AI
HuggingChat huggingchat huggingface.co/chat Free chat with open models
Dify dify dify.ai Open-source AI app builder + RAG

Files Modified

  • src/shared/constants/providers.ts — 14 provider definitions
  • src/shared/components/lobeProviderIcons.ts — 11 lobe icon imports + aliases
  • src/shared/components/ProviderIcon.tsx — KNOWN_SVGS updated
  • public/providers/*.svg — 14 new SVG icons
  • README.md — Provider count updated to 212
  • AGENTS.md — Provider count updated to 212

Test plan

  • npm run lint — 0 errors (2073 warnings, all pre-existing)
  • npm run typecheck:core — clean
  • npm run build — production build succeeds
  • Security tests pass (23/23)
  • Plan3 tests pass (37/37)
  • All 14 SVG icons created and verified
  • 11 lobe icon aliases added and verified
  • Provider count verified: 212 across 9 groups
  • Docs updated (README.md, AGENTS.md)

Related Issues

Closes #2485

Context

This is Wave 1b of the provider expansion effort. Research from LiteLLM, OpenRouter, Portkey, one-api, new-api, and Higress identified ~50 providers OmniRoute is missing. Chinese/Asian regional providers are a major gap — competitors like one-api and Higress support all of these.

Wave 1 (7 global free providers) is in PR #2479. Wave 2 (major companies), Wave 3 (content/video), and Wave 4 (niche) will follow.

@oyi77 oyi77 requested a review from diegosouzapw as a code owner May 21, 2026 13:08
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request expands the supported AI providers from 160+ to 212, adding configurations and icons for several new free-tier providers including Baidu, Tencent, and iFlytek. Feedback suggests removing redundant entries in KNOWN_SVGS for providers already supported by Lobe icons, sorting new icon components alphabetically, and ensuring huggingchat is correctly registered to allow optional API keys. Additionally, the reviewer noted a potential duplication between the sparkdesk and iflytek provider definitions.

Comment thread src/shared/components/ProviderIcon.tsx Outdated
Comment on lines +105 to +118
"baidu",
"tencent",
"iflytek",
"baichuan",
"yi",
"stepfun",
"coze",
"360ai",
"doubao",
"sensenova",
"sparkdesk",
"phind",
"huggingchat",
"dify",
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.

medium

Several of the newly added providers already have Lobe icon mappings defined in src/shared/components/lobeProviderIcons.ts. Since the ProviderIcon component prioritizes Lobe icons (line 139), these entries in KNOWN_SVGS and their corresponding SVG files in public/providers/ are redundant and will not be used. Only providers without Lobe icon support (360ai, iflytek, sparkdesk, huggingchat) should be added here.

Suggested change
"baidu",
"tencent",
"iflytek",
"baichuan",
"yi",
"stepfun",
"coze",
"360ai",
"doubao",
"sensenova",
"sparkdesk",
"phind",
"huggingchat",
"dify",
"360ai",
"huggingchat",
"iflytek",
"sparkdesk",

Comment on lines +231 to +239
Baichuan: { mono: BaichuanMonoIcon, color: BaichuanColorIcon },
Coze: { mono: CozeMonoIcon },
Dify: { mono: DifyMonoIcon, color: DifyColorIcon },
Doubao: { mono: DoubaoMonoIcon, color: DoubaoColorIcon },
Phind: { mono: PhindMonoIcon },
SenseNova: { mono: SenseNovaMonoIcon, color: SenseNovaColorIcon },
Stepfun: { mono: StepfunMonoIcon, color: StepfunColorIcon },
Tencent: { mono: TencentMonoIcon, color: TencentColorIcon },
Yi: { mono: YiMonoIcon, color: YiColorIcon },
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.

medium

The new entries in LOBE_ICON_COMPONENTS are not sorted alphabetically. Maintaining alphabetical order helps with readability and makes it easier to locate specific providers as the list grows.

Comment on lines +1660 to +1672
huggingchat: {
id: "huggingchat",
alias: "huggingchat",
name: "HuggingChat",
icon: "chat",
color: "#FFD21E",
textIcon: "HC",
website: "https://huggingface.co/chat",
hasFree: true,
freeNote: "Free chat with open models (Llama, Mistral, etc.).",
passthroughModels: true,
authHint: "No API key required for basic access.",
},
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.

medium

The authHint for huggingchat states that no API key is required for basic access. To ensure the UI doesn't prompt for a missing API key when using this provider, it should be added to the providerAllowsOptionalApiKey function at the end of this file (around line 2154).

Comment on lines +1634 to +1646
sparkdesk: {
id: "sparkdesk",
alias: "sparkdesk",
name: "SparkDesk",
icon: "auto_awesome",
color: "#0066FF",
textIcon: "SD",
website: "https://xinghuo.xfyun.cn",
hasFree: true,
freeNote: "Free iFlytek Spark models.",
passthroughModels: true,
authHint: "Get API key at console.xfyun.cn",
},
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.

medium

sparkdesk appears to be a duplicate of iflytek, pointing to the same website and using the same authentication hint. If this is intended as an alias for compatibility with specific tools, consider if it can be handled via the alias field or a shared configuration to avoid duplication in the provider registry.

@kilo-code-bot
Copy link
Copy Markdown

kilo-code-bot Bot commented May 21, 2026

Code Review Summary

Status: 7 Issues Found (3 New, 4 Carried Forward) | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 3
SUGGESTION 4

New Issues Found (Incremental Diff)

File Line Issue
src/shared/components/lobeProviderIcons.ts 405 WARNING: stepfun: "Stepfun" alias points to non-existent LOBE_ICON_COMPONENTS entry → runtime TypeError
src/shared/components/lobeProviderIcons.ts 410 WARNING: tencent: "Tencent" alias points to non-existent LOBE_ICON_COMPONENTS entry → runtime TypeError
src/shared/components/lobeProviderIcons.ts 435 WARNING: yi: "Yi" alias points to non-existent LOBE_ICON_COMPONENTS entry → runtime TypeError

Carried Forward Issues (4 active from previous review)

File Line Issue
src/shared/components/ProviderIcon.tsx N/A Known SVG entry consistency
src/shared/components/lobeProviderIcons.ts N/A Lobe icon mapping consistency
src/shared/constants/providers.ts 1880 huggingchat added to providerAllowsOptionalApiKey (fix in progress)
src/shared/constants/providers.ts N/A SparkDesk duplicate of iFlytek (same website/API key)

Root Cause of New Issues

StepfunColorIcon/MonoIcon (lines 137-138), TencentColorIcon/MonoIcon (lines 142-143), and YiColorIcon/MonoIcon (lines 148-149) are imported but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). The aliases map to keys that don't exist, causing undefined.color TypeError at runtime when these provider icons are rendered.

Fix: Add three entries to LOBE_ICON_COMPONENTS:

  • Stepfun: { mono: StepfunMonoIcon, color: StepfunColorIcon }
  • Tencent: { mono: TencentMonoIcon, color: TencentColorIcon }
  • Yi: { mono: YiMonoIcon, color: YiColorIcon }
Files Reviewed (3 files)
  • src/shared/components/ProviderIcon.tsx - KNOWN_SVGS additions verified
  • src/shared/components/lobeProviderIcons.ts - 3 runtime bugs found in alias/component mismatch
  • src/shared/constants/providers.ts - 14 new provider definitions verified

Reviewed by qwen3.6-plus · 542,548 tokens

@oyi77
Copy link
Copy Markdown
Contributor Author

oyi77 commented May 21, 2026

Good point about the redundant Lobe icon entries — I'll trim those down to only the providers without Lobe support. Will also fix the factual errors in the descriptions.

Comment thread src/shared/components/ProviderIcon.tsx Outdated
"360ai",
"doubao",
"sensenova",
"phind",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

SUGGESTION: sparkdesk removed from KNOWN_SVGS

The sparkdesk entry was removed from this set along with its provider definition from APIKEY_PROVIDERS. However, public/providers/sparkdesk.svg still exists in the repo and is now orphaned. Verify this removal was intentional and clean up the unused SVG file.

…tools (Wave 1b)

Co-Authored-By: OpenClaude (mimo-v2.5-pro) <openclaude@gitlawb.com>
@oyi77 oyi77 force-pushed the feat/free-providers-wave1b branch from bbd21f9 to 6ebda39 Compare May 21, 2026 15:27
"searchapi-search": "SearchApi",
siliconflow: "SiliconCloud",
snowflake: "Snowflake",
stepfun: "Stepfun",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError

stepfun: "Stepfun" maps to key "Stepfun" in LOBE_ICON_COMPONENTS, but no such entry exists. The StepfunColorIcon/StepfunMonoIcon are imported (lines 137-138) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("stepfun") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.

Fix: Add Stepfun: { mono: StepfunMonoIcon, color: StepfunColorIcon } to LOBE_ICON_COMPONENTS.

"stability-ai": "Stability",
tavily: "Tavily",
"tavily-search": "Tavily",
tencent: "Tencent",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError

tencent: "Tencent" maps to key "Tencent" in LOBE_ICON_COMPONENTS, but no such entry exists. The TencentColorIcon/TencentMonoIcon are imported (lines 142-143) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("tencent") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.

Fix: Add Tencent: { mono: TencentMonoIcon, color: TencentColorIcon } to LOBE_ICON_COMPONENTS.

xiaomimimo: "XiaomiMiMo",
xinference: "Xinference",
zai: "ZAI",
yi: "Yi",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

WARNING: Alias points to non-existent LOBE_ICON_COMPONENTS entry — will cause runtime TypeError

yi: "Yi" maps to key "Yi" in LOBE_ICON_COMPONENTS, but no such entry exists. The YiColorIcon/YiMonoIcon are imported (lines 148-149) but never registered in the LOBE_ICON_COMPONENTS object (lines 185-287). When getLobeProviderIcon("yi") is called, entry will be undefined, and accessing entry.color or entry.mono throws TypeError.

Fix: Add Yi: { mono: YiMonoIcon, color: YiColorIcon } to LOBE_ICON_COMPONENTS.

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.

[Feature] Add 14 Free-Tier Providers — Chinese Regional + Phind/HuggingChat/Dify (Wave 1b)

1 participant