Files
OpenResearch/ui
Daniel Kim f84bdf3b75 Catch "Permission denied (publickey)" before it costs a box (v0.1.78) (#119)
* feat: catch "Permission denied (publickey)" before it costs a box

orx shells out to ssh with no -i, so it authenticates with whatever the
local agent and ~/.ssh offer, while boxes authorize the keys registered
on the account. A key registered from another computer leaves the box
online but unreachable, and the user only finds out after paying to
provision it.

Compare the registered public keys against the locally-available ones at
login, before launch, and on a failed launch, and add `orx ssh-key
add|list` — the command the dashboard has always pointed at but which
never existed.

- login offers to register this computer's key ([Y/n], TTY-gated)
- preflight blocks when nothing is registered, warns when we can't find
  a local match (ssh can still succeed via an IdentityFile elsewhere)
- a publickey denial becomes one actionable line in `orx runs`
- the settings badge distinguishes "on this computer" from "registered
  elsewhere", which the old boolean could not

* fix: don't call the openresearch backend "Configured" without a usable key

The compute row keyed "configured" off being signed in, so it showed a
green badge on a backend that would refuse every connection — the same
gap the launch failure exposed, one screen earlier.

Gate it on holding a key the account has registered, and say which of
the two things is missing. Also run the check when openresearch is made
the default, since that's the moment the user is committing to it.

Unknown (api unreachable, ~/.ssh unreadable) counts as ready: we
couldn't tell, so don't cry wolf.

* fix: say "Unknown" when the readiness check couldn't run

Folding a failed check into "configured" put a green badge on a backend
we never verified; folding it into "not configured" would show alarm
whenever the api hiccups. Neither is true, so stop making the boolean
answer a question it has no data for.

Adds an optional `unverified` flag — absent for backends whose state is
decidable locally, so no other row changes.

* fix: name the key file we found instead of guessing one

The compute row told everyone to run `orx ssh-key add
~/.ssh/id_ed25519.pub` — a path that doesn't exist on a machine whose
key is named anything else, so the fix led to a second error.

The readiness check already resolves the real file via preferred_local;
carry it through instead of discarding it. Split the keyless case out,
since `ssh-key add` alone can't help there, and surface the Unknown
reason so that state stops being a dead end.

* chore: v0.1.78

* fix: stop guessing ~/.ssh/id_ed25519.pub in the skill, notes and run failure

Same bug as the compute row, in three more places. The skill was the
worst of them: an agent reads it and runs the literal command, so on any
machine whose key is named differently it fails with nothing to go on.

- skill: tell the agent to read the path from `orx ssh-key list` rather
  than handing it one, and cover the no-key-at-all case
- settings notes: use the .pub the check already found (new sshKeyPath
  in the payload), with separate copy when there's nothing to register
- run failure: point at `orx ssh-key list`; the supervisor can't see
  ~/.ssh, so it has no path to name
2026-07-24 16:58:21 -07:00
..
2026-07-06 20:05:41 -07:00
2026-07-06 20:05:41 -07:00
2026-07-06 20:05:41 -07:00