Pair with the Console
The Console is loopkeep's web control plane: sign in, see your paired devices, revoke a stolen one, and connect GitHub and Slack so their events can trigger workflows on your machine. Pairing is optional — everything local (cron, file watching, git triggers, the inbox) works without an account, forever.
Pair this device
Open the desktop app and follow the sign-in prompt — it walks you through pairing when you first launch it. Your browser opens an approval screen; approve it and the app finishes the pairing. The device gets its own token and signing key; nothing is shared between devices.
Prefer the terminal? The CLI runs the same flow — like claude or gh:
lk login
Afterwards:
lk account # show login state and the Console connection
lk logout # revoke this device and log out
Manage devices
Open the Console and go to Devices. Every paired device is listed, and any of them can be revoked from there. Revoking invalidates the device's token — useful when a laptop is lost or stolen — and deletes that device's uploaded run snapshot, workflow catalog, and trigger-routing declarations. Its local data and workflows remain. Stop automation is a narrow, persisted gate on future automatic firings that can be cleared locally; it is not a process or runtime kill switch. Revoking cuts the Console connection but does not apply that gate. Protecting a lost machine's disk is the job of OS disk encryption.
On a supported device, Stop automation applies the same persisted global
trigger gate as lk pause --all: future automatic firings stop, while manual
and in-flight runs continue. Resume is deliberately local-only. Stop remains
actionable while the device is offline or its presence is unknown, but it is
not queued for later. If the request is not delivered, the Console reports that
result and local automation keeps running. Stop and Revoke are separate
operations. If Stop is rejected, expires, or remains unconfirmed, inspect the
device before retrying.
What pairing enables
Remote start requires the account's remote-manual entitlement. Active-run supervision, workflow controls, and Stop use the separate remote-supervision entitlement. Connector triggers and device revocation require neither.
- GitHub, Slack, and webhook triggers — outside events reach your daemon through the Console. See The Console for how this works and what the Console can and cannot see.
- Start a run from the Console — on an entitled plan, on a device that's online.
- Supervise active runs — see the latest active snapshot and Finish an attended run on an online capable device without aborting its process.
- Control workflow triggers — enable or disable future automatic firings per workflow and device; manual and in-flight runs are unaffected.
- Stop automation remotely — set the device's global automatic-trigger gate; resuming still happens locally.
- Remote revoke — unpair a device from the browser.
What stays on your machine
The daemon connects outward to the Console over WebSocket — no inbound ports
are opened. What comes down that connection is an event you subscribed to and
the text that caused it — delivered, not stored. Your repositories, .env,
secrets, policies, workflow bodies, prompts, and run transcripts never leave
the machine. Pairing uploads a minimal workflow catalog and, when
remote supervision is enabled, the latest active-run state and source
locators. It does not upload titles, bodies, authors, sessions, worktrees, or
engine settings. Routing declarations used for event matching are uploaded
separately from that catalog.