[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83986":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":38,"readmeContent":39,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},83986,"FreeUltraCode","wellingfeng\u002FFreeUltraCode","wellingfeng","FreeUltraCode - Free LLM channel router for Claude Code, Codex, Gemini, and local models.","",null,"TypeScript",62,10,51,0,1,5,7,48.12,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32,33,34,35,36,37],"ai-chat","claude-code","codex","coding-assistant","free-ai","free-llm","free-models","gemini","llm","local-first","model-routing","multi-model","tauri","2026-06-12 04:01:42","\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002Ffreeultracode-mark.svg\" alt=\"FreeUltraCode app mark\" width=\"560\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">FreeUltraCode\u003C\u002Fh1>\n\n\u003Ch3 align=\"center\">Run coding agents without burning premium quota.\u003C\u002Fh3>\n\n\u003Cp align=\"center\">\n  FreeUltraCode gives developers one local chat surface for Claude Code, Codex,\n  Gemini, free provider channels, and local models. Use the expensive models\n  when they matter. Send the routine work somewhere cheaper.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>English\u003C\u002Fstrong>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.zh-CN.md\">中文\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.fr.md\">Français\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.de.md\">Deutsch\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.es.md\">Español\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.pt-BR.md\">Português\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.ru.md\">Русский\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.ja.md\">日本語\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.ko.md\">한국어\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.hi.md\">हिन्दी\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Ca href=\"app\u002Fdoc\u002FREADME.ar.md\">العربية\u003C\u002Fa>\n  &nbsp;·&nbsp;\n  \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F2C9ptSEFG\">Discord\u003C\u002Fa>\u003C\u002Fstrong>\n  &nbsp;·&nbsp;\n  \u003Cstrong>QQ Group: 149523963\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"app\u002Fpackage.json\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-0.2.8-2F6FED?style=flat-square&labelColor=161b22\" alt=\"version 0.2.8\">\u003C\u002Fa>\n  \u003Ca href=\"app\u002Fsrc-tauri\u002Ftauri.conf.json\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTauri-2.11-24C8DB?style=flat-square&labelColor=161b22&logo=tauri&logoColor=white\" alt=\"Tauri 2.11\">\u003C\u002Fa>\n  \u003Ca href=\"app\u002Fpackage.json\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61DAFB?style=flat-square&labelColor=161b22&logo=react&logoColor=white\" alt=\"React 18\">\u003C\u002Fa>\n  \u003Ca href=\"app\u002Fpackage.json\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.6-3178C6?style=flat-square&labelColor=161b22&logo=typescript&logoColor=white\" alt=\"TypeScript 5.6\">\u003C\u002Fa>\n  \u003Ca href=\"app\u002Fpackage.json\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-5.4-646CFF?style=flat-square&labelColor=161b22&logo=vite&logoColor=white\" alt=\"Vite 5.4\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F2C9ptSEFG\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdiscord-join-5865F2?style=flat-square&labelColor=161b22&logo=discord&logoColor=white\" alt=\"Join Discord\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FQQ%20Group-149523963-12B7F5?style=flat-square&labelColor=161b22\" alt=\"QQ Group 149523963\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Free channel routing\u003C\u002Fstrong>\u003Cbr>\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002Fhero-free-channels.png\" alt=\"FreeUltraCode free channel routing screenshot\" width=\"960\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Image generation and coding in one session\u003C\u002Fstrong>\u003Cbr>\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F生图\u002Fsession-2026-06-07-2351.png\" alt=\"FreeUltraCode switches from image generation to coding in one chat session\" width=\"720\">\n\u003C\u002Fp>\n\n> [!IMPORTANT]\n> **Community · 加入社区** — join the FreeUltraCode Discord or QQ group for setup help, model routing ideas, and contributor coordination. Discord: \u003Chttps:\u002F\u002Fdiscord.gg\u002F2C9ptSEFG> · QQ Group: `149523963`\n\n## Why FreeUltraCode\n\nCoding agents are useful, but premium model quota can disappear quickly. FreeUltraCode focuses on a simpler path: keep the chat experience local, then make it easy to route requests through cheaper channels when they are good enough.\n\n- Use free, trial-credit, or low-cost channels such as GitHub Models, Hugging Face Router, SambaNova Cloud, Together AI, Gemini, DeepSeek, Kimi, Groq, OpenRouter, NVIDIA NIM, Z.ai, Kilo, LLM7, Ollama, LM Studio, and llama.cpp.\n- Keep API keys and provider settings on your machine.\n- Switch runtime, channel, permission mode, and workspace directly from the chat composer.\n- Preserve chat history, favorites, scheduled prompts, and workspace context locally.\n- Use local models with zero API keys when your hardware supports them.\n\n## What It Can Do\n\n### Coding Chat\n\n- Ask for code edits, bug investigation, refactor help, tests, release notes, or documentation.\n- Attach file paths or drag files into the composer.\n- Review streamed assistant output, command logs, file references, and generated summaries in one chat surface.\n- Continue with follow-up requests in the same session.\n\n### Image Generation + Coding\n\n- Use an image-generation model and a programming model inside the same local conversation.\n- Enter image mode when you need visual assets, icons, or design references, then switch back to the coding model to apply those assets to the app.\n- Keep the generated image, implementation request, command log, and final code changes in one session history.\n\n### Free-Model Routing\n\n- **20+ remote channels plus local runtimes**: NVIDIA NIM, OpenRouter, GitHub Models, Hugging Face Router, SambaNova Cloud, Together AI, Google Gemini, DeepSeek, Mistral, Mistral Codestral, OpenCode, Wafer, Kimi, Cerebras, Groq, Fireworks, Z.ai, LLM7, Kilo Gateway, plus local runtimes such as Ollama, LM Studio, and llama.cpp.\n- **Keyless experimental routes**: LLM7 and Kilo Gateway can be tried without an API key, but should only be used for non-sensitive coding prompts.\n- **Official free\u002Ftrial-credit routes**: GitHub Models, Hugging Face Router, SambaNova Cloud, Together AI, Gemini, Groq, Cerebras, NVIDIA NIM, OpenRouter, Mistral\u002FCodestral, DeepSeek, Kimi, Z.ai, OpenCode, Wafer, and Fireworks use provider keys kept locally in the app.\n- Local Rust proxy translates between Anthropic and OpenAI-compatible protocols.\n- Claude Code can route through configured free channels without changing the chat UI.\n- Provider keys, model overrides, and local model settings are managed from the app settings.\n\nCurrent default coding-oriented models:\n\n| Channel | Default model |\n| --- | --- |\n| GitHub Models | `openai\u002Fgpt-4.1-mini` |\n| Hugging Face Router | `deepseek-ai\u002FDeepSeek-V4-Pro` |\n| SambaNova Cloud | `DeepSeek-V3.1` |\n| Together AI | `Qwen\u002FQwen3-Coder-480B-A35B-Instruct-FP8` |\n| Kilo Gateway | `poolside\u002Flaguna-xs.2:free` |\n| LLM7 | `codestral-latest` |\n\n### Dynamic Workflow (\u002Fultracode)\n\nFor complex multi-step coding tasks, `\u002Fultracode \u003Ctask>` generates a purpose-built execution harness on the fly and runs it immediately — no visual canvas needed.\n\n- Describe the task in natural language. The planner builds a harness with parallel subagents, adversarial verification, and acceptance gates.\n- Six internal strategies are chosen automatically: classify-and-act, fan-out-and-synthesize, adversarial-verification, generate-and-filter, tournament, and loop-until-done.\n- Every run is fully logged under `.fuc-run\u002F\u003Crun-id>\u002F` with a task ledger, events, verdict, and final result.\n- Run from the desktop app or the CLI: `fuc ultracode \"\u003Ctask>\" --json --interactive --cwd \u003Cworkspace>`.\n- Zero config — reuses local `claude` CLI login credentials.\n\n#### Free Auto — Multi-Channel Auto-Switching\n\nThe **Auto** channel (`freecc:auto` in the Channel menu) routes each request through the best currently available free channel without manual switching.\n\n- Rotates through all configured free channels, automatically skipping channels that hit rate limits (429) or return upstream errors (5xx).\n- Tracks per-channel cooldowns with backoff: when a channel returns an error, it is paused for a cooling period before being retried.\n- Supports an optional model override so all auto-routed requests use the same model regardless of which channel handles them.\n- If all channels are exhausted, returns a 503 with the failure log so you can diagnose the outage.\n\n#### Multi-Provider Chain: DeepSeek → CodeX\n\nWhen using `\u002Fultracode`, the harness can chain multiple providers across plan steps automatically. A typical pattern: let DeepSeek produce responsive drafts with low cost, then let CodeX pick up and refine the output for final quality.\n\n- The **Dynamic Harness plan** supports per-step `model` overrides — assign DeepSeek to brainstorming\u002Fclassification steps and CodeX\u002FGemini to implementation\u002Fverification steps.\n- **cc-switch compatibility**: FreeUltraCode reads `cc-switch` CLI config so any provider already configured for Claude Code routing is immediately available for ultracode steps.\n- **Fan-out-and-synthesize** strategy parallelizes DeepSeek workers across independent subtasks, then a consensus gate (CodeX) synthesizes and verifies the results.\n\n#### Speed-Aware Channel Selection\n\nThe free proxy auto channel prioritizes channels based on real-world availability signals:\n\n- **Rate-limit awareness**: Channels returning 429 are cooling for 30+ seconds before retry, preventing wasted attempts on saturated upstreams.\n- **Fail-fast on errors**: Non-retryable errors (4xx auth failures, 5xx upstream down) are tracked per-channel with cooldowns; the auto router skips them for the current request.\n- **Connection-time budget**: Each channel attempt is subject to the upstream's timeout; the auto router cycles through candidates without blocking on a single slow upstream.\n- **Natural ordering by responsiveness**: Channels that succeed leave the cooldown registry empty and are naturally tried first; channels with errors are deferred to the end of the candidate list.\n\nThese features work together so `\u002Fultracode` harness runs stay resilient even when individual free providers are slow, rate-limited, or temporarily unavailable.\n\n### Local-First Workspace\n\n- Sessions, favorites, scheduled prompts, API keys, and workspace history are stored locally.\n- No hosted FreeUltraCode server is required.\n- The desktop app can use local CLI credentials and local model runtimes already available on your machine.\n\n## Quick Start\n\nRun the web app from `app\u002F`:\n\n```bash\ncd app\nnpm install\nnpm run dev\n```\n\nVite starts at \u003Chttp:\u002F\u002Flocalhost:5173>.\n\nRun the desktop app:\n\n```bash\ncd app\nnpm run desktop\n```\n\nBuild a production desktop package:\n\n```bash\ncd app\nnpm run package\n```\n\nFrom the repository root:\n\n```bash\n.\u002Frun.sh        # macOS\u002FLinux: rebuild if needed, then launch\n.\u002Fpackage.sh    # macOS\u002FLinux: build native bundles (.dmg on macOS)\nrun.bat         # Windows: rebuild if needed, then launch\nbuild.bat       # Windows: package the NSIS installer\n```\n\n## Basic Usage\n\n### Register a Free Channel\n\n1. Open the bottom **Channel** menu and choose a free channel with a warning mark, for example **Free · OpenRouter**.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F注册免费渠道\u002F1-配置大模型.png\" alt=\"Choose an unconfigured free channel from the Channel menu\" width=\"960\">\n\u003C\u002Fp>\n\n2. In the API key dialog, click **Open registration site**.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F注册免费渠道\u002F2-注册.png\" alt=\"Open the provider registration site from the API key dialog\" width=\"960\">\n\u003C\u002Fp>\n\n3. Create a new API key on the provider page, then copy it.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F注册免费渠道\u002F3-新建token.png\" alt=\"Create a provider API key\" width=\"960\">\n\u003C\u002Fp>\n\n4. Paste the key back into FreeUltraCode and click **Save and Use**. After saving, the warning mark disappears from that channel.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F注册免费渠道\u002F4-配置好了.png\" alt=\"Configured free channel without warning mark\" width=\"960\">\n\u003C\u002Fp>\n\n5. You can also manage every free channel from **Settings** -> **Channels** -> **Free Channels**. Channels marked **Ready** have the required configuration.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F注册免费渠道\u002F5-设置中的免费渠道.png\" alt=\"Manage free channels in settings\" width=\"960\">\n\u003C\u002Fp>\n\nAfter the channel is ready, use the bottom input to chat through that route. See the [free channel registration guide](app\u002Fdoc\u002Fregister-free-channel.md) for the full Chinese walkthrough.\n\n### Use Image Mode\n\nImage mode turns the chat composer into a text-to-image surface while keeping the same session history. It is useful for generating UI assets, icons, posters, design references, and then switching back to coding in the same conversation.\n\n1. Open **Settings** -> **Images**, choose a default image provider, and fill in the required API key, account ID, base URL, or local ComfyUI endpoint. Providers with complete configuration are available from the composer in image mode.\n2. Start a chat session and type `\u002Fimage-mode-start`. You can also start and generate in one message, for example:\n\n```text\n\u002Fimage-mode-start a clean app icon for a local coding agent, glass effect, 1024x1024\n```\n\n3. While image mode is on, ordinary messages generate images instead of running coding edits. The bottom **Channel** selector switches to image providers, and the model selector appears when image model selection is enabled.\n4. Describe the image you want. FreeUltraCode first asks the coding model to polish the image prompt, then sends it to the configured image provider. The generated image appears in the chat stream with the prompt and provider details.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"app\u002Fdoc\u002Fimages\u002F生图\u002Fsession-2026-06-07-2351.png\" alt=\"Image mode generates images and keeps them in the same FreeUltraCode session\" width=\"720\">\n\u003C\u002Fp>\n\n5. Send `\u002Fimage-mode-end` to return to the normal coding channel and model. If you only need one image without staying in image mode, send `\u002Fimage`, `\u002Fimg`, `\u002Fdraw`, `\u002F生图`, or `\u002F画图` followed by the prompt.\n\n## How It Works\n\n```text\nUser request\n    |\n    v\nChat composer\n    |\n    +--> selected runtime \u002F channel \u002F permission \u002F workspace\n             |\n             +--> direct provider API, local CLI, or local free-channel proxy\n                        |\n                        +--> streamed assistant output, tool log, and chat history\n```\n\nFree-channel proxy:\n\n- Runs locally and binds to `127.0.0.1:\u003Cport>`.\n- Routes each channel through `http:\u002F\u002F127.0.0.1:\u003Cport>\u002Fch\u002F\u003CchannelId>`.\n- Translates Anthropic and OpenAI-compatible streaming protocols.\n- Lets Claude Code use non-Anthropic and local providers through the same gateway path.\n\n## Technology Stack\n\n| Area | Technology |\n| --- | --- |\n| Desktop shell | Tauri 2, Rust |\n| Frontend | React 18, Vite 5, TypeScript 5 |\n| State | Zustand |\n| Styling | Tailwind CSS, CSS variables |\n| Icons | lucide-react |\n| Provider routing | Claude Code, Codex, Gemini, extensible provider settings |\n| Free-channel proxy | Rust `tiny_http` + `ureq`, Anthropic\u002FOpenAI protocol translation |\n\n## Project Structure\n\n```text\napp\u002F\n  src\u002F\n    components\u002F  Shared UI and rich assistant-message rendering\n    lib\u002F         Provider settings, free-channel routing, persistence helpers\n    panels\u002F      Sidebar, chat dock, settings, scheduling UI\n    store\u002F       Zustand state and local history\n  src-tauri\u002F\n    src\u002F\n      free_proxy.rs    Rust reverse proxy + Anthropic\u002FOpenAI translation\n      lib.rs           Tauri commands, filesystem\u002Fhistory bridge\n  doc\u002F                 Tutorials, localized READMEs, screenshots\ndocs\u002F                  Research notes, static docs, assets\npencil\u002F                Pencil design files\n```\n\n## Documentation\n\n- [Free channel registration guide](app\u002Fdoc\u002Fregister-free-channel.md) - Chinese walkthrough for creating and saving a free-channel API key.\n- [Chinese README](app\u002Fdoc\u002FREADME.zh-CN.md)\n\n## Development\n\nUseful commands from `app\u002F`:\n\n```bash\nnpm run dev        # Vite dev server\nnpm run typecheck  # TypeScript check without emitting files\nnpm run lint       # ESLint for .ts and .tsx files\nnpm run test       # Vitest suite\nnpm run desktop    # Tauri development mode\nnpm run package    # Production Tauri build\n```\n\n## Community\n\n- Discord: \u003Chttps:\u002F\u002Fdiscord.gg\u002F2C9ptSEFG>\n- QQ Group: `149523963`\n- Issues: \u003Chttps:\u002F\u002Fgithub.com\u002Fwellingfeng\u002FFreeUltraCode\u002Fissues>\n- Repository: \u003Chttps:\u002F\u002Fgithub.com\u002Fwellingfeng\u002FFreeUltraCode>\n\nPull requests should describe the behavior change, list verification commands, link related issues, and include screenshots or short recordings for UI changes.\n\n## License\n\nNo license has been specified yet.\n",2,"2026-06-11 04:11:59","CREATED_QUERY"]