Quounter is a cross-platform desktop application for managing multiple AI coding assistant accounts, tracking quota usage, and proxying requests across providers. Built with Tauri 2.x, React, and Rust.
- Real-time quota tracking for all connected AI providers
- Persistent request history with unlimited storage
- Export/Import request logs for backup and analysis
- Account sorting by name with visual quota indicators
- Quota aggregation with customizable display modes (used/remaining)
- Automatic quota detection for
.quota_outand.disabledaccounts
- Multiple routing strategies: Round-robin, random, quota-based, sticky session
- Automatic failover when quota is exceeded
- Retry mechanism with configurable intervals
- Streaming support with keepalive and bootstrap retries
- Upstream proxy support (HTTP/HTTPS/SOCKS5)
Supports authentication for:
- ✅ Gemini CLI (OAuth)
- ✅ Claude (OAuth)
- ✅ Codex/OpenAI (OAuth)
- ✅ GitHub Copilot (Device code flow)
- ✅ Antigravity (OAuth)
- 🔜 Qwen (OAuth - coming soon)
- 🔜 iFlow (OAuth - coming soon)
- 🔜 Kiro (Multiple auth methods - coming soon)
- Auto-detection of installed AI coding agents (Cursor, Windsurf, Trae, etc.)
- One-click configuration for detected agents
- Custom agent support with manual configuration
- API key management for agent authentication
- Dark mode interface optimized for developers
- System tray integration with quick access menu
- Consistent design across all 10 screens
- Real-time updates with auto-refresh
- Privacy mode to hide sensitive information
- Track quota usage from IDE accounts
- No proxy server needed
- Perfect for monitoring Cursor/Windsurf usage
- Run a local proxy server (default port: 8318)
- Route requests through multiple accounts
- Automatic quota-based failover
- Configure CLI agents automatically
- Connect to self-hosted CLIProxyAPI server
- Share accounts across machines
- Centralized management
Dashboard - Overview of all providers and quota status
Quota Screen - Detailed quota tracking by provider
Accounts Screen - Manage authentication files
CLI Agents - Auto-detect and configure AI coding tools
Logs Screen - Request history with export/import
- Node.js v18+ - Download
- Rust (latest stable) - Install via rustup
- npm (comes with Node.js)
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelfmacOS
xcode-select --installWindows
- Install Microsoft Visual Studio C++ Build Tools
- Install WebView2 (pre-installed on Windows 10/11)
# Clone the repository
git clone https://github.com/bigidulka/quounter.git
cd quounter
# Install dependencies
npm install
# Run in development mode
npm run tauri:dev
# Build for production
npm run tauri:buildDownload the latest release from GitHub Releases:
- Linux (Debian/Ubuntu):
Quounter_1.0.0_amd64.deb(8.9 MB) - Linux (Fedora/RHEL):
Quounter-1.0.0-1.x86_64.rpm(8.9 MB) - Linux (Universal):
Quounter_1.0.0_amd64.AppImage(79 MB)
- Launch Quounter - The app will start in "Monitor Only" mode by default
- Choose Operating Mode - Go to Settings → Operating Mode
- Monitor Only: Track quotas without running a proxy
- Local Proxy: Run a local proxy server for routing requests
- Remote Proxy: Connect to a remote server (experimental)
- Add Accounts - Navigate to Accounts screen
- Click "Scan Local Files" to auto-detect accounts from IDEs
- Or manually authenticate via OAuth for each provider
Accounts Screen provides:
- List of all authenticated accounts by provider
- Enable/disable accounts with toggle
- Mark accounts as "quota_out" to exclude from routing
- Delete accounts when no longer needed
- Real-time quota status indicators
Agents Screen features:
- Auto-detection of installed AI coding agents
- One-click configuration for:
- Cursor
- Windsurf
- Trae
- Custom agents
- View current configuration
- Reconfigure when needed
Logs Screen offers two tabs:
Requests Tab:
- View all proxied requests with full details
- Filter by provider, model, or search text
- Export history to JSON for backup
- Import previously exported logs
- Statistics: total requests, success rate, token usage
- Persistent storage - unlimited request history
Proxy Logs Tab:
- Real-time proxy server logs
- Filter by log level (info, warn, error, debug)
- Auto-refresh with pause/resume
- Search through logs
Strategy Screen allows configuration of:
Routing Strategy:
- Round-robin: Distribute requests evenly
- Random: Random account selection
- Quota-based: Prefer accounts with higher quota
- Sticky session: Use same account for a session
Quota Exceeded Behavior:
- Switch to different project
- Switch to preview model
- Retry with different account
Request Retry:
- Configurable retry count (0-10)
- Max retry interval (1-120 seconds)
Streaming Options:
- Keepalive interval (0-60 seconds)
- Bootstrap retries (0-10)
Upstream Proxy:
- Route through HTTP/HTTPS/SOCKS5 proxy
- Test connection before applying
- View latency and status
API Keys Screen:
- Generate secure API keys for agent authentication
- View, copy, edit, or delete keys
- Keys are required for proxy server requests
- Auto-generate random keys with one click
Models Screen:
- View all available models from connected providers
- Enable/disable models for routing
- Drag to reorder model priority
- Search and filter by provider or model name
Virtual Models Screen:
- Create virtual model endpoints
- Aggregate multiple provider models
- Custom routing per virtual model
- Test virtual model configurations
Settings Screen includes:
Operating Mode:
- Choose between Monitor, Local Proxy, or Remote Proxy
- View features for each mode
- Switch modes (requires proxy restart)
Local Proxy Server:
- View proxy status and port
- Configure management key
- Copy proxy URL for agent configuration
Remote Proxy Server:
- Add remote server connection
- Test connection before saving
- View connection status
Upstream Proxy:
- Configure HTTP/HTTPS/SOCKS5 proxy
- Test connection with latency display
Logging:
- Enable/disable file logging
- Enable request log for debugging
- Enable debug mode for verbose output
Privacy:
- Hide sensitive information (emails, account names)
System:
- Launch at login (autostart)
- Auto-start proxy server on launch
Notifications:
- Enable desktop notifications
- Low quota alerts with threshold
- Cooling period notifications
- Proxy crash alerts
Frontend:
- React 19.1
- TypeScript 5.8
- Tailwind CSS 3.4
- Zustand (state management)
- Lucide React (icons)
- @tanstack/react-virtual (virtualization)
- @dnd-kit (drag & drop)
Backend:
- Rust (stable)
- Tauri 2.x
- tokio (async runtime)
- serde (serialization)
- reqwest (HTTP client)
quounter/
├── src/ # React frontend
│ ├── components/ # Reusable UI components
│ ├── lib/ # Stores, API, utilities
│ ├── screens/ # Main application screens
│ └── main.tsx # App entry point
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── services/ # Core services
│ │ │ ├── quota_fetchers/ # Provider quota fetchers
│ │ │ ├── auth_service.rs # Authentication
│ │ │ ├── proxy_manager.rs # Proxy lifecycle
│ │ │ └── agent_detection.rs # CLI agent detection
│ │ ├── models/ # Data models
│ │ └── lib.rs # Tauri commands
│ └── Cargo.toml
├── screenshots/ # App screenshots
├── CLIProxyDocs.md # CLIProxy API documentation
└── README.md
The app uses Zustand for state management with persistence:
- useAppStore: Global app state, proxy status
- useQuotaStore: Quota data, refresh logic
- useAccountsStore: Account management
- useSettingsStore: User preferences, operating mode
- useLogsStore: Request history, proxy logs
- useModelsStore: Available models, ordering
- useAgentsStore: Detected CLI agents
- useAuthFileManager: Auth file operations
72 Tauri commands expose Rust functionality to the frontend:
Proxy Management:
start_proxy,stop_proxy,toggle_proxyget_proxy_status,restart_proxyis_binary_installed,download_binary,update_binary
Authentication:
authenticate,start_oauth,get_oauth_statussubmit_oauth_callback,authenticate_kirofetch_auth_files,delete_auth_file,toggle_auth_file
Quota Management:
fetch_direct_quotas,fetch_usage_statsset_auth_file_quota_out
Configuration:
set_routing_strategy,get_routing_strategyget_fallback_config,set_fallback_configfetch_api_keys,add_api_key,delete_api_key,update_api_key
Logging:
fetch_logs,clear_logs,set_debug_modefetch_request_history,clear_request_history
CLI Agents:
detect_agents,configure_agent
Virtual Models:
get_virtual_models,set_virtual_models_enabled
# Frontend type checking
npm run build
# Backend compilation
cd src-tauri && cargo build# Build all platform bundles
npm run tauri:build
# Outputs:
# - Linux: .deb, .rpm, .AppImage
# - macOS: .dmg, .app
# - Windows: .msi, .exeThe project follows strict UI consistency standards documented in STYLE_AUDIT.md:
- Buttons:
bg-blue-600 hover:bg-blue-500 rounded-lg px-3 py-2 text-sm - Headers:
flex items-center justify-between mb-6 - Typography: Consistent text sizes and colors
- Spacing: Standardized margins and gaps
| Platform | Build | Run | Notes |
|---|---|---|---|
| Linux (x86_64) | ✅ | ✅ | Tested on Ubuntu |
| Linux (ARM64) | ⬜ | ⬜ | Not tested |
| macOS (Intel) | ⬜ | ⬜ | Not tested |
| macOS (Apple M1/M2) | ⬜ | ⬜ | Not tested |
| Windows 10 | ⬜ | ⬜ | Not tested |
| Windows 11 | ⬜ | ⬜ | Not tested |
| Provider | Auth | Quota | Notes |
|---|---|---|---|
| Gemini CLI | ✅ | ✅ | OAuth flow |
| Claude | ✅ | ✅ | OAuth flow |
| Codex (OpenAI) | ✅ | ✅ | OAuth flow |
| GitHub Copilot | ✅ | ✅ | Device code flow |
| Antigravity | ✅ | ✅ | OAuth flow |
| Qwen | 🔜 | 🔜 | Coming soon |
| iFlow | 🔜 | 🔜 | Coming soon |
| Kiro | 🔜 | 🔜 | Multiple auth methods |
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow the established code style (see
STYLE_AUDIT.md) - Ensure TypeScript and Rust code compiles without errors
- Test your changes thoroughly
- Commit with descriptive messages
- Push to your fork and submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Tauri - Rust-powered desktop app framework
- UI powered by React and Tailwind CSS
- Icons from Lucide
- Inspired by the need for better AI coding assistant account management
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See
CLIProxyDocs.mdfor CLIProxy API details
- Complete Qwen provider integration
- Complete iFlow provider integration
- Complete Kiro provider integration
- Virtual Models functionality
- macOS and Windows builds
- Auto-update mechanism
- Plugin system for custom providers
- Multi-language support
- Advanced analytics dashboard
- Cloud sync for settings
Made with ❤️ by the Quounter Team