NewHow we catch a seller listing the wrong model, and refund you if one does.
UberLLM

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:

  1. It lists the tools it found.
  2. Your browser opens. Sign in (or create an account) and press Connect. This makes an API key for this machine.
  3. The key is saved to ~/.uberllm/key, a file only you can read.
  4. Each tool's own config file is changed to use UberLLM. A copy of every file is saved first.
  5. 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.