Skip to main content

Global options

Every command that talks to the server also takes: A server URL without a scheme gets https://, except localhost, 127.0.0.1 and [::1], which get http://.

Projects and deployment ids

Commands that work on one project take -p, --project <name>. Without it, atoll env, atoll domains, atoll ci, atoll firewall and atoll rollback use the name of the current directory, the same way atoll deploy does. Deployment ids can be shortened to their first characters, as atoll list shows them. The CLI looks the prefix up among the newest 200 deployments you can see; if more than one matches, it lists them and stops.

Exit codes

With --no-wait, deploy, promote and rollback exit with 0 once the server accepted the request. atoll domains verify has its own codes, see below.

Where the CLI keeps its login

atoll login saves one token per server in a file only you can read:
  • Linux and macOS: $XDG_CONFIG_HOME/atoll/config.json, or ~/.config/atoll/config.json
  • Windows: %APPDATA%\atoll\config.json
The file also remembers the server you signed in to last and your default org per server. --token and ATOLL_TOKEN always win over the saved token, and they never use the saved default org, so CI is not affected by your local settings.

atoll deploy

Upload a project and deploy every target in it.
Without --no-wait, it prints the log until the deployment finishes, then a summary, and exits with the code for the result. CLI deploys always go to production. Needs the Developer role. See Deploying with the CLI.

atoll list

List recent deployments, newest first.
Shows the short id, project, status, environment, age, target counts and live URLs of each deployment.

atoll logs

Print the build and deploy log of a deployment, or the output of a running Ktor server.
Pass either a deployment id or --project, not both. Runtime output starts with the last 200 lines, each with the local time and the replica that printed it. Secret values are masked in both kinds of logs. See Deployments.

atoll status

Check that the server is reachable and print its version.

atoll login

Sign in and save a token for later commands.
Without --token, the CLI prints a URL and a code like BCDF-GHJK, and opens the panel’s device page in your browser. Check that the code matches and approve the sign-in. The code expires after 10 minutes. The CLI then saves the token, and the server becomes the default for later commands.

atoll logout

Revoke the saved token on the server and forget it.
If the server can’t revoke it, the token is still removed from your machine; revoke it in the panel under Account.

atoll whoami

Show the signed-in user, the server, where the token comes from, and your orgs with your role in each.

atoll orgs

atoll projects

atoll cancel

Stop a deployment that has not finished. It ends as CANCELLED; targets that were already live stay live.
Only QUEUED, BUILDING and DEPLOYING deployments can be cancelled. Needs the Developer role.

atoll promote

Make a finished deployment live again, as a new deployment, with the project’s current env vars.
Waits for the new deployment and exits like atoll deploy. Works for the last 10 finished deployments per project and environment. Needs the Developer role. See Promote and rollback.

atoll rollback

Put the previous good production build back live, without rebuilding it.
It promotes the newest READY production deployment before the current one that runs a different build. Waits for the new deployment and exits like atoll deploy. Needs the Developer role.

atoll env

List, set and remove a project’s env vars and secrets. Changes apply on the next deployment. See Environment variables and the env vars reference. Every atoll env command takes:

atoll env ls

Lists the variables with their environment, value and what uses them (build, runtime). Secret values show as (secret).

atoll env set

The value is everything after the first = and may be empty. Setting an existing key replaces it. Values typed here can end up in your shell history; use atoll env import for secrets. Needs the Developer role.

atoll env import

Sets every variable of a .env file of KEY=value lines. Existing variables with the same keys are replaced. The flags apply to every imported variable. The file is checked first: with more than 500 variables or a value over 64 KB, nothing is imported. The env vars reference describes the file format. Needs the Developer role.

atoll env rm

Needs the Developer role.

atoll domains

List, add, verify and remove a project’s custom domains. Every atoll domains command takes -p, --project <name>, which defaults to the current directory name. See Custom domains.

atoll domains ls

Shows each domain, the target it serves and its status. For each domain that isn’t active, it prints the DNS records still needed and the date by which they must exist.

atoll domains add

Prints the DNS records to create. Needs the Admin role.

atoll domains verify

Checks the DNS records now and prints the new status.

atoll domains rm

The domain stops serving at once. Asks first unless you pass -y, --yes. Needs the Admin role.

atoll ci

Turn CI on and off for a git-linked project, and list, follow, rerun and cancel its runs. CI vars are set with atoll env set --ci. Every atoll ci command takes -p, --project <name>. Run ids can be shortened to their first characters, as atoll ci ls shows them.

atoll firewall

Edit a project’s firewall from the terminal. atoll fw is short for atoll firewall. Every command takes -p, --project <name>, and most commands that print take --json. Changes to rules, IP blocks and managed rulesets go into a draft. atoll fw publish makes the draft live within seconds, without a redeploy. Attack mode and lifting a timed block apply at once. Anyone in the project can look at the firewall; changing it needs the Developer role.

Draft and versions

Custom rules

Custom rules run in order, before the managed rulesets, and the first terminating action wins. Name a rule by its id, its position or its name. A condition is "<field> <op> <value>". Several --if conditions must all match; --or starts the next group, and the rule matches when any group does. --not, or a leading !, negates one condition. in, starts_with, ends_with and contains take comma-separated values. --persist <duration>, from 1m to 24h, blocks the client IP that long after a deny, challenge or rate limit. With atoll fw rules edit, --persist off removes it.

IP blocking

Managed rulesets

atoll fw managed list shows the rulesets. atoll fw managed set <ruleset> <mode> sets one in the draft: The OWASP core rules take more options: --paranoia 1 to 4, --threshold (the anomaly score that blocks; 5 by default), --group <group>=off|log|deny for one rule group, --inspect-bodies or --no-inspect-bodies, and --max-body such as 1MB (larger requests are refused).

Attack mode and traffic

Challenges every visitor while you are under attack. Verified good bots (Googlebot, Bingbot and the like), in-cluster traffic and visitors who solved the challenge pass. It applies at once, without publishing. --for turns it off again after a time, such as 1h, 6h or 24h.
Shows requests per firewall action. --by lists the top values of ip, path, host, country, asn, user-agent or rule; -n, --limit sets how many (1 to 100). --action keeps one of allowed, logged, challenged, denied, rate-limited or redirected, and --rule the requests one rule decided.