Login
Browser (recommended):Authentication timed out after 120 seconds — on a headless box, or where a host firewall or an endpoint agent blocks loopback connections, use the API-key form below instead.
API key — for CI/CD or headless environments:
~/.unbound/config.json.
Logout
CLI status
unbound doctor.
unbound status --json returns the same information for scripts: config_file, logged_in, email, organization, role, backend_url, frontend_url, gateway_url, api_status, and connected_tools[] carrying tool, label, mode and status per entry. Three more fields carry warnings the on-screen report prints only when they fire, so in JSON they are always there to test:
The last two are also what make
unbound doctor exit non-zero with every tool reported healthy.
Device identity
unbound login, unbound status and unbound doctor send this machine’s serial number so the device is attributed to you. sudo unbound onboard attributes the scan to the device’s owner instead, so an admin running it across a fleet does not end up owning every machine.
The serial is cached at ~/.unbound/identity.json, which the installed hooks share, so one machine reports one identity. Clone a machine or a VM image and every copy reports as the same device — delete that file on the copy and run any of the three commands to re-read it.
The serial number is the only hardware detail sent. Where a machine has none that can be read, a stable machine identifier is used instead, and where neither is available nothing identifying the hardware is sent. Run any of the three commands with UNBOUND_DEBUG=1 to see which was used.
Role access
Admin, Analytics Viewer, and Member are assigned roles. Unbound grants Manager access when at least one user reports to that person.
Tenant / Custom Domains
If your organization runs Unbound on its own hosts — for exampleapi.acme.com instead of api.getunbound.ai — pass all three URLs at login. They persist to ~/.unbound/config.json:

