Install and Sign In
The CLI is a single zero-dependency Node script. Installing it takes one command, and signing in takes one more — a browser round-trip that mints a tenant-scoped credential without you ever pasting a key.
Requirements
Node 18 or newer. The CLI uses only the Node standard library (fetch, fs, http, crypto), so there is nothing else to install and no dependency tree to audit.
Install
npm install -g @autessa/cli
autessa version
autessa 0.3.1
Sign in
autessa login
Opening your browser to sign in and choose a company…
Waiting for you to finish in the browser…
Successfully signed in. you@example.com · tenant Acme Inc (544 commands)
Try: autessa help • check later: autessa status
What happens:
- The CLI binds an ephemeral loopback port on
127.0.0.1and opens/user/cli-loginin your default browser with that port and a randomstatevalue. - You sign in normally and pick which company the session should be scoped to.
- The server mints a tenant-scoped CLI credential and redirects back to the loopback with it. The
stateis verified before anything is stored. - The credential is written to
~/.autessa/config, and the SDK manifest is fetched and cached.
Nothing is copied, pasted, or shown in the terminal. If the browser does not open on its own, the URL is printed for you to open manually.
autessa login again. There is no long-lived CLI token to leak.Check your session
autessa status
Profile: default
Endpoint: https://api.autessa.com
Status: signed in ✓
User: you@example.com
Tenant: Acme Inc
Session: valid until 2026-09-10T17:19:43
Live: credential OK ✓
Live: is an actual round-trip against the server, so it distinguishes "my stored token has not expired yet" from "my token still works".
autessa whoami is an alias for the same command.
Sign out
autessa logout
The credential is revoked server-side — it stops working immediately rather than lingering until its natural expiry — and the local profile is removed. If the server is unreachable the local profile is still cleared.
Profiles
A profile is one saved sign-in: an endpoint, a tenant, and a credential. Profiles let you keep several companies or environments side by side without re-authenticating each time you switch.
autessa login --profile prod # create or refresh a named profile
autessa login --profile staging
autessa profiles # list them
PROFILE ENDPOINT COMPANY STATUS
default * https://api.autessa.com Acme Personal signed in
prod https://api.autessa.com Acme Inc signed in
staging https://api.autessa.com Acme Staging session expired
* = default (used when --profile / $AUTESSA_PROFILE aren't set).
Change default: autessa profiles use <name>
Per command: autessa <command> --profile <name> (or: export AUTESSA_PROFILE=<name>)
Selecting a profile
Resolution order, highest priority first:
--profile <name>on the command$AUTESSA_PROFILE- The persisted default profile (
autessa profiles use <name>), falling back todefault
autessa agents all --profile prod # one command
export AUTESSA_PROFILE=prod # this shell
autessa profiles use prod # persistently
--profile is the only flag that selects a profile. --name is deliberately left free so it can be an ordinary SDK argument — autessa qr-codes create --name "Launch poster" passes a name to the command, not to the profile system.Removing a profile
autessa logout --profile staging
Revokes that profile's credential and deletes it from the config. If it was the default, the default reverts to default.
Where things are stored
| Path | Contents |
|---|---|
~/.autessa/config | Profiles: endpoint, tenant, identity, and session credential per profile |
~/.autessa/manifest.json | Cached SDK manifest — the entire command surface |
~/.autessa/update-check.json | Last update check, so the version nudge costs no network call |
The config is JSON and safe to inspect. It contains a live credential, so treat it like any other credential file — do not commit it, and do not copy it between machines.
Staying current
autessa update --check # compare installed vs latest, change nothing
autessa update # reinstall the latest
autessa update --version 0.3.0 # pin or roll back to a specific version
Installed: autessa 0.3.1
Latest: autessa 0.3.1 (up to date)
The CLI also prints a one-line "update available" nudge, at most once a day, when the server advertises a newer version than the one you have. Because the command surface comes from the manifest rather than the binary, an out-of-date CLI is usually a cosmetic problem — but the server can gate clients that fall too far behind.
Refreshing the command surface
The manifest is cached, so a command added on the server is not visible until you refresh:
autessa --refresh help # re-fetch the manifest, then show help
autessa agents all --refresh # re-fetch, then run
You rarely need this by hand. If you run a command the server no longer recognizes, the CLI refreshes automatically and asks you to re-run.