Appearance
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.comThis 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_SERVER | the deployment |
ALIAS_CLIENT_ID, ALIAS_CLIENT_SECRET | a confidential client with service accounts, given the roles it needs; ALIAS_ISSUER if the deployment doesn't name its provider |
ALIAS_TOKEN | a 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, remove | a 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, end | ask the device (--wait for its answer), see a ticket's requests, end one |
log [--product p] [--who name] [--action a] | what support did |
settings | the 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 | |
|---|---|
| 0 | done |
| 2 | the command line was wrong |
| 3 | not signed in, or the sign-in has expired |
| 4 | not permitted |
| 5 | not found |
| 6 | refused as invalid or conflicting |
| 7 | the 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