Multi CLI Studio is a Tauri desktop workspace for people who do not want to be locked into a single AI coding CLI or a single model vendor.
Instead of forcing one tool to do everything, it gives you one local desktop surface for:
Codex,Claude, andGeminiCLI workflows- unified platform account management for
API Providers,Codex,Gemini, andKiro - provider-based model chat for
OpenAI-compatible,Claude, andGemini - local automation jobs and workflows
- shared local state across terminal, chat, and automation
Most AI coding tools assume one model, one CLI, one workflow.
That is not how real work behaves:
- one CLI may be better at edits, another at planning, another at UI or long-context work
- comparing outputs across agents is often safer than trusting a single tool path
- context gets fragmented when terminal, chat, and automation live in different apps
- local project state matters, but most tools do not coordinate around it
Multi CLI Studio is built around a different assumption:
cross-CLI orchestration is the product, not an add-on
- Keep project context in one place while switching between different AI execution styles
- Use CLI-native agent workflows and provider-based chat side by side
- Turn repeated tasks into local automation instead of re-prompting from scratch
- Keep runtime state local with desktop-native storage and tooling
- Windows desktop: primary packaged target with release workflow for installer output
- macOS desktop: supported through the Tauri desktop stack and local build flow
- Linux desktop: supported for local development and local builds, including Fedora; GitHub Releases now also publish a Fedora RPM artifact
- unified desktop surface for
Codex,Claude, andGemini - persistent sessions and chat-like execution history
- streaming output rendered directly into the UI
- slash commands for model, permissions, effort, plan mode, context, and session controls
- integrated git side panel to keep working-tree changes visible during execution
- provider-backed chat for
OpenAI-compatible,Claude, andGemini - per-turn model switching inside the same conversation thread
- local provider management with editable API key, base URL, enable state, and model catalog
- useful for side-by-side comparison, quick iteration, and non-CLI model usage
- unified platform center for
API Providers,Codex,Gemini, andKiro - OAuth, manual import, local account import, account export, and current-account switching
- Codex provider quick-switch, Gemini account injection, and Kiro credits/account views
- desktop-side global proxy and per-platform quota auto-refresh settings
- automation jobs with execution summaries, state, and logs
- workflow editor and workflow run canvas for multi-step flows
- repeatable local orchestration for AI-assisted tasks
- local-first storage with SQLite and JSON
- Tauri 2 desktop runtime with Rust backend and React frontend
- CLI and local resource detection in Settings
- release workflow and version sync tooling already wired into the repo
- workspace snapshot with project root, dirty files, checks, events, and traffic
- primary multi-CLI execution page
- combines conversation history, prompt bar, streaming output, slash commands, and git changes
- dedicated provider-based conversation page
- keeps one thread while letting users switch model/provider selection turn by turn
- overview hub for API providers plus
Codex,Gemini, andKiroaccount centers - manage provider credentials, platform accounts, local instances, and refresh behavior
- jobs, workflow lists, workflow editor, run details, and execution logs
- inspect installed CLIs, local runtime resources, proxy / refresh settings, and environment-related state
- React 19
- TypeScript
- Vite 7
- React Router DOM 7
- Zustand
- Tailwind CSS 4
- Monaco Editor
- ECharts
- react-markdown + remark-gfm
- Rust 1.88
- Tauri 2
- rusqlite
- serde / serde_json
- chrono / uuid
- reqwest
- lettre
- cron
multi-cli-studio/
├─ src/
│ ├─ components/
│ │ ├─ chat/
│ │ └─ modelProviders/
│ ├─ layouts/
│ ├─ lib/
│ └─ pages/
│ ├─ DashboardPage.tsx
│ ├─ TerminalPage.tsx
│ ├─ ModelChatPage.tsx
│ ├─ ModelProvidersPage.tsx
│ ├─ ModelProviderEditorPage.tsx
│ ├─ AutomationJobsPage.tsx
│ ├─ AutomationWorkflowsPage.tsx
│ ├─ AutomationWorkflowEditorPage.tsx
│ ├─ AutomationJobEditorPage.tsx
│ └─ SettingsPage.tsx
├─ src-tauri/
│ ├─ src/
│ │ ├─ main.rs
│ │ ├─ automation.rs
│ │ ├─ storage.rs
│ │ └─ acp.rs
│ ├─ tauri.conf.json
│ └─ Cargo.toml
├─ docs/
│ └─ screenshots/
├─ scripts/
│ ├─ run-tauri.mjs
│ └─ sync-version.mjs
├─ .github/
│ └─ workflows/
│ └─ release-desktop.yml
├─ README.md
├─ README.zh-CN.md
└─ package.json
- Node.js 20+
- Rust 1.88+ (a current stable toolchain is fine)
- Fedora system packages required by Tauri 2:
sudo dnf install webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-devel \
libxdo-devel
sudo dnf group install "c-development"- Windows: MSVC build tools
- macOS: Xcode Command Line Tools
@tauri-apps/cli is already included as a local dev dependency, so you do not need a separate global Tauri CLI install for npm run tauri:dev.
npm installIf Rust is not installed yet, install a stable toolchain with rustup before running the desktop app.
npm run devnpm run tauri:devnpm run build
npm run tauri:buildnpm run dev: start Vite dev servernpm run build: type-check and build frontendnpm run preview: preview the built frontendnpm run tauri:dev: run the Tauri desktop app in developmentnpm run tauri:build: build desktop bundlesnpm run tauri:android: run Android flow through the wrapper scriptnpm run version:sync -- <version>: syncpackage.json,Cargo.toml, andtauri.conf.jsonnpm run version:check -- <version>: verify version metadata alignment
Recommended:
https://generativelanguage.googleapis.com
Also valid:
https://generativelanguage.googleapis.com/v1beta
Do not put models/...:streamGenerateContent or ?key=... into the base URL field.
The desktop Gemini OAuth flow no longer ships client credentials in the repository. Set these environment variables before launching the app:
export MULTI_CLI_STUDIO_GEMINI_OAUTH_CLIENT_ID="your-google-oauth-client-id"
export MULTI_CLI_STUDIO_GEMINI_OAUTH_CLIENT_SECRET="your-google-oauth-client-secret"If you do not want to manage OAuth client credentials, use local account import from ~/.gemini/oauth_creds.json or one of the API-key based Gemini modes instead.
Application data is stored in local app-data directories:
- Windows:
%LOCALAPPDATA%\multi-cli-studio - Linux:
~/.local/share/multi-cli-studio - macOS:
~/Library/Application Support/multi-cli-studio
Common files:
terminal-state.dbsession.jsonautomation-jobs.jsonautomation-runs.jsonautomation-rules.json
The repo already includes a desktop release workflow:
.github/workflows/release-desktop.yml
It synchronizes version metadata, builds the desktop release artifacts, and uploads the macOS DMGs, Windows installer, Fedora RPMs, and latest.json update feed to GitHub Releases.
The current distribution flow is intentionally low-cost:
- It does not rely on Apple Developer ID or notarization.
- macOS builds use ad-hoc signing, so first launch may require manually allowing the app in
Privacy & Security. - In-app updates currently target the macOS and Windows release artifacts; Fedora RPMs are published as manual download assets.
- In-app updates still require a real Tauri updater keypair: put the public key in
src-tauri/tauri.conf.jsonand configure the private key in GitHub Actions secrets.
This fork also keeps the checked-in updater feed aligned with the current GitHub repository, and the release setup/check scripts now recognize GitHub SSH aliases such as git@github_alias:owner/repo.git.
Full setup and release steps:
- This repository continues from Austin-Patrician/multi-cli-studio, which was originally published under MIT.
- Platform account-management direction, release-facing presentation choices, and licensing language were also informed by jlcodes99/cockpit-tools.
- Thanks to Austin-Patrician for publishing the original
multi-cli-studiocodebase. - Thanks to jlcodes99 for openly sharing
cockpit-toolsand the surrounding product ideas. - Thanks to everyone on LinuxDo for the discussion, feedback, and testing support.
This repository defaults to CC BY-NC-SA 4.0.
- Allowed: personal learning, research, and non-commercial use or modification, with attribution and share-alike obligations.
- Not allowed: commercial use without separate written authorization, including internal business use, paid services, paid integrations, or resale.
- Commercial license: contact the current maintainer for separate written authorization and pricing.
- The upstream MIT notice for inherited portions from
Austin-Patrician/multi-cli-studiois preserved in LICENSE.
Additional provenance and attribution details are in NOTICE.md.
Finally,Thanks to everyone on LinuxDo for their support! Welcome to join https://linux.do/ for all kinds of technical exchanges, cutting-edge AI information, and AI experience sharing, all on Linuxdo!






