You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,12 +11,12 @@
11
11
<ahref="https://github.com/automazeio/vibeproxy"><imgalt="Star this repo"src="https://img.shields.io/github/stars/automazeio/vibeproxy.svg?style=social&label=Star%20this%20repo&maxAge=60"style="max-width: 100%;"></a></p>
12
12
</p>
13
13
14
-
**Stop paying twice for AI.** VibeProxy is a beautiful native macOS menu bar app that lets you use your existing Claude Code, ChatGPT, and **Gemini** subscriptions with powerful AI coding tools like **[Factory Droids](https://app.factory.ai/r/FM8BJHFQ)** – no separate API keys required.
14
+
**Stop paying twice for AI.** VibeProxy is a beautiful native macOS menu bar app that lets you use your existing Claude Code, ChatGPT, **Gemini**, and **Qwen** subscriptions with powerful AI coding tools like **[Factory Droids](https://app.factory.ai/r/FM8BJHFQ)** – no separate API keys required.
15
15
16
16
Built on [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI), it handles OAuth authentication, token management, and API routing automatically. One click to authenticate, zero friction to code.
17
17
18
18
> [!IMPORTANT]
19
-
> **NEW: Gemini Support! 🎉** VibeProxy now supports Google's Gemini AI with full OAuth authentication. Connect your Google account and use Gemini with your favorite AI coding tools!
19
+
> **NEW: Gemini and Qwen Support! 🎉** VibeProxy now supports Google's Gemini AI and Qwen AI with full OAuth authentication. Connect your accounts and use Gemini and Qwen with your favorite AI coding tools!
20
20
21
21
> [!IMPORTANT]
22
22
> **NEW: Extended Thinking Support! 🧠** VibeProxy now supports Claude's extended thinking feature with dynamic budgets (4K, 10K, 32K tokens). Use model names like `claude-sonnet-4-5-20250929-thinking-10000` to enable extended thinking. See the [Factory Setup Guide](FACTORY_SETUP.md#step-3-configure-factory-cli) for details.
@@ -34,7 +34,7 @@ Built on [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI), it handles
34
34
35
35
- 🎯 **Native macOS Experience** - Clean, native SwiftUI interface that feels right at home on macOS
36
36
- 🚀 **One-Click Server Management** - Start/stop the proxy server from your menu bar
37
-
- 🔐 **OAuth Integration** - Authenticate with Codex, Claude Code, and Gemini directly from the app
37
+
- 🔐 **OAuth Integration** - Authenticate with Codex, Claude Code, Gemini, and Qwen directly from the app
38
38
- 📊 **Real-Time Status** - Live connection status and automatic credential detection
39
39
- 🔄 **Auto-Updates** - Monitors auth files and updates UI in real-time
40
40
- 🎨 **Beautiful Icons** - Custom icons with dark mode support
@@ -65,7 +65,7 @@ Want to build it yourself? See [**INSTALLATION.md**](INSTALLATION.md) for detail
65
65
1. Launch VibeProxy - you'll see a menu bar icon
66
66
2. Click the icon and select "Open Settings"
67
67
3. The server will start automatically
68
-
4. Click "Connect" for Claude Code, Codex, or Gemini to authenticate
68
+
4. Click "Connect" for Claude Code, Codex, Gemini, or Qwen to authenticate
69
69
70
70
### Authentication
71
71
@@ -106,7 +106,8 @@ VibeProxy/
106
106
│ ├── icon-inactive.png # Menu bar icon (inactive)
.help("⚠️ Note: If you're an existing Gemini user with multiple projects, authentication will use your default project. Set your desired project as default in Google AI Studio before connecting.")
self.authResultMessage ="✓ Qwen authenticated successfully!\n\nPlease complete the authentication in your browser, then the app will automatically submit your email and detect your credentials."
491
+
self.showingAuthResult =true
492
+
// File monitor will automatically update the status
493
+
}else{
494
+
self.authResultSuccess =false
495
+
self.authResultMessage ="Authentication failed. Please check if the browser opened and try again.\n\nDetails: \(output.isEmpty ?"No output from authentication process": output)"
496
+
self.showingAuthResult =true
497
+
}
498
+
}
499
+
}
500
+
}
501
+
502
+
privatefunc disconnectQwen(){
503
+
isAuthenticatingQwen =true
504
+
performDisconnect(for:"qwen", serviceName:"Qwen"){ success, message in
0 commit comments