Use your OAuth subscriptions or API keys in any coding agent, Factory Droid, Cursor, and more. Tunnel Agent handles provider authentication and routes requests through CLIProxyAPI or 9Router.
29
stars
552
commits
C#
primary language
Sep 7, 2026
updated
Desktop UI for CLIProxyAPI, Perplexity WebUI Scraper, and 9Router. Manage OAuth providers, API keys, and Perplexity session accounts, then point any coding agent at the local endpoint.
One click to connect. Works with whatever you already have.
Download · Issues · TODO · Contributing
[!WARNING] This app has only been tested on Windows. It may require changes to work correctly on Linux or macOS. Contributions to add full support for both platforms are very welcome.
/v1/models, and cache the last working route for a configurable duration| Home (usage dashboard) | Providers (CLIProxyAPI) |
|---|---|
![]() | ![]() |
| Providers (Perplexity) | Quota |
|---|---|
![]() | ![]() |
| Agents | Model Fallback |
|---|---|
![]() | ![]() |
| Configuration | Logs |
|---|---|
![]() | ![]() |
CLIProxyAPI remains the main unified OpenAI-compatible local proxy for OAuth and upstream providers. Tunnel Agent lets you:
Tunnel Agent now includes first-class support for the Perplexity WebUI Scraper engine. You can:
9Router is a third OpenAI-compatible local engine. Tunnel Agent installs it from the npm registry (a tarball, not GitHub release binaries) and requires Node.js 18+ on the machine. You can:
http://127.0.0.1:20128/v1 using TUNNEL_AGENT_9ROUTER_API_KEY| Provider | Auth method |
|---|---|
| Claude (Anthropic) | OAuth |
| Gemini CLI (Google) | OAuth |
| OpenAI Codex | OAuth |
| Kimi (Moonshot) | OAuth |
| Antigravity | OAuth |
| xAI (Grok) | OAuth |
| Perplexity | WebUI session token |
| Custom OpenAI-compatible | API key + base URL |
| IDE | Description |
|---|---|
| Cursor | Auto-detected when installed and logged in |
| Kiro | Auto-detected when installed and logged in |
| Trae | Auto-detected when installed and logged in |
[!NOTE] These IDEs are only used for quota usage monitoring. They cannot be used as providers for the proxy.
| Agent | Config method |
|---|---|
| Claude Code | ~/.claude/settings.json |
| Codex CLI | ~/.codex/config.toml + auth.json |
| OpenCode | ~/.config/opencode/opencode.json |
| Pi | ~/.pi/agent/models.json |
| Oh My Pi (OMP) | ~/.omp/agent/models.yml |
| Factory Droid | ~/.factory/settings.json |
| Grok Build | ~/.grok/config.toml |
The interface is fully localized with runtime language switching (Configuration → General → Language). Use System default to follow the current OS language, or pick a specific locale to keep a manual override.
| Language | Locale |
|---|---|
| System default | null |
| English | en-US |
| Español | es-ES |
| Português | pt-PT |
| Italiano | it-IT |
| Français | fr-FR |
| Deutsch | de-DE |
| 简体中文 | zh-CN |
| 日本語 | ja-JP |
| العربية | ar-SA |
| Українська | uk-UA |
| Русский | ru-RU |
| हिन्दी | hi-IN |
| 한국어 | ko-KR |
| Türkçe | tr-TR |
[!NOTE] Translations live in
src/TunnelAgent.Avalonia/Resources/Strings*.resx, one file per locale (e.g.Strings.es-ES.resx), withStrings.resxas the English base. To fix or improve a translation, edit the<value>text for the matching key in that locale's file (keep thenamekeys and any{0}placeholders unchanged) and open a PR. To add a new language, copyStrings.resxtoStrings.<locale>.resx, translate the values, and register the locale inLocalizationService.cs.
Installer (recommended): download TunnelAgent-x.y.z-win-Setup.exe from the latest release and run it. Updates are applied automatically in the background.
Portable: download TunnelAgent-x.y.z-win-x64-portable.zip, extract it, and run TunnelAgent.exe. No installation required.
Scoop:
scoop bucket add villoh https://github.com/Villoh/scoop-bucket
scoop install tunnel-agent
Requirements: Windows 10 or later. 9Router also needs Node.js 18+ on PATH.
http://127.0.0.1:8317/v1 for CLIProxyAPI, http://127.0.0.1:8327/v1 for Perplexity, http://127.0.0.1:20128/v1 for 9Router) and configure it manually.Requirements: .NET SDK 10.0.203+
Clone and run:
git clone https://github.com/Villoh/tunnel-agent.git
cd tunnel-agent
dotnet restore
dotnet run --project src/TunnelAgent.Avalonia/TunnelAgent.Avalonia.csproj
If the app is already running, stop it before rebuilding; Windows locks
TunnelAgent.exewhile it is open.
Contributions are welcome. See CONTRIBUTING.md for guidelines.
To report a vulnerability, see SECURITY.md. Do not open a public issue.
MIT License, see LICENSE for details.
C#
100.0%
Use your OAuth subscriptions or API keys in any coding agent, Factory Droid, Cursor, and more. Tunnel Agent handles provider authentication and routes requests through CLIProxyAPI or 9Router.
29
stars
552
commits
C#
primary language
Sep 7, 2026
updated
Desktop UI for CLIProxyAPI, Perplexity WebUI Scraper, and 9Router. Manage OAuth providers, API keys, and Perplexity session accounts, then point any coding agent at the local endpoint.
One click to connect. Works with whatever you already have.
Download · Issues · TODO · Contributing
[!WARNING] This app has only been tested on Windows. It may require changes to work correctly on Linux or macOS. Contributions to add full support for both platforms are very welcome.
/v1/models, and cache the last working route for a configurable duration| Home (usage dashboard) | Providers (CLIProxyAPI) |
|---|---|
![]() | ![]() |
| Providers (Perplexity) | Quota |
|---|---|
![]() | ![]() |
| Agents | Model Fallback |
|---|---|
![]() | ![]() |
| Configuration | Logs |
|---|---|
![]() | ![]() |
CLIProxyAPI remains the main unified OpenAI-compatible local proxy for OAuth and upstream providers. Tunnel Agent lets you:
Tunnel Agent now includes first-class support for the Perplexity WebUI Scraper engine. You can:
9Router is a third OpenAI-compatible local engine. Tunnel Agent installs it from the npm registry (a tarball, not GitHub release binaries) and requires Node.js 18+ on the machine. You can:
http://127.0.0.1:20128/v1 using TUNNEL_AGENT_9ROUTER_API_KEY| Provider | Auth method |
|---|---|
| Claude (Anthropic) | OAuth |
| Gemini CLI (Google) | OAuth |
| OpenAI Codex | OAuth |
| Kimi (Moonshot) | OAuth |
| Antigravity | OAuth |
| xAI (Grok) | OAuth |
| Perplexity | WebUI session token |
| Custom OpenAI-compatible | API key + base URL |
| IDE | Description |
|---|---|
| Cursor | Auto-detected when installed and logged in |
| Kiro | Auto-detected when installed and logged in |
| Trae | Auto-detected when installed and logged in |
[!NOTE] These IDEs are only used for quota usage monitoring. They cannot be used as providers for the proxy.
| Agent | Config method |
|---|---|
| Claude Code | ~/.claude/settings.json |
| Codex CLI | ~/.codex/config.toml + auth.json |
| OpenCode | ~/.config/opencode/opencode.json |
| Pi | ~/.pi/agent/models.json |
| Oh My Pi (OMP) | ~/.omp/agent/models.yml |
| Factory Droid | ~/.factory/settings.json |
| Grok Build | ~/.grok/config.toml |
The interface is fully localized with runtime language switching (Configuration → General → Language). Use System default to follow the current OS language, or pick a specific locale to keep a manual override.
| Language | Locale |
|---|---|
| System default | null |
| English | en-US |
| Español | es-ES |
| Português | pt-PT |
| Italiano | it-IT |
| Français | fr-FR |
| Deutsch | de-DE |
| 简体中文 | zh-CN |
| 日本語 | ja-JP |
| العربية | ar-SA |
| Українська | uk-UA |
| Русский | ru-RU |
| हिन्दी | hi-IN |
| 한국어 | ko-KR |
| Türkçe | tr-TR |
[!NOTE] Translations live in
src/TunnelAgent.Avalonia/Resources/Strings*.resx, one file per locale (e.g.Strings.es-ES.resx), withStrings.resxas the English base. To fix or improve a translation, edit the<value>text for the matching key in that locale's file (keep thenamekeys and any{0}placeholders unchanged) and open a PR. To add a new language, copyStrings.resxtoStrings.<locale>.resx, translate the values, and register the locale inLocalizationService.cs.
Installer (recommended): download TunnelAgent-x.y.z-win-Setup.exe from the latest release and run it. Updates are applied automatically in the background.
Portable: download TunnelAgent-x.y.z-win-x64-portable.zip, extract it, and run TunnelAgent.exe. No installation required.
Scoop:
scoop bucket add villoh https://github.com/Villoh/scoop-bucket
scoop install tunnel-agent
Requirements: Windows 10 or later. 9Router also needs Node.js 18+ on PATH.
http://127.0.0.1:8317/v1 for CLIProxyAPI, http://127.0.0.1:8327/v1 for Perplexity, http://127.0.0.1:20128/v1 for 9Router) and configure it manually.Requirements: .NET SDK 10.0.203+
Clone and run:
git clone https://github.com/Villoh/tunnel-agent.git
cd tunnel-agent
dotnet restore
dotnet run --project src/TunnelAgent.Avalonia/TunnelAgent.Avalonia.csproj
If the app is already running, stop it before rebuilding; Windows locks
TunnelAgent.exewhile it is open.
Contributions are welcome. See CONTRIBUTING.md for guidelines.
To report a vulnerability, see SECURITY.md. Do not open a public issue.
MIT License, see LICENSE for details.
C#
100.0%