[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94698":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":9,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":16,"hasPages":16,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":14,"starSnapshotCount":14,"syncStatus":21,"lastSyncTime":9,"discoverSource":22},94698,"TokenHub","astaxie\u002FTokenHub","astaxie","TokenHub gives enterprises a private gateway to unify AI model access and governance, making every request controllable, traceable, and attributable.",null,"https:\u002F\u002Fgithub.com\u002Fastaxie\u002FTokenHub","Go",1035,126,0,51.31,false,"main","2026-08-24 04:01:22","\u003Cp align=\"center\">\n  \u003Cimg src=\"frontend\u002Fpublic\u002Fbrand\u002Ftokenhub-logo.png\" alt=\"TokenHub\" width=\"96\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">TokenHub\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  TokenHub gives enterprises a private gateway to unify AI model access and governance, making every request controllable, traceable, and attributable.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue.svg\" alt=\"License\" \u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.26-00ADD8?logo=go&logoColor=white\" alt=\"Go 1.26\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Compose-2496ED?logo=docker&logoColor=white\" alt=\"Docker Compose\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenAI-Compatible-10A37F\" alt=\"OpenAI Compatible\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  English | \u003Ca href=\"README.zh-CN.md\">简体中文\u003C\u002Fa> | \u003Ca href=\"README.ja.md\">日本語\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Supported Providers\n\n> [!TIP]\n> **Codex subscription ready:** connect OpenAI Codex subscription accounts to TokenHub and serve their models through the same governed gateway as API-based providers. [Set up Codex access →](docs\u002Fcodex-tokenhub-profile-quick-start.md)\n\nTokenHub includes native adapters for Codex subscriptions, OpenAI, Azure OpenAI, Anthropic, Gemini, DeepSeek, Qwen, and local models, plus a catalog of 150+ provider templates and custom OpenAI-compatible upstreams. Popular integrations include:\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fprovider-showcase.svg\" alt=\"Popular TokenHub provider integrations, including Codex Subscription, OpenAI, Anthropic, Google Gemini, DeepSeek, Qwen, Llama, and custom upstreams.\" width=\"100%\">\n\u003C\u002Fp>\n\nProvider templates use the matching native adapter when available; otherwise they connect through an OpenAI-compatible endpoint. Models and capabilities vary by upstream service and account.\n\n## Screenshots\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fscreenshots\u002Ftokenhub-tour.webp\" alt=\"TokenHub product tour: login, overview, API documentation, provider channels, model catalog, routing policies, usage analytics, and system settings\" width=\"100%\">\n\u003C\u002Fp>\n\n## Designed Around Three Roles\n\nTokenHub separates everyday model usage, team governance, and platform administration so enterprise users see the workflows that match their responsibility.\n\n| Role | Workspace Focus | Guide |\n| --- | --- | --- |\n| User | Find available models, create project-scoped API keys, call the model API, and review personal usage | [User Guide](docs\u002Fuser-guide.md) |\n| Team Leader | Manage project spaces, project members, project keys, team reports, and project cost attribution | [Team Leader Guide](docs\u002Fteam-leader-guide.md) |\n| Administrator | Configure providers, model catalog, routing policies, identity sources, RBAC, audit, and cost controls | [Administrator Guide](docs\u002Fadministrator-guide.md) |\n\n## Platform Capabilities\n\n- OpenAI-compatible model APIs: `\u002Fv1\u002Fchat\u002Fcompletions`, `\u002Fv1\u002Fresponses`, `\u002Fv1\u002Fembeddings`; Anthropic Messages APIs: `\u002Fv1\u002Fmessages`, `\u002Fv1\u002Fmessages\u002Fcount_tokens`.\n- OpenAI-compatible image generation and reference-image editing through `\u002Fv1\u002Fimages\u002Fgenerations` and `\u002Fv1\u002Fimages\u002Fedits`, with asynchronous jobs and server-side image retention; `codex-gpt-image-2` uses Codex subscription capacity, while `gpt-image-2` uses OpenAI API providers. See the [image generation guide](docs\u002Fuser-guide.md#codex-subscription-image-generation).\n- Provider channels for OpenAI-compatible, Azure OpenAI, Anthropic, Gemini, DeepSeek, Qwen, local vLLM\u002FOllama, and custom upstreams.\n- Model catalog and routing policies with priority, weight, failover order, and route health diagnostics.\n- Project-scoped key management with team ownership, member permissions, quotas, and concurrency controls.\n- Usage analytics and request logs attributed to user, project, team, model, and cost center.\n- Identity source configuration for OAuth\u002FOIDC enterprise sign-in, plus RBAC and audit trails.\n- Clean console with compact role-aware navigation, global search, light\u002Fdark mode, and split-view API documentation.\n- SQLite-first private deployment with native systemd and Docker Compose options.\n- PostgreSQL supports multi-instance deployments: share state through remote PostgreSQL, scale frontend and backend replicas horizontally, and configure connection pools. See the [deployment guide](docs\u002Fdeployment.md) and [PostgreSQL setup guide](docs\u002Fpostgresql-setup.md).\n- Console language switching for English, Chinese, and Japanese.\n- TokenHub can also connect OpenAI Codex subscription resources and route selected local Codex CLI or desktop sessions through an isolated, recoverable Codex profile. See the [Codex integration guides](docs\u002Fcodex-tokenhub-profile-quick-start.md).\n- Gemini CLI can connect directly to TokenHub's native Gemini API and use GPT models backed by Codex subscription accounts, without CCswitch. See the [Gemini CLI guide](docs\u002Fgemini-cli-codex-subscription.md).\n\n## Quick Start\n\nNative Release on a Linux systemd host:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fastaxie\u002FTokenHub\u002Fmain\u002Fdeploy\u002Fnative\u002Finstall.sh \\\n  -o \u002Ftmp\u002Ftokenhub-install.sh\nsudo bash \u002Ftmp\u002Ftokenhub-install.sh install\n```\n\nDocker Compose from a repository checkout:\n\n```bash\ncp deploy\u002F.env.example deploy\u002F.env\n# Replace every change-me value in deploy\u002F.env with a strong secret.\n.\u002Fdeploy\u002Finstall.sh\n```\n\nOpen:\n\n- Admin console: `http:\u002F\u002Flocalhost:3000`\n- Backend API: `http:\u002F\u002Flocalhost:8080`\n- Health check: `http:\u002F\u002Flocalhost:8080\u002Fhealthz`\n\nInitial admin login:\n\n- Username: `admin`\n- Native install password: printed once by the installer\n- Docker password: the value of `TOKENHUB_BOOTSTRAP_ADMIN_PASSWORD`\n\nThe native installer verifies Release checksums, installs a systemd service, and enables direct update, rollback, and restart controls in the version panel. The default Docker deployment runs the backend and console in one managed container and provides the same direct controls without mounting the Docker socket. Release bundles are stored in the `tokenhub-releases` volume so ordinary container restarts and recreations preserve a panel-applied update. Multi-instance Docker deployments keep operator-managed Compose updates so every replica changes version together. See the [deployment guide](docs\u002Fdeployment.md) for both modes.\n\n## Documentation\n\n- [Documentation home](docs\u002FREADME.md)\n- [Architecture](docs\u002Farchitecture.md)\n- [User Guide](docs\u002Fuser-guide.md)\n- [Team Leader Guide](docs\u002Fteam-leader-guide.md)\n- [Administrator Guide](docs\u002Fadministrator-guide.md)\n- [Contributing Guide](CONTRIBUTING.md)\n\n## Contributors\n\nTokenHub grows through product feedback, gateway integrations, documentation, tests, and the steady care of people who run it in real enterprise environments.\n\n\u003C!-- readme: contributors -start -->\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastaxie\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F233907?v=4\" width=\"80px\" alt=\"astaxie\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>astaxie\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flegendtkl\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2370761?v=4\" width=\"80px\" alt=\"legendtkl\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>legendtkl\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdeepjerry-ai\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F262369278?v=4\" width=\"80px\" alt=\"deepjerry-ai\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>deepjerry-ai\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcngump\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F108251?v=4\" width=\"80px\" alt=\"cngump\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>cngump\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMr0bean\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19573968?v=4\" width=\"80px\" alt=\"Mr0bean\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>Mr0bean\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcoldbrewtea\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6879314?v=4\" width=\"80px\" alt=\"coldbrewtea\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>coldbrewtea\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsamz406\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3055810?v=4\" width=\"80px\" alt=\"samz406\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>samz406\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwangle201210\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19949348?v=4\" width=\"80px\" alt=\"wangle201210\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>wangle201210\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbailu-ZZ\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F311096537?v=4\" width=\"80px\" alt=\"bailu-ZZ\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>bailu-ZZ\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FCLukeLi\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252523101?v=4\" width=\"80px\" alt=\"CLukeLi\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>CLukeLi\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fimaben\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3390195?v=4\" width=\"80px\" alt=\"imaben\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>imaben\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmyssl\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F27838738?v=4\" width=\"80px\" alt=\"myssl\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>myssl\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fexgliuzhi\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6261701?v=4\" width=\"80px\" alt=\"exgliuzhi\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>exgliuzhi\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fhoorayman\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F73151874?v=4\" width=\"80px\" alt=\"hoorayman\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>hoorayman\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Focass-chen\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F172055494?v=4\" width=\"80px\" alt=\"ocass-chen\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>ocass-chen\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FAnxForever\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130662349?v=4\" width=\"80px\" alt=\"AnxForever\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>AnxForever\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyujiewanwan\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F268286250?v=4\" width=\"80px\" alt=\"yujiewanwan\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>yujiewanwan\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flxm\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1918195?v=4\" width=\"80px\" alt=\"lxm\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>lxm\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" valign=\"top\" width=\"12.5%\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsusunola\">\n        \u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F38539169?v=4\" width=\"80px\" alt=\"susunola\" \u002F>\n        \u003Cbr \u002F>\u003Csub>\u003Cb>susunola\u003C\u002Fb>\u003C\u002Fsub>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\u003C!-- readme: contributors -end -->\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fastaxie\u002FTokenHub\u002Fgraphs\u002Fcontributors\">View all contributors\u003C\u002Fa>\n  ·\n  \u003Ca href=\"CONTRIBUTING.md\">Start contributing\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=astaxie%2Ftokenhub&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=astaxie\u002Ftokenhub&type=date&theme=dark&legend=top-left&sealed_token=hWH3kDnssTf49CCLxzq3NVqEp0WTL-HFhsdpQJJz1DUuZt0D-nu1jgXLnhCxrUrMYujv6IJJk12B1wCp5qiU2bU_J03ECSYvb3Y9Pv-gqX7RuwS4SehRrQ\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=astaxie\u002Ftokenhub&type=date&legend=top-left&sealed_token=hWH3kDnssTf49CCLxzq3NVqEp0WTL-HFhsdpQJJz1DUuZt0D-nu1jgXLnhCxrUrMYujv6IJJk12B1wCp5qiU2bU_J03ECSYvb3Y9Pv-gqX7RuwS4SehRrQ\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=astaxie\u002Ftokenhub&type=date&legend=top-left&sealed_token=hWH3kDnssTf49CCLxzq3NVqEp0WTL-HFhsdpQJJz1DUuZt0D-nu1jgXLnhCxrUrMYujv6IJJk12B1wCp5qiU2bU_J03ECSYvb3Y9Pv-gqX7RuwS4SehRrQ\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\nTokenHub is licensed under the [Apache License 2.0](LICENSE).\n","TokenHub 是一款面向企业的私有 AI 模型统一接入与治理网关，用于集中管理对多种大模型服务（如 OpenAI、Anthropic、Gemini、Qwen、DeepSeek 及本地模型）的访问。其核心功能包括：OpenAI\u002FAnthropic 兼容 API 代理、多租户项目隔离、细粒度 API 密钥管控、请求路由策略、用量审计与成本归因、RBAC 权限体系及全链路调用追踪。基于 Go 开发，支持 Docker Compose 一键部署，适配企业内网环境与混合模型架构场景，适用于需合规管控 AI 调用、统一计费审计与降低多模型集成复杂度的中大型组织。",2,"trending"]