Skip to content

Troubleshooting

Start with:

Terminal window
rb doctor

It prints the client version, the API address in use, where credentials live, whether you are signed in, and whether the API answered — which is enough to tell an installation problem from an authentication problem from an outage. It needs no sign-in and never disturbs your stored credentials.

pipx installed the client but its binary directory is not on your PATH.

Terminal window
pipx ensurepath

Then open a new terminal, or source ~/.zshrc / source ~/.bashrc. On macOS the binary lands in ~/.local/bin; check with echo $PATH.

Every command says it cannot reach the API

Section titled “Every command says it cannot reach the API”

Usually the API address, not your network. The release currently on PyPI defaults to an address that no longer resolves.

Terminal window
export RB_API_URL=https://api.razorbridge.eu/v1
rb doctor

Add the export to your shell profile. If rb doctor still cannot reach the API, check whether a proxy or campus firewall is in the way — any HTTP response at all, including a 401, counts as reachable.

WARNING: Token file … has permissions …

Section titled “WARNING: Token file … has permissions …”
Terminal window
chmod 600 ~/.config/rb/token

The client refuses to be quiet about a credentials file others can read.

Access tokens last an hour and normally refresh themselves; a refresh can fail if you have been away for more than 30 days or your sessions were revoked.

Terminal window
rb auth login

rb auth login prints the URL and the code before trying to open anything. Copy the URL to a browser — including a browser on a different machine — and type the code there. Nothing about approval requires the browser to be on the same host as the CLI.

Device code expired or the CLI gave up waiting

Section titled “Device code expired or the CLI gave up waiting”

The code is valid for 15 minutes and the CLI waits 5. Both mean the same fix: run rb auth login again and approve it promptly.

Sign-in start is limited to 10 attempts per hour from one IP address — easy to hit from a shared campus address during a workshop. Wait, then try again; the limit is a rolling hour.

Codes are eight characters and case-insensitive on entry. Code already used means that code has been redeemed; start a new rb auth login.

Nothing is provisioned for you yet.

  • In an event? Blades are created shortly before the event’s start time — about 30 minutes ahead — not when you join. The CLI names your next event and its start time when it can. rb event info <slug> shows the same.
  • On your own? Start a session in the web app under GPU Sessions; the CLI cannot start one.

The blade exists but is not finished. Wait a minute or two and check:

Terminal window
rb blade status

Connect once the status is running. pending and provisioning both mean not yet.

Connection refused, or SSH hangs, on a running blade

Section titled “Connection refused, or SSH hangs, on a running blade”

The machine is up but its SSH service may still be starting. Wait 30 seconds and retry. If it persists, re-fetch the credentials — rb blade ssh gets fresh ones every time, and a replaced blade has different ones:

Terminal window
rb blade status
rb blade ssh

A blade that fails a health check mid-event is terminated and replaced. The replacement has a new IP, port and password, and an empty disk.

That is expected: blade access is password-based. rb blade ssh, rb run and rb blade scp supply the password automatically if sshpass is installed, and otherwise print it for you to paste. Install sshpass for a fully non-interactive flow. An SSH config block from rb blade config will always prompt, because your SSH client asks, not the CLI.

VS Code or another editor cannot find the blade

Section titled “VS Code or another editor cannot find the blade”
Terminal window
rb blade config

Copy the printed Host block into ~/.ssh/config — the command prints, it does not write the file. Then use Remote-SSH: Connect to Host and pick the rb-… alias. Re-run it after a blade is replaced: the host and password will have changed.

scp and rsync are not native. Install WSL and work from the WSL terminal, where rb blade scp and plain scp both work. The OpenSSH optional feature in Windows also provides scp.

Terminal window
rb credits
  • In an event? The organizer’s account pays for event blades, so this is about your own sessions or inference calls. Ask your organizer for a key or a session rather than credit.
  • On your own? Credit is granted on request — email hello@razorbridge.eu. There is no self-serve purchase yet.

An inference call with no balance returns 402 immediately rather than running.

Starting a session is refused with an amount

Section titled “Starting a session is refused with an amount”

The check is up front and for the whole duration you asked for, not for a minute of it. Choose a shorter duration, a cheaper GPU, or top up.

A new account may run two self-serve blades at once. Stop one, or ask for the limit to be raised.

This session would exceed your … monthly spend cap

Section titled “This session would exceed your … monthly spend cap”

A new account is capped at €50 of spend per calendar month. The message names the cap and how much of it you have used. Ask KlusAI to raise it — for a course, do this before the term starts.

A session stopped before its duration was up

Section titled “A session stopped before its duration was up”

Two possibilities, both deliberate: its accrued cost reached your available balance, or someone chose Stop. Nothing else stops a running blade early — idleness in particular does not.

Self-serve GPU sessions are temporarily paused for maintenance

Section titled “Self-serve GPU sessions are temporarily paused for maintenance”

New sessions are being refused on purpose while something is fixed. Blades already running are unaffected. Try again shortly.

The code did not match. Codes are four letters, a hyphen and four digits (ABCD-1234) and are not case-sensitive, so it is normally a transcription slip or a code from a different environment. Check it with your organizer.

Registration closed, Event is full, Already registered

Section titled “Registration closed, Event is full, Already registered”

In order: the event has ended or is in a state that no longer accepts registrations; the participant cap is reached — the organizer must raise it by creating capacity, since the cap is not editable; or you are already on the roster and can go straight to rb blade list.

rb event info ABCD-1234 says the event does not exist

Section titled “rb event info ABCD-1234 says the event does not exist”

That command wants the event slug, not the join code, despite what its help says. Get the slug from rb event list.

The event start time passed and nothing was provisioned

Section titled “The event start time passed and nothing was provisioned”

Check its status on the event page or with rb event info <slug>:

  • Awaiting approval — the chosen GPU was unavailable and only a more expensive option would work, so razorBridge is waiting rather than overspending. The offer expires after about an hour.
  • Expired — that offer was not answered in time. Nothing was charged and nothing was provisioned.
  • Failed — the organizing account could not cover the estimated cost, or no capacity could be found at all.

All three are organizer problems, and the first two are avoided by funding the account with headroom above the estimate.

It is not wired up yet. Extend through the API instead — see Run an event.

The models endpoint authenticates with an inference gate key, but the CLI sends your login session. Use the curl form in Inference gates.

Check which credential you sent. /gate/chat/completions and /gate/models want a gate key beginning rb-gate-; everything else wants the session token. Also check the key has not been revoked: rb gate keys list shows only active keys.

Model '…' not allowed for this key (403)

Section titled “Model '…' not allowed for this key (403)”

The key was created with a restricted model list. Use an allowed model, or create a key without restrictions.

That key has spent its lifetime cap. Create another, or ask for the cap to be raised.

  • Re-run rb doctor, and rb --verbose <command> to see the HTTP exchange.
  • For anything about a specific event — a missing blade, a code that will not work, a session that ended early — your organizer can see more than you can.
  • For platform problems, email hello@razorbridge.eu.