AgentSDEDocs
Open console

Devices & API keys

A device is a machine you pair with your workspace so agents can run on your own hardware · it is an ordinary API key with a fixed set of scopes, nothing more exotic than that. This page covers pairing a machine at /connect, reading the scope model that every key uses, and the difference between rotating a credential and revoking it.

7 min readUpdated 2026-08-12 · Priya NEdit this page

#What a device actually is

There is no special “daemon” credential type. When you pair a machine, AgentSDE mints a normal API key with a defined set of device scopes and hands it to the Connect daemon running on that box. The daemon holds that key the same way a CI script or a dashboard would · it just happens to also register as a self-hosted runner your agents can dispatch work to.

That is the one fact worth internalising · a device is an API key. It sits in the same table as every other key, carries the same lifecycle (rotate, revoke, expiry), and is bounded by the same workspace policies. The only extra is provenance: a paired machine shows a Device badge and is named device · <host> so you can tell at a glance which key belongs to which box.

Why this matters

Because a device is just a key, there is nothing per-device to configure. A machine acts as the workspace on that box · it can only touch the repositories the workspace already allows and is governed by the workspace’s own policies. There are no per-device permission switches, because the backend has none.

#Pair a machine at /connect

Pairing follows a device-code flow · you start it from a terminal on the machine, then approve it once in the browser. The machine never handles a password, and the code stays valid while you sign in.

1

Install the Connect daemon

Download and install the AgentSDE Connect daemon binary on the machine you want to pair. This is the small process that receives dispatched runs and executes phases using that box’s shell, toolchain and network.

2

Start the login flow

Run agentsde login on the machine (add --workspace <slug> to target a specific workspace). The daemon prints an 8-character device code like WXYZ-1234 and waits for approval.

3

Approve at /connect

Open /connect in your browser, enter the code, and pick which workspace the device runs for. The card shows the requesting machine · host, OS, IP, and the read-only What this device can do grant · so you can confirm you are approving the right box before you click Approve.

4

Land connected

The page confirms Device connected and the daemon starts taking work. Approving minted an API key named device · <host>, which now appears in both Settings → Runtime and Settings → API keys.

The /connect device authorization card: the requesting machine's host, OS, IP and age, a 'Run agents for' workspace picker, a read-only grant block listing what the device can do, and Deny / Approve buttons with a live request-expiry countdown.
`/connect` · approve the machine, choose the workspace it runs for, and see exactly what it can do before you approve.
agentsde loginOn the machine
Approve at /connectPick the workspace
Device connectedKey minted
Self-hosted runnerTakes dispatched work
The pairing flow · a terminal starts it, one browser approval finishes it, and the machine becomes a runner.
One device per workspace

A workspace pairs a single device · deliberately. Fleets need labels, slot counts and a scheduler the runtime does not have yet, so a roster UI would promise routing it cannot deliver. Pairing a new machine replaces the old one.

#What the grant allows

The What this device can do block on the approve card, and the matching disclosure in Settings → Runtime, are shown read-only on purpose · the same honesty rule as connected integrations, where access is fixed at grant time. Nothing in the list is a toggle.

A device canA device cannot
Run agent phases on that machine using its shell, toolchain and networkChange workspace settings, members or API keys
Clone and branch the repositories the workspace already allowsWiden its own access or add per-device permissions
Open pull requests and comment through the workspace’s connected integrationsReach any other workspace
Report logs, artefacts and token usage back to the workspacePersist anything outside the run once it is signed out

#Access is time-boxed

Device access lasts 90 days, then it asks again. When it lapses the daemon stops taking work and goes back to the start · run agentsde login on the same machine, get a fresh code, and approve it at the same /connect card. There is no separate re-authorise flow. A lapsed device is treated exactly like an offline one · your Settings → Runtime fallback (fall back to cloud, or pause) applies.

#API keys and scopes

Every key · device or not · uses one scope grammar: resource:action with an optional resource:action:subAction. A scope names a resource (like runs or repos), an action (read, write, destroy), and sometimes a finer sub-action (for example runs:write:approve for approving a merge). You do not usually type these by hand.

The picker is preset-first · you start from a named role that already carries a sensible scope set, and only drop into the individual scopes if you need to. Each choice renders a plain-language summary of what the key can do, so the grant reads in English before you create it.

PresetForIn short
Read-only observerDashboards, monitoring, reportingRead everything, change nothing
CI runnerStarting and steering runs from a pipelineRuns, but cannot approve its own merges or touch settings
Deploy botApproving and shipping runs into environmentsCan approve merges · grant carefully
Connect daemon · headlessA container or server that can’t open a browserThe same access a paired device gets
admin is a superscope, not select-all

The admin scope is deliberately outside the grammar. It is not the same as ticking every box · it bypasses every permission check and can do anything your account can, including managing members, billing and other keys. Grant it only when a machine genuinely needs to administer the workspace.

The Connect daemon · headless preset is the browser-less path to the same key a paired device gets · identical scopes, for a container or headless server that can’t complete the /connect approval. The only difference is that no machine registers as a device in Runtime.

Settings → API keys: a table of machine credentials, each row showing a name, key prefix, scope summary and last-used time, with Rotate and Revoke controls; device-minted keys carry a Device badge.
`Settings → API keys` · every credential in one table, with the reveal-once secret shown only at creation.

#Rotate vs revoke

Both actions end in a reveal-once secret · the full <prefix>.<secret> is shown a single time at creation and is never recoverable afterward. What differs is the intent.

RotateRevoke
Keeps the integrationYes · name, scopes and expiry copy acrossNo
The old secretRevoked atomically · no grace periodRevoked immediately
Clients using the old keyMust be handed the new secretGet 401 immediately, permanently
Use it whenThe secret leaked or is on a rotation schedule, but the integration staysYou are retiring the integration entirely

Rotate keeps the integration and swaps the credential. It mints a brand-new secret, carries the configuration over, and kills the current token in the same step · so anything still using the old secret stops working until you give it the new one.

Revoke kills the integration outright. Any client using the key immediately gets 401s, and there is no way back · you would create a new key from scratch.

Rotating or revoking a device signs the machine out

A device’s key is an ordinary key, so rotating or revoking it in Settings → API keys disconnects the machine · the daemon stops taking work. There is no way to hand it a new secret remotely, so it comes back only when someone runs agentsde login on that box again.

#Where to find them

  • Devices live in Settings → Runtime · a read-only row for the paired machine (status, host, Connect version, last seen, expiry) with the What this device can do disclosure and a Revoke action.
  • API keys live in Settings → API keys · every credential, device or otherwise, with Rotate and Revoke. Device-minted keys carry a Device badge so you can see which machine a key belongs to.

Revoking the device from Runtime and revoking its key from API keys are the same act · both cut the machine off. Lapsing is not revocation · lapsing just means the 90-day lease ran out and a fresh agentsde login will renew it.