What the front door asks for
What the served web app asks a browser for is a pure function of the server’s own state — there is nothing to configure:
A browser is never asked to paste a machine credential.
ohd show-token
still exists, and it is not part of this flow — see
Tokens & pairing.
Claim it from the server’s own machine
Start the daemon, then open it on the box that runs it:Claim it from anywhere else
From any other machine the card also asks for a setup code. The daemon prints it at boot:ohd status repeats it, with the URLs a browser can actually reach:
4kfp 9qw2 xm31 claims the same
server. The code is minted per run and never written to disk, so a
restart replaces it and a successful claim retires it. A stale code is
refused with the byte-identical answer a wrong one gets, and the
refusal cannot tell you which it was: if the daemon has restarted since
you copied the code, read the current one from ohd status.
Claiming a headless server
Most servers have no browser on them. Two ways in, in order of preference:-
Forward loopback over SSH.
Then open
http://127.0.0.1:8137/on your own machine. The daemon sees a loopback peer and the browser sees a secure origin, so this needs no setup code, no TLS, and no reverse proxy. -
Put a TLS reverse proxy in front first, then claim at
https://<your-host>/with the setup code — see LAN vs TLS proxy.
http://<server>:8137/ cannot claim the server at
all: browsers withhold crypto.subtle on non-loopback HTTP origins, so
the web app loads and then refuses to start. That is a browser rule and
it binds the web app only — the extension, desktop app and CLI reach
ws://<server>:8137 from anywhere on the network.
What the claim does
In one transaction, against a directory it re-checks is empty:- Creates the user and sets its password.
- Grants it owner on every workspace the server holds.
- Gives it the server-admin role, so it reaches the admin console (Users, seats & SSO).
- Revokes every unbound token — see below.
- Signs the new administrator in, with a session valid for 30 days.
The claim unpairs bootstrap devices
A token minted withohd show-token and not bound to a user acts as
the server operator — full administrative power. Leaving those
alive past a claim would be a standing way around the administrator you
just created, so the claim revokes all of them and disconnects whatever
was using them. The setup screen reports how many devices it unpaired;
pair them again from the admin console under Paired devices.
Tokens bound to a directory user (ohd show-token --user <id-or-email>)
are unaffected.
After the claim
- The setup screen is gone for good. Every later browser is asked to sign in, and a second claim is refused.
-
Further accounts come from the admin console (Settings → Backends →
Open admin console), from
ohd user addwith the daemon stopped, or from an identity provider — see Users, seats & SSO. -
There is no self-service password reset. If the first
administrator’s password is lost, reset it on the server:
-
If every administrator is gone,
ohd user set-admin <id-or-email>(daemon stopped) is the offline recovery hatch.
Next
- Clients join with tokens minted from the console: Tokens & pairing.
- Named users, grants and SSO: Users, seats & SSO.