Home / Getting started

Getting started

Install Claude Dialects, create your first command, and run the real Claude Code interface with the model you choose.

Requirements

Claude Dialects builds a single static executable from source. Before you begin, make sure you have:

  • macOS or Linux, on amd64 or arm64 — the current target platforms
  • Go 1.26.9 or newer — to build from source
  • Claude Code — available as claude on your PATH
  • Node.js 22.13+ and npm (optional) — required only for Cursor and GitHub Copilot SDK dialects

The dashboard frontend is embedded in the executable. Running it, make build, and make install do not require Node.js; contributors need a package-compatible Node.js release when rebuilding dashboard source.

⚠ Independent project

This is an unofficial project — not affiliated with or endorsed by Anthropic, OpenAI, Google, Moonshot AI, Z.ai, xAI, Cursor, GitHub, Microsoft, MiniMax, DeepSeek, or the CLIProxyAPI maintainers. Product and company names are trademarks of their respective owners. You are responsible for complying with each provider's terms and usage policies. Read full legal & notices →

macOS & Linux only

Windows builds are not supported. Everyone builds cc-dialect from source — there are no prebuilt releases.

Linux support is new and not yet fully verified in day-to-day use. CI builds and runs the full test suite natively on Ubuntu (amd64); linux/arm64 is cross-compiled and vetted but never executed by a runner. Provider OAuth flows and the Cursor and GitHub Copilot bridges have not been exercised on Linux. macOS is unaffected — please open an issue for anything that misbehaves.

Install Claude Dialects

Clone the repository, build, and install the cc-dialect manager to ~/.local/bin:

Install from source
git clone https://github.com/stefandevo/claude-dialects.git
cd claude-dialects
make install
export PATH="$HOME/.local/bin:$PATH"

# Persist PATH — Zsh (macOS default) or Bash (most Linux distributions)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

This produces one static executable at ~/.local/bin/cc-dialect. There are no prebuilt binaries or GitHub releases — everyone builds from the checked-out source.

To update later, run cc-dialect upgrade — it fetches the latest source into a temporary directory, rebuilds, atomically replaces the installed binary, and finishes with cc-dialect doctor --fix to restart stale proxies and bridge runtimes. It needs the same git and Go toolchain as the install; the original clone is not required.

ℹ No global config changes

Claude Dialects does not modify ~/.claude/settings.json. The embedded CLIProxyAPI is linked into the executable — no separate proxy download, container, or global configuration required.

Create your first dialect

Let's create an OpenAI Codex dialect using the codex-sol preset (GPT-6 Sol as the main and subagent model, Luna on haiku):

OpenAI Codex · codex-sol preset
cc-dialect create cc-codex --preset codex-sol
cc-dialect auth cc-codex codex
cc-dialect shim install cc-codex
cc-codex

For preset-based routes, create prints the remaining setup steps in the correct order. An arbitrary custom model ID cannot determine its provider automatically, so you must supply and follow the appropriate authentication or token route yourself. OAuth dialects will not launch or list models before authentication — if you skip auth, the error includes the exact command to run.

Inside Claude Code you can switch models and effort live:

/model opus    # → gpt-6-sol
/model sonnet  # → gpt-6-sol
/model haiku   # → gpt-6-luna
/effort high

The four-step workflow

Every dialect follows the same rhythm, regardless of provider:

1

Create isolated configuration

cc-dialect create cc-name --preset preset-name

Records the dialect configuration and reserves checked proxy and bridge ports. It does not start the runtime yet.

2

Authenticate with the provider

cc-dialect auth cc-name provider or export an API key env var.

Provider authentication or the first proxy start creates the per-instance proxy.yaml. Embedded OAuth files are per dialect; Cursor or Copilot may instead use shared environment or system credentials. Local proxy keys and runtime state remain isolated.

3

Install the shell command

cc-dialect shim install cc-name

Creates an executable shim in ~/.local/bin that launches Claude Code with dialect-specific environment variables.

4

Run from any directory

cc-name

The first run creates the private claude/ directory and starts the embedded proxy automatically. The proxy remains available for later sessions until explicitly stopped. Pass Claude Code arguments normally: cc-codex --permission-mode plan

Naming convention

