Flockdeck docs

Self-hosting

Admin and invites

The relay has a small admin surface, separate from the public one desktops and devices talk to.

The admin API

The admin API listens on -admin-addr, which defaults to loopback (127.0.0.1:8081); keep it there, off the network the relay itself is reachable from. Reach it from the same machine, or over SSH port forwarding, or from a sidecar in the same pod; don't put it behind a public reverse proxy. The relay warns if it is listening beyond loopback.

It's authenticated with a token the relay writes to admin.json in the data directory (-data). The relay writes a fresh token on every start and removes the file when it stops, so run the admin commands (invite, stats, plan, user revoke, account and audit export) where they can read -data, for example docker exec <container> /flockdeck-relay invite -data /data. Keep that file as tightly held as you would a root credential: anyone with it has full admin access.

Inviting a desktop

If -registration is set to invite (see Configuration), a new desktop can't register itself. An admin has to issue an invite code first:

flockdeck-relay invite -data /data -note "jane's laptop"

The command prints the code, and the exact flockdeck remote enable -relay … -invite <code> command to hand over. The -note is kept with the invite for your own records; stats doesn't print it, and it isn't shown to the desktop that redeems the code.

Usage stats

flockdeck-relay stats -data /data

prints the relay's version and uptime, and a summary of what it holds: how many accounts, desktops (and how many are connected), devices (and how many are notified by push), pairing codes waiting and invites unused, the plans if the relay enforces them, and how many requests each limit has refused. The refused counts show a proxy that makes every client look like one address. -max-hosts and -max-devices are per account, so stats doesn't show headroom against them.

Revoking access

To revoke a person, run flockdeck-relay user revoke -data /data sam@example.com. It revokes every device that person paired, and needs a relay run with -oidc-issuer, which is how a device is recorded against an email; disable them at the identity provider too, or they could pair a device again.

To take a desktop off its account, run flockdeck remote remove on it, or remove it from a paired browser. That removes only the desktop, the last one included: the account keeps its devices and verified email, and can have no desktops. flockdeck remote disable only turns Flockdeck Remote off on that desktop, which stays enrolled and shows as offline.

Deleting accounts

Nothing deletes an account when its last desktop goes. The relay deletes one once nothing on it has been used for -account-retention (see Storage and data). To delete one yourself:

flockdeck-relay account delete -data /data -email sam@example.com
flockdeck-relay account delete -data /data -email sam@example.com -apply -export sam.json

Without -apply it is a dry run that says what would go. -apply needs -export, which writes the account's rows out first; the account is deleted only after that. A subscribed account is refused unless you give -force, since deleting does not cancel a subscription.

account duplicates lists the emails that have more than one account, and account dedupe (a dry run without -apply) deletes the unpaid duplicates, with the same -export rule. Both are permanent and the export is the only copy, so take a database snapshot first.

When the command runs inside a container with docker exec or kubectl exec, a file named with -export FILE is written inside the container, where you cannot easily copy it out and where a restart loses it. Give -export - -confirm-exported instead, which writes the export to standard output, and redirect that to a file on your own machine:

kubectl exec deploy/relay -- /flockdeck-relay account dedupe -data /data -apply -export - -confirm-exported > rows.json

Standard output is not synced, so check that rows.json is not empty and parses as JSON before you rely on it.

Exporting the audit log

To export the audit log, run flockdeck-relay audit export -data /data -format csv -o audit.csv. -format is csv (the default) or json; -since and -until bound it by a date (2026-09-01) or a time (2026-09-01T09:00:00Z); without -o it writes to the standard output. The relay does not have to be running with -audit: without it, the command says the relay is not keeping the log now, and writes what was kept before.