AIProxy is a Windows-first Rust workspace for connecting coding CLIs to multiple LLM providers through shared local adapters, proxy layers, and launch flows.
The project is under heavy development. The long-term goal is broader than any single provider or client: AIProxy is intended to bridge multiple model providers, using API keys or other authentication methods, to multiple coding-focused CLIs. The first implementation milestone is intentionally narrower and currently focuses on Claude Code launched through a local Anthropic-compatible proxy backed by OpenAI credentials and the experimental Codex auth path.
Coding CLIs tend to be tightly coupled to one provider, one auth model, or one launch flow. AIProxy exists to create a reusable local bridge that can:
- connect multiple coding CLIs to multiple LLM providers
- support different authentication strategies behind a shared local interface
- centralize profile, model, and launch configuration
- reduce manual per-project setup where a CLI already supports proxy or settings-based integration
- keep experimental provider or auth work isolated from supported paths
- Development stage: pre-release, actively changing, open to contributions
- Product direction: multi-provider and multi-coding-CLI
- Primary implementation today: Claude Code plus OpenAI-backed models
- Experimental implementation today: Codex or ChatGPT auth cache parsing from disk
- Primary platform: Windows-first
- Main interfaces: CLI and Tauri desktop app
- Stability: architecture is intentional, public interfaces are not yet stable
The project is completely open for contributions! As the core maintainer, my current immediate focus areas (from most to least urgent) are:
- Proxy & Launcher Stability: Hardening the Anthropic-compatible proxy translation layer and the Claude Code launch flow so connections are rock-solid and don't drop during generation.
- Credential & Config Safety: Ensuring API keys and experimental auth caches (Codex/ChatGPT) are resolved cleanly and stored securely via the keyring.
- Cross-Platform Foundation: Easing the 'Windows-first' limitation to ensure seamless setups on macOS and Linux.
- Desktop UX Polish: Refining the Tauri dashboard interfaces without violating the thin-UI boundary (keeping heavy logic in Rust).
- Extension Groundwork: Laying the architecture for multiple LLM providers and coding CLIs.
If you are looking to contribute, feel free to tackle any of these areas, or pick up something from our Roadmap!
- Create and manage AIProxy profiles
- Store and resolve OpenAI API keys
- Inspect experimental Codex
auth.jsoncache state - Run environment and profile diagnostics with
doctor - Start a local Anthropic-compatible proxy for Claude Code
- Launch Claude Code against that local proxy
- Install optional local Claude settings into
.claude/settings.local.json - Edit profiles and launch/session settings from the desktop app
- support more than one LLM provider
- support more than one coding CLI
- keep provider-specific and client-specific integrations behind explicit boundaries
- allow API-based and non-API-based auth flows where technically and legally appropriate
That broader direction should not be read as meaning those integrations are already implemented.
apps/cli:aiproxyCLI entrypointapps/desktop: React frontend for the desktop appapps/desktop/src-tauri: Tauri host and desktop command layercrates/core: shared domain models, validation, doctor types, runtime paths, helper tokenscrates/config: config loading and persistencecrates/credentials: keyring-backed secrets and experimental Codex auth cache parsingcrates/backend-openai: OpenAI-backed adaptercrates/backend-codex-experimental: isolated experimental backend boundarycrates/proxy-anthropic: Anthropic-compatible proxy and Claude launcherdocs/adr: architecture decision records
- AIProxy loads a profile from
config.toml. - The selected credential source is resolved.
- AIProxy starts a local proxy on the profile port.
- Claude Code is launched with temporary settings and environment variables pointing to that proxy.
- Claude requests are translated through the local bridge to the selected backend adapter.
More detail lives in ARCHITECTURE.md.
- Windows with Rust toolchain installed
claudeavailable onPATHfor the current launcher-driven Claude flow- Node.js and npm for the desktop frontend
- An OpenAI API key for the supported auth path in the current milestone
Initialize the default config:
cargo run -p aicliproxy-cli -- initStore an API key for the default profile:
cargo run -p aicliproxy-cli -- auth set-api-key --profile default --value <OPENAI_API_KEY>Check the environment and profile setup:
cargo run -p aicliproxy-cli -- doctor --all-profilesLaunch Claude Code through AIProxy:
cargo run -p aicliproxy-cli -- claude launch --profile defaultaiproxy initaiproxy doctoraiproxy profile addaiproxy profile set-modelsaiproxy profile set-aliasaiproxy profile listaiproxy settings showaiproxy settings set-launchaiproxy auth set-api-keyaiproxy auth clear-api-keyaiproxy auth use-codex-experimentalaiproxy auth helper-tokenaiproxy proxy startaiproxy claude launchaiproxy claude install-localaiproxy logs
The desktop app is not just a placeholder shell. It already includes panels for:
- profile editing
- doctor diagnostics
- Claude launch flow
- runtime inspection
- session settings
The desktop frontend lives in apps/desktop, and the Tauri host lives in apps/desktop/src-tauri.
Rust workspace checks:
cargo fmt --all
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-featuresDesktop frontend:
cd apps/desktop
npm install
npm run tauri:dev- ARCHITECTURE.md: system shape, current milestone, and extension boundaries
- docs/adr/0001-auth-and-launcher-boundaries.md: current auth and launcher decisions
- CONTRIBUTING.md: contribution workflow and expectations
- CODE_OF_CONDUCT.md: community standards
- SECURITY.md: security reporting guidance
- SUPPORT.md: how to ask for help
- ROADMAP.md: near-term direction and milestone framing
Contributions are welcome. The most useful contributions right now are:
- bug fixes and diagnostics improvements
- launcher and proxy hardening
- tests around config, credentials, and wire compatibility
- desktop UX improvements that do not break backend boundaries
- documentation corrections when behavior changes
- groundwork that helps future provider or coding-CLI integrations without overgeneralizing too early
Start with CONTRIBUTING.md.
- The repository is open to external contributions while still changing quickly.
- Maintainers may prefer small, reviewable pull requests over broad refactors.
- Experimental auth work must remain isolated and documented.
- Documentation updates are expected when auth, launcher behavior, shared config, or proxy wire contracts change.
- Broader multi-provider and multi-client goals should be described clearly, but documentation must still distinguish future direction from implemented behavior.
This repository is licensed under GPL-3.0-only. See LICENSE.