Set up your coding tools
npx uberllm init
The command finds the coding tools on your machine and sets each one up to use UberLLM. You need Node.js 18 or later. Nothing else is installed.
What happens when you run it:
- It lists the tools it found.
- Your browser opens. Sign in (or create an account) and press Connect. This makes an API key for this machine.
- The key is saved to
~/.uberllm/key, a file only you can read. - Each tool's own config file is changed to use UberLLM. A copy of every file is saved first.
- It checks that the key works and tells you what to restart.
Running it again changes nothing if everything is already set up.
See the changes first
npx uberllm init --dry-run
This prints each file it would change and the lines it would add. It does not open the browser and does not write anything.
What each tool gets
| Tool | File it changes | How the tool reads your key |
|---|---|---|
| Claude Code | ~/.claude/settings.json |
apiKeyHelper reads ~/.uberllm/key |
| Codex CLI | ~/.codex/config.toml |
the provider's auth command reads ~/.uberllm/key |
| OpenCode | ~/.config/opencode/opencode.json |
{file:~/.uberllm/key} |
| Kilo Code | ~/.config/kilo/kilo.jsonc |
the UBERLLM_API_KEY variable |
| Goose | ~/.config/goose/custom_providers/uberllm.json |
the UBERLLM_API_KEY variable |
| Aider | ~/.aider.conf.yml, ~/.aider.model.settings.yml |
a private env file in ~/.uberllm |
| Continue | ~/.continue/config.yaml |
~/.continue/.env (Continue's own secrets file) |
Kilo Code and Goose only read a key from the environment. For them, one line is
added to your shell profile (~/.zshrc, ~/.bashrc or fish). That line reads the
key file; the key itself is not written into the profile. On Windows the command
prints that one step for you to do instead.
Claude Code keeps asking for its own Claude models. The other tools get a default model: the first coding model on the model list that is taking requests when you run the command. To choose it yourself:
npx uberllm init --model deepseek/deepseek-v4.1-flash
Tools that are set up inside the app
Cursor, Cline and Roo Code keep these settings inside the editor, not in a file a command can change. For them the command prints the three steps to follow, with the address and model id filled in. See Cursor, Cline and Roo Code.
Gemini CLI only talks to servers that speak Google's Gemini API, which UberLLM
does not serve. To use Gemini models through UberLLM, set up OpenCode or Codex
with a Gemini model id: npx uberllm init --tool opencode --model <id>.
Options
| Option | What it does |
|---|---|
--tool <names> |
Only these tools, comma separated: claude-code, codex, opencode, kilo-code, goose, aider, continue, cursor, cline, roo-code, gemini-cli. Also sets up a tool that was not found. |
--project [dir] |
Only this project (default: the current folder). |
--model <id> |
The default model to set. |
--key <key> |
Use this key and skip the browser. |
--relink |
Get a new key in the browser, even if one is saved or set. |
--dry-run |
Show what would change. Change nothing. |
--undo |
Put everything back. |
Which key is used: --key if you pass it, then the key already saved in
~/.uberllm, then UBERLLM_API_KEY from the environment, then the browser.
One project only
cd my-project
npx uberllm init --project
Only that folder runs on UberLLM; your other projects are unchanged. This works
for the tools that have a per-project config: Claude Code
(.claude/settings.local.json), OpenCode (opencode.json) and Aider
(.aider.conf.yml). No key is written into the project folder. Codex CLI, Kilo
Code, Goose and Continue are set up per machine, so they are skipped here.
On Windows, Claude Code is not set up per project, because that would put the
key in the project folder. Run the command without --project there.
Undo
npx uberllm init --undo
- A file you have not touched since is put back exactly as it was. A file the command created is removed.
- A file you have edited since keeps your edits. Only what the command added is
taken out, and the settings it replaced are put back. The copy from before the
command ran stays in
~/.uberllm/backups/. - The saved key file is removed if this command created it and no tool it set up still uses it. A key file from the Claude Code installer is left in place. To switch the key off as well, delete it on your keys page.
Undo one tool with --undo --tool codex, or one project with
--undo --project. Kilo Code and Goose share the line in your shell profile, so
it stays until both are undone.
Where things are kept
| Path | What it is |
|---|---|
~/.uberllm/key |
Your key. Only you can read it (mode 600). |
~/.uberllm/backups/ |
A copy of each file from before it was changed. |
~/.uberllm/init.json |
The list of files the command changed, used by --undo. |
The key is sent to api.uberllm.dev and nowhere else. It is never printed.
When a file is left alone
The command does not rewrite a file it could damage. It tells you and prints the steps to do by hand. This happens when:
- a JSON config has comments (
opencode.jsonc,kilo.jsonc), because a rewrite would lose them; - a JSON config cannot be read;
- Continue's
models:is written on one line; - with
--project, a config file is a link to a file outside the project.
The tool is then listed as "not set up yet" at the end of the run.
Troubleshooting
| What you see | What to do |
|---|---|
No supported coding tool was found |
Install the tool first, or name it: npx uberllm init --tool codex. |
The gateway did not accept the key |
Run npx uberllm init --relink to get a new key. |
| A tool still uses its old provider | Restart it. For Kilo Code and Goose, open a new terminal first so the new variable is loaded. |
ANTHROPIC_API_KEY is set in your shell |
Claude Code uses that variable before the saved key. Remove it from your shell profile. |
402 when a tool sends a request |
Add credit on the credits page. |