Skip to content

CLI

The exponential CLI signs a machine in, runs sessions from the terminal and turns a server into a device that runs your team’s sessions.

Terminal window
curl -fsSL https://exponential.at/install.sh | sh
# self-hosted
curl -fsSL https://exponential.at/install.sh | EXP_INSTANCE=https://issues.example.com sh

Linux (x86_64, arm64) and macOS (Apple Silicon). The script checks the binary’s checksum, installs it to ~/.local/bin/exponential, turns on auto-update, signs you in, installs the daemon as a service and prints the machine’s readiness (the same block as exponential doctor). The web app’s Add device dialog gives you the same command with a one-time install token (EXP_INSTALL_TOKEN=expi_…), which skips the approval step.

variable effect
EXP_INSTANCE your instance’s URL
EXP_INSTALL_TOKEN one-time expi_… token from Add device (15 minutes)
EXP_TOKEN sign in with an API key (expu_…, Settings → Security)
EXP_DEVICE_LABEL the machine’s name
EXP_NO_DAEMON=1 / EXP_NO_AUTOUPDATE=1 skip the daemon service / auto-update
EXP_INSTALL_DIR install somewhere other than ~/.local/bin

You also need git and a coding agent: Claude Code on your PATH, or Codex (the machine downloads its own pinned build).

exponential login prints a code and a link to <instance>/auth/device; approve it in any signed-in browser. It works the same over SSH. Signing in does not make the machine a device: only the daemon does (exponential status tells you which).

exponential daemon install writes a systemd user unit (Linux, with lingering turned on where allowed, else it prints sudo loginctl enable-linger $USER) or a launchd agent (macOS). The machine then appears under Devices, and sessions started on it from any client run there with the same launcher as the desktop app. Its name, sharing, agent logins, launch defaults and updates are all in Device settings on every client. A restarted daemon claims its unfinished sessions back.

--device <name|id> on code or run starts the session on another of your devices (it must be online); --follow tails it. sessions log streams a transcript from the device that ran it over eNet, end-to-end encrypted.

Terminal window
exponential devices
exponential code EXP-42 --device "build box" --agent claude --follow
exponential sessions message 1a2b3c4d "Use the staging database instead"

Auto-update is on unless you opted out: commands check once a day, the daemon every 15 minutes and restarts between turns. exponential update updates now; exponential update --auto off turns it off. Release notes: Changelog.

command does
login [--instance <url>] [--install-token <t>] [--no-browser] Sign in (device code, approved in any browser)
logout Sign out and drop local credentials
whoami Show the signed-in account
status Account + device + daemon + tooling summary
doctor Check git and the agent CLIs
code <ISSUE> [options] Start a session on an issue
run <prompt> [options] Run a team’s saved prompt
devices [--team <team-id>] Your devices: online, agents, running sessions
sessions [--device <d>] [--status <s>] [--agents] Sessions, newest first
sessions show|log|message|stop|end <id> Inspect, tail (--follow), message, interrupt or end one
mcp list|connect|set-secret|disconnect Team MCP servers + your connection to each
motion import|compile|decompile|check|render <file> eUI Motion: convert, validate and preview animations
daemon [--foreground] [--label <name>] Run the device daemon (runs the sessions queued here)
daemon install|uninstall|status Manage the systemd/launchd service
update [--auto on|off] Self-update now, or switch auto-update
uninstall [--yes] Remove the daemon service and delete this binary
version Print the CLI version

These blocks are the CLI’s own help text (exponential help, exponential sessions help, …).

exponential — Exponential from your terminal
Usage: exponential <command> [options]
Commands:
login [--instance <url>] [--install-token <t>] [--no-browser]
Sign in (device code, approved in any browser)
logout Sign out and drop local credentials
whoami Show the signed-in account
status Account + device + daemon + tooling summary
doctor Check git and the agent CLIs
code <ISSUE> [options] Start a session on an issue
run <prompt> [options] Run a team's saved prompt
devices [--team <team-id>] Your devices: online, agents, running sessions
sessions [--device <d>] [--status <s>] [--agents]
Sessions, newest first
sessions show|log|message|stop|end <id> Inspect, tail (--follow), message, interrupt or end one
mcp list|connect|set-secret|disconnect Team MCP servers + your connection to each
motion import|compile|decompile|check|render <file>
eUI Motion: convert, validate and preview animations
daemon [--foreground] [--label <name>] Run the device daemon (runs the sessions queued here)
daemon install|uninstall|status Manage the systemd/launchd service
update [--auto on|off] Self-update now, or switch auto-update
uninstall [--yes] Remove the daemon service and delete this binary
version Print the CLI version
Options for code/run:
--agent claude|codex --model <m> --effort <e>
--detach (headless; steer it from the web)
--device <label|id> start it on ANOTHER device instead (see `devices`);
with --account <profile> and --follow (tail it)
Options for run:
--team <team-id>
--prompt <text> (appended to the prompt's body in the session's
first message)
Environment:
EXP_INSTANCE, EXP_TOKEN (API key expu_… from Settings → Security, or a session
token; non-interactive login), EXP_INSTALL_TOKEN (one-time expi_… token from
the web's Add device dialog), EXP_LOG=debug
Usage: exponential sessions [<command>]
[list] [--device <label|id>] [--status queued|running|idle|ended] [--agents] [--limit n]
Threads you can see, newest first (--agents: your agent conversations)
show <id> One session: status, device, branch, its thread's issues
log <id> [--follow] Print the transcript (--follow keeps streaming a live session)
message <id> <text…> Message a session; an idle one wakes up (`-` reads stdin)
stop <id> Interrupt the session's current turn (it stays, idle)
end <id> End the session (and its sub-sessions)
<id> = the session UUID, or a unique prefix of a thread's or agent's.
Usage: exponential mcp <command> [--team <team-id|slug>]
list Your teams' MCP servers and your connection to each
connect <server> Connect an OAuth server (opens the web settings page)
set-secret <server> Store your key for a server that takes one (read from
stdin, never argv)
disconnect <server> Delete your credential for a server
<server> is a server name or id. Credentials are held by the server for you
(every device, remote starts, triggers); owners add servers under
Settings → MCP servers.

Convert, check and preview Motion animations (the dialect is in the Motion reference).

Usage: exponential motion <command> <file> [options]
Commands:
import <file.json|file.lottie> [--out f.json] Lottie/dotLottie → validated Lottie (images inlined)
compile <file> [--out f.json] Dialect → Lottie
decompile <file> [--out f.json] Lottie/dotLottie → dialect
check <file> Validate a dialect or Lottie file
render <file> [--frame N | --at ms] [--size WxH] [--out f.png]
render <file> --gif [--fps N] [--size WxH] [--out f.gif]