Skip to content

Command line ​

aliasctl is ALIAS from a terminal: the queue, users, keys, products, webhooks and the log, for support people who'd rather type than click and for whoever runs a deployment. It's one binary for Linux, macOS and Windows, on every release of alias-releases, under the MIT licence.

It talks to the same admin API as the panel, with the same permissions: it can never do more than the person or client signed in. A support person with only support can read and answer, and is refused the rest, the same as on the panel.

Signing in ​

sh
aliasctl login --server https://support.example.com

This uses the device flow: aliasctl shows a link and a code, you confirm in a browser with your usual sign-in, and it keeps a token (refreshed as needed) in your user's config directory, readable only by you. aliasctl whoami shows who you are and what you may do. Several deployments each get a profile: --profile work, aliasctl profiles, aliasctl profiles use work.

For scripts and CI there's no browser:

Variable
ALIAS_SERVERthe deployment
ALIAS_CLIENT_ID, ALIAS_CLIENT_SECRETa confidential client with service accounts, given the roles it needs; ALIAS_ISSUER if the deployment doesn't name its provider
ALIAS_TOKENa bearer token you already have

Commands ​

tickets list [--view needs|waiting|done|all] [--product p] [--q text]the queue (needing an answer, by default), with the counts
tickets show <product> <ticket>the note, context, telemetry, files and thread
tickets answer <product> <ticket> [text] [--status s] [--markdown]answer the user; with no text, from standard input or $EDITOR
tickets status <product> <ticket> <status>open, in_progress, waiting, resolved, closed
tickets file <product> <file id> [-o path]download an attachment
tickets delete <product> <ticket>for good
users list <product> [--search part] [--blocked]the product's users
users show <product> <user> [--contact]a user's card; --contact shows the contact (it takes contacts.view, and the look is logged)
users block, unblock, reset-secret, erase <product> <user>as on the panel; erasing asks you to type the start of the id
keys list [product…]keys and their state, never their values
keys issue <product> <name>a new key, printed once
keys quarantine, release, revoke, restore <product> <name>revoke --reason "...": what the builds with the key tell their users
products list, export <product>, apply <file.json>, delete <product>a product's settings as JSON, and back (made if it's new)
products redact-test <product> <sample.json> [--rules rules.json]what the rules, saved or about to be, make of a sample report
webhooks list, add, set, rotate, test, deliveries, retry, removea product's endpoints; a new secret is printed once
remote ssh <product> <ticket> [--user u] [-- ssh options]a shell on the ticket's device: asks it (or joins what it accepted), waits for its yes, and runs your ssh through a local port
remote forward <product> <ticket> <shell|screen> [--port n]the session on a local port, for a VNC viewer or your own ssh; one connection
remote ask, list, endask the device (--wait for its answer), see a ticket's requests, end one
log [--product p] [--who name] [--action a]what support did
settingsthe deployment's look, sign-in and version

A user can be named by their whole id or by its short form, as the panel shows it (9E4D-6354, or any four or more characters of the id that only they have). aliasctl help <command> explains each.

In scripts ​

Every command prints JSON with --json, and anything that deletes or erases takes --yes instead of asking. The exit code says what happened:

Code
0done
2the command line was wrong
3not signed in, or the sign-in has expired
4not permitted
5not found
6refused as invalid or conflicting
7the server couldn't be reached, or failed
sh
# every ticket waiting on us, oldest first, as JSON lines
aliasctl tickets list --json | jq -c '.tickets | sort_by(.updated_at)[]'

# a product's settings kept in git, and applied from it
aliasctl products export road-builder > products/road-builder.json
aliasctl products apply products/road-builder.json