@sente-labs/cli installs the sente binary. It targets the same REST API as the SDKs
(https://api.sente.run/v1) and is built for terminals, scripts, and agent shells. Requires
Node.js 18+.
Sign in
sente login stores the key in ~/.sente/credentials (mode 0600). The key authenticates
your whole organization — don’t paste it into chats or commit it. To hand it to your app
without echoing it:
sente login --non-interactive fails rather than opening a browser. Add --json to any
command for machine-readable output.
Identities
identity create options: --name, --description, --local-part (default: random),
--on-conflict error|suffix (default error — fail if the address is taken; suffix
appends a random suffix). Everywhere below, <ref> is an identity id, email, or
local-part.
Read the inbox and wait for codes
--otp / --magic-link block for the verification message and print
just the extracted code or link, so the output is pipeable:
wait accepts --since <ts> (ISO timestamp; stamp it before triggering the action for
back-to-back flows — see Receive verification codes)
and --timeout <s> (default 25; the CLI loops the server’s 60-second long-poll, so any
timeout works). --otp and --magic-link are mutually exclusive.
listen can react to each message instead of printing it:
--forward POSTs each inbound message in the exact webhook envelope (with x-sente-secret
taken from SENTE_WEBHOOK_SECRET, if set) — useful for developing a webhook handler with
no public URL.
Send and reply
--text and/or --html is required.
Register at a third-party app
sente register drives a browser through signup at the app under the identity’s email and
completes email verification from the identity’s own inbox. It blocks until the run
finishes, printing status lines as it goes.
--username / --password (defaults are generated server-side),
--confirm-before-submit, --autonomous, --no-wait (return the run id immediately).
CAPTCHAs and SMS verification are not automated either: the run goes blocked and a human
finishes the step in the interactive live view, then resumes. See
Runs and human takeover.
Inspect and control runs:
Get notified when a run needs you
sente watch polls for blocked runs and desktop-notifies (macOS Notification Center;
terminal bell elsewhere) with the live-view URL and the resume command — no webhook server
needed:
run.blocked (see below).
Connect an account you already own
sente connect is delegated access to an existing account: you supply the credentials,
Sente logs in, vaults them write-only, and keeps the account re-loginable. See the
Connect guide.
--totp-seed vaults the authenticator secret (the base32 string behind a QR code’s
“can’t scan?” link, or a full otpauth:// URI) so re-login clears TOTP 2FA without a
human — the server computes the 30-second code; the seed never reaches any model.
Limits: SSO-only accounts (Google/Okta sign-in, passkeys) cannot be connected. On connected
accounts
sente credentials returns 403 CREDENTIALS_WRITE_ONLY — credentials are
write-only. Email or SMS code MFA blocks the run with MFA_REQUIRED — enter the code in
the live view, then sente run resume <runId> — unless the account uses TOTP (vaulted
seed) or its notification email was repointed to the Sente identity.connect supports --no-wait like register.
Sessions
Open a remote browser already logged into an account. The CDP URL prints alone on stdout (pipeable); everything else goes to stderr. If the login went stale, the CLI re-logs-in first (vaulted credentials + a fresh code from the identity’s inbox) before handing you the session.--no-verify skips the freshness check (raw). One live session per identity; open
sessions count against your plan’s browser-minute allowance — close when done.
Export the logged-in browser state (cookies + localStorage) as a Playwright
storageState JSON to load into your own browser stack (written mode 0600 — it’s a bearer
credential, store it like a secret):
Webhooks
--events is a comma-separated list (default message.received); omit --identity for
org-wide. The register output includes your organization’s signing secret (webhook list
never shows it) — verify the x-sente-secret header on every delivery. run.blocked payloads carry the block code,
liveViewUrl, a dashboard actionUrl, and holdExpiresAt; run.completed and
run.failed fire on terminal runs. Payloads and verification code in the
Webhooks guide.
Command reference
SDKs for the same API: TypeScript · Python. Endpoint
details: API reference.
