Troubleshooting
Fix common OpenLLM problems with your vault, devices and daemon, provider sign-in, clients and API requests, using the exact messages the app shows.
Find the message you see, then follow What to do. Headings quote the app's wording, so you can search this page for it. For API error types, see Errors.
Collect details
Run these on the machine with the problem before you change anything.
-
Check the daemon:
openllm statusIt shows whether the service is registered and running, a live status check, and the file paths it uses.
-
Run the diagnostics. Without flags this changes nothing:
openllm doctorTo remove leftover install files and managed config regions, run
openllm doctor --fix. Your own settings in those files are kept. To add an AI diagnosis, runopenllm doctor --ai; it sends the redacted report and recent daemon logs through your gateway. -
Read the daemon logs:
openllmd logs -n 200 openllmd logs -fThe files are in
~/.openllm:openllmd.log, plusopenllmd.out.logandopenllmd.err.logfrom the service. On Linux with the systemd user service,openllmd logsreads the journal instead. -
Check the configuration the CLI resolved:
openllm config --json -
If support asks for a diagnostic report, run
openllm doctor report. It asks the daemon to upload its sanitized diagnostic events, not raw logs. Preview the export first withopenllm doctor report --dry-run.
For a failed API request, keep the response headers. x-openllm-chain and x-openllm-resolved-model show which models were tried, and a 500 carries a reference id in x-openllm-error-ref.
Vault
Vault locked
What you see: Vault locked or Locked to your vault on a device ("Unlock vault to connect to this device"), or Your vault is locked on a key.
Cause: your vault is locked in this browser. The app needs it unlocked to read your API keys and to open channels to devices that only accept vault-signed channels. Nothing is wrong with the device or the key. Requests that tools send with an sk-llm- key keep working.
What to do
- Select Unlock vault and enter your PIN, or use your passkey.
- To change how long the vault stays unlocked, see Security.
This key belongs to a previous vault
What you see: This key belongs to a previous vault, or Old key on a device. Requests with the key fail with 401 auth_error "Not authenticated".
Cause: the key was created under an older recovery phrase. After a vault reset, nothing can decrypt it, so every request made with it is rejected.
What to do
- On Devices & keys, select Create a new key. Your vault must be unlocked.
- Give the new key to every tool that used the old one. On a machine with the daemon, run
openllm loginand paste it. - Delete the old key.
See Reset your vault for what a reset changes.
This browser's vault copy is out of date
What you see: This browser's vault copy is out of date, or Old browser.
Cause: your vault was reset in another browser, and this browser still holds the old copy. Your keys and devices are untouched.
What to do
- Select Enter recovery phrase and enter your 12-word recovery phrase. This fixes the whole browser at once.
Couldn't decrypt this key
What you see: Couldn’t decrypt this key.
Cause: either the key predates your current recovery phrase, or this browser holds an out-of-date vault copy. The app can't tell which yet.
What to do
- Unlock with your recovery phrase.
- If the key still fails, replace it as in This key belongs to a previous vault.
Devices & daemon
Device offline
What you see: This device is offline, or Offline in the device picker ("No daemon is running on that machine right now").
Cause: no daemon has checked in from that machine recently. The machine may be asleep, or the daemon stopped.
What to do
- On that machine, run
openllm status. - If the daemon isn't running, run
openllm start. - If it is running but stays offline, read
openllmd logs -n 200for connection errors.
The device comes back on its own once the daemon reconnects. See Devices.
Sessions off
What you see: Remote sessions are off, or Sessions off ("Run "openllmd sessions on" on that machine").
Cause: the machine can host device chat, but remote terminal sessions are off. They are off after a plain curl install and when the Mac app connects the machine. Add a device turns them on unless you switch Remote terminal off.
What to do
-
On that machine, run:
openllmd sessions onIf the device still shows Sessions off, run
openllm restartthere. A running daemon can keep its old setting. -
Or run
openllm login --pty-sessionsthere. It asks for your API key again, saves the key and the setting together, and restarts a running daemon. -
Or turn on Remote terminal and re-pair the device.
Seed gate pending
What you see: Seed gate pending, or Seed gate ("The daemon hasn't picked up its device access yet").
Cause: device access is provisioned, but the daemon hasn't loaded it yet.
What to do
- Wait. It resolves on its next bootstrap.
- To speed it up, run
openllm restarton that machine.
Daemon identity changed
What you see: Daemon identity changed, or Reset identity ("The daemon key changed; reset its cloud identity before using RTC").
Cause: the daemon on that machine has a new identity key that doesn't match the one pinned to its API key, so direct connections fail.
What to do
- On Devices & keys, select Reset daemon identity for that device.
- Wait for the daemon's next status update; it re-registers on its own.
Not secured
What you see: Not secured yet, or Not secured ("This device isn't bound to your recovery phrase yet").
Cause: the device works, but it isn't bound to your recovery phrase. Once secured, only an unlocked vault can open channels to it.
What to do
- Unlock your vault, then select Secure device on Devices & keys.
You're using all your devices
What you see: You're using all your devices ("… devices connected at once — run openllmd stop on one to free a slot"). The daemon on the new machine gets 403 device_limit_exceeded.
Cause: your plan's limit on devices connected at the same time is reached. Only running daemons count.
What to do
- On a machine you aren't using, run
openllm stop(oropenllmd stop). Unpairing doesn't free a slot; stopping the daemon does. - The waiting daemon connects on its own once a slot frees.
- For more devices, see Device limits.
Connection issue
What you see: Connection issue ("The browser couldn't open a channel to that machine").
Cause: the machine is online, but this browser couldn't reach it directly or through the relay. The device still serves API requests.
What to do
- Try again in a moment.
- If it persists, check the network between the browser and the machine, and read
openllmd logson the machine.
Providers & sign-in
A provider sign-in fails
What you see on Providers or during onboarding, and what to do:
| Message | What to do |
|---|---|
| This client needs a runtime the daemon can't find (often Node.js for an npm install). Install the native client, then try again. | Install the vendor's native client, then select Connect again. |
| The vendor client isn't available on this device. Install it, then try Connect again. | Install the vendor CLI on that machine, then select Connect again. |
| Not signed in on this device. Connect to sign in again. | Select Connect, or run openllm auth login <provider> on the machine. |
| Couldn't unlock the secure store for this sign-in. Try Connect again. | Select Connect again. |
| Couldn't read the local credential store for this sign-in. Try Connect again. | Select Connect again. |
| The daemon couldn't confirm this sign-in in time. Try Connect again. | Select Connect again. |
| The daemon couldn't confirm this sign-in. Try Connect again. | Select Connect again. |
To sign in from the terminal instead, list the providers and their login methods, then start the login. Use --method device on a machine without a browser, if the provider offers it.
openllm auth providers
openllm auth login claude_code
openllm auth status claude_codeStarting a login is not the same as signing in; check openllm auth status afterward. See Subscriptions.
Subscription models fail from the hosted gateway
What you see: 403 subscription_requires_daemon with "This chain resolves only to subscription providers … no online device of yours can serve them".
Cause: subscription models run only on your devices, and no online device is signed in to that provider.
What to do
- Start the daemon on a machine signed in to the provider:
openllm start. - Check the sign-in with
openllm auth status. - Or add an API-key model to the chain in Configuration. See Routing.
For local models the type is local_requires_daemon. See Errors.
Clients
openllm: command not found
Cause: the install couldn't add openllm to your PATH, or your shell hasn't reloaded.
What to do
- Run
~/.openllm/bin/openllm setup. - Open a new terminal.
A client uses the hosted gateway instead of the daemon
Cause: the CLI uses the local daemon only when it answers on OPENLLM_DAEMON_PORT; otherwise it uses the hosted gateway. A set OPENLLM_GATEWAY overrides this.
What to do
- Run
openllm statusand start the daemon if needed. - Check
openllm config --jsonfor the port, and unsetOPENLLM_GATEWAYin your shell.
Leftover config after uninstalling or moving
What to do
- Run
openllm doctorto list leftovers, thenopenllm doctor --fixto remove the ones OpenLLM owns.
See Clients for per-client common problems.
API requests
401 "Not authenticated"
Cause: the key is missing, mistyped, deleted, or from a previous vault.
What to do
- Send
Authorization: Bearer sk-llm-…orx-api-key: sk-llm-…. See Authentication. - Check the key still exists on Devices & keys. If it's an old key, see This key belongs to a previous vault.
You've used your free tokens this month
What you see: You've used your free tokens this month ("… monthly tokens used — your free budget resets on …"), or 402 free_tier_exhausted from the API. At 80% the app warns first: You've used …% of your free tokens.
Cause: your Free plan has used its monthly tokens.
What to do
- Wait for the reset on the 1st of the month (UTC), or upgrade to Pro in Settings → Billing. See Monthly tokens.
500 with a reference id
What you see: 500 internal with "Internal server error (ref: …)".
What to do
- Retry once. If it repeats, send the reference id to support as below.
Still stuck
Contact support with:
- what you did and what you expected,
- the exact message, or the API error
type, - the error reference id from
x-openllm-error-refor the message, if you have one, - the output of
openllm statusandopenllm doctor.
Email [email protected], or ask in the community Discord. Discord is public, so don't post keys, recovery phrases, or logs that contain them.
Last updated on
Errors
Every OpenLLM API error type, such as free_tier_exhausted or subscription_requires_daemon, with its HTTP status, cause, and what to do about it.
FAQ
Answers to common questions about OpenLLM: how it differs from OpenRouter, using your Claude or ChatGPT plan, privacy, devices, recovery, and getting help.