Use the cc-<provider> naming convention for generated commands. It makes dialects easy to recognize and avoids collisions with existing provider CLIs such as gemini or cursor.

Provider Preset Auth Command
OpenAI Codexcodex-solChatGPT OAuthcc-codex
Moonshot KimikimiKimi OAuthcc-kimi
Google GeminigeminiGoogle OAuthcc-gemini
xAI GrokgrokxAI OAuthcc-grok
Cursorcursor-composerCursor API keycc-cursor
GitHub Copilotcopilot-autoCopilot logincc-copilot
Z.ai GLMglmZAI_API_KEYcc-glm
Anthropic ClaudeclaudeAnthropic OAuthcc-claude

See the full Providers guide for complete setup blocks for each route.

Run several dialects

Each dialect gets checked high-numbered localhost ports, a private local proxy key and runtime state, and its own Claude Code state. Provider credentials remain route-dependent. Create as many as you need:

Parallel dialects
cc-dialect create cc-codex-work --preset codex
cc-dialect auth cc-codex-work codex
cc-dialect shim install cc-codex-work

cc-dialect create cc-kimi-work --preset kimi
cc-dialect auth cc-kimi-work kimi
cc-dialect shim install cc-kimi-work

# Each gets its own port, local proxy state, and history
cc-codex-work    # embedded proxy :43170
cc-kimi-work     # embedded proxy :43171

Ports are actively checked and allocated per dialect starting at :43170. A port already bound by any process is skipped during creation and rejected again at startup.

Every dialect also gets a generated statusline that names the dialect — e.g. cc-codex · GPT-6 Sol · effort:auto · ctx 42% — with the name colored per provider route, so parallel terminals are easy to tell apart. cc-dialect create writes instances/<name>/statusline.sh and wires it into the dialect's isolated claude/settings.json; older dialects are backfilled the next time they run. The script uses jq — preinstalled on recent macOS, usually an explicit install on Linux — and stays empty when it is missing. To customize, point the statusLine key in that settings.json at your own script — a user-set statusLine is never overwritten. To remove it, delete the statusLine key; it is never re-added once the generated script exists.

Because that settings.json is isolated, an opt-out in your global ~/.claude never reaches a dialect — so every dialect is also seeded with "attribution": {"commit": "", "pr": ""}, which keeps the Co-Authored-By: Claude trailer out of commits and the attribution block out of pull request bodies. It is only written when the dialect has no attribution preference of its own, so a value you set is never overwritten; to bring the trailer back, set an explicit value rather than deleting the key. Existing dialects are updated the next time they run, or all at once with cc-dialect doctor --fix, which cc-dialect upgrade invokes for you.

Mix providers in one session

A single dialect can hold OAuth credentials for several providers at once, so each model tier can point at a different provider. The mixed-frontier preset runs Claude Fable 5.1 as the main model and maps opus to GPT-6 Sol, sonnet to Kimi K3, and haiku to Grok 4.7 — one Claude Code session whose agents run on different providers. Authenticate every provider into the same dialect:

Mixed-provider dialect
cc-dialect create cc-mixed --preset mixed-frontier
cc-dialect auth cc-mixed claude
cc-dialect auth cc-mixed codex
cc-dialect auth cc-mixed kimi
cc-dialect auth cc-mixed xai
cc-dialect shim install cc-mixed
cc-mixed

cc-mixed refuses to start until every tier's provider is authenticated, and cc-dialect doctor lists any provider still needing a login. See Mixed / multi-provider dialects for the full mapping table and provider terms.

Open the web dashboard

Manage configured dialects from the bundled localhost dashboard:

Launch the local dashboard
cc-dialect web

# Print the URL without opening a browser
cc-dialect web --no-browser

# Use a fixed numeric loopback address
cc-dialect web --listen 127.0.0.1:8765

The default is an available ephemeral port on 127.0.0.1. The command stays in the foreground; press Ctrl-C to stop it. Numeric loopback addresses are required — localhost, wildcard addresses, remote access, and reverse proxies are not supported.

The dashboard can inspect safe configuration views, create and update dialects, start or stop runtimes, manage tracked native launchers, and install or refresh the Cursor runtime. OAuth login, Copilot setup, logs, shims, and launching Claude Code sessions remain CLI workflows.

Next steps