Skip to content

Command reference

Run aura <command> [subcommand] --help for the full option list at any point; aura <noun> on its own lists that noun’s verbs.

Command What it does
aura deploy [name] Upload the deployment defined in [tool.aura.deployment.<name>] (--config <path>, --dry-run, --verbose)
aura chat --project <id> Chat with a project (--conversation <id>, --new-conversation, --title <text>, --message <text>)
aura init Add a [tool.aura.deployment.<name>] section to pyproject.toml (--config <path>)
aura deployment list List your company’s deployments
aura deployment check [handle|name] Run the server-side runnability check (--config <path>)
aura deployment delete <handle|name> Delete a deployment and every file in it (y/N prompt; --yes to skip)
aura project create <handle> --name <name> Create a project from a deployment (--description <text>)
aura project list List your projects
aura project checkout <id> <ref> Reset a project’s workspace to a snapshot, tag, or deployment — discards uncommitted workspace state (y/N prompt; --yes to skip)
aura project delete <id> Delete a project and everything in it (y/N prompt; --yes to skip)
aura conversation list --project <id> List a project’s conversations
aura conversation delete <id> --project <id> Delete one conversation (y/N prompt; --yes to skip)
aura snapshot list --project <id> List a project’s snapshots as a lineage tree (--flat for newest-first)
aura snapshot list-files <ref> --project <id> List the files captured in one snapshot
aura snapshot read <ref> <path> --project <id> Print one file from a snapshot to stdout
aura snapshot tag list --project <id> List the project’s tags and what they point at
aura snapshot tag set <name> <snapshot-id> --project <id> Point a tag at a snapshot, creating or moving it
aura config Show every setting, its value and its source
aura config set <key> <value> Write base_url, theme or full_dates to the config file
aura config unset <key> Remove a setting, falling back to the environment or the default
aura config path Print the config file’s location
aura completion [shell] Print the shell completion script — bash, zsh or fish, detected from $SHELL when omitted (see Install)

Every command takes --base-url / --api-key (or AURA_BASE_URL / AURA_API_KEY) except aura init, aura config and aura completion, which are offline. Values resolve flag → environment → config file → default; see Configure. Commands that print timestamps also take --full-dates, which shows the exact stamp instead of 3h ago.

aura deploy reports one summary line per run rather than a line per file; --verbose restores the per-file log, and --dry-run lists the resolved files without uploading.

Every completed solve freezes an immutable snapshot, so aura snapshot reads a given run’s own copy rather than a live workspace a later run may have overwritten.

<ref> is a snapshot id or a tag name, so a pipeline can ask for best-known without tracking ids.

Terminal window
aura snapshot list --project <id> # the lineage tree
aura snapshot list-files best-known --project <id> # what that run captured
aura snapshot read best-known solution --project <id> > solution.json

read prints bytes to stdout unchanged — nothing reformats or pretty-prints, so a redirect is byte-faithful. The path solution is an alias for whatever path the solver recorded for that run; a real file named solution wins over the alias. A solution is JSON by convention only, so at a terminal read refuses binary content rather than garbling it — redirect or pipe instead.

aura deploy reads a [tool.aura.deployment.<name>] table, normally in the model folder’s own pyproject.toml — the file that lands as run/pyproject.toml. Build backends ignore unknown tool tables, so the manifest travels with the artifact without affecting it.

pyproject.toml
[tool.aura.deployment.vrp]
model_folder = "." # uploaded under run/ (default ".")
data_folder = "../define/data" # uploaded under data/ (required)
include = ["pyproject.toml", "run.py", "README.md", "src/solver/**"]
data_include = ["**"]
exclude = ["personal_infos.txt", "notes/**"]
Key Default Means
model_folder "." Uploaded under run/
data_folder required Uploaded under data/
include ["**"] Globs relative to model_folder
data_include ["**"] Globs relative to data_folder
exclude Applies to both folders; wins over include
  • The deployment name is the table key: lowercase letters, digits, hyphens. Several deployments may live in one pyproject.toml; aura deploy <name> picks one, and the name is optional when only one is defined.
  • Folder paths resolve relative to the pyproject.toml. aura deploy searches upward from the current directory for one carrying a [tool.aura] table, or takes --config <path>.
  • Built-in excludes always apply: dot-prefixed files and directories (.git, .venv, .env, …), __pycache__, node_modules, dist, venv, *.pyc. The server additionally rejects dot-prefixed and executable paths.
  • Deploying is a sync: after the uploads, remote files no longer present locally are removed, so renames and deletions leave nothing stale.
Terminal window
aura deploy --dry-run # print exactly what would upload, change nothing
Key Does
enter Send
shift+enter Newline — compose a multi-line message
, alt+← alt+→ Move by character, by word (esc b / esc f also work)
home end, ctrl-a ctrl-e Start / end of line
ctrl-w or alt+backspace Delete previous word
ctrl-u, ctrl-k Delete to line start, to line end
ctrl-d Delete forward (backspace always deletes back)
Recall history; within a multi-line message, move between its lines. While the command menu is open, move through it
tab Fill in the highlighted command, while the command menu is open
pgup pgdn, mouse wheel Scroll the transcript; scrolling back to the bottom re-sticks
esc Dismiss the command menu; otherwise cancel the running turn and stay in the session
ctrl-c twice, or exit Quit when idle — the first ctrl-c abandons the line and arms the quit

Pasted text is inserted literally, newlines included, so a multi-line paste does not send on its first line break.

Inside aura chat, a leading / means “act locally” — anything else is a turn for the agent. // escapes to a literal slash, so a path can still be sent as a message.

Command Does
/help List the commands available in this session
/checkout List available checkout targets (tags, snapshots, deployments); /checkout <ref> resets the workspace to one (y/N prompt in-session)
/exit Leave the chat session

Typing / opens a menu of them above the composer, so there is nothing to memorise: keep typing to narrow it, / to move, tab to fill the name in, enter to run the highlighted one, esc to dismiss. A near-miss still matches, so a typo shows the command you meant rather than an empty list. The menu closes once the name is settled and its arguments have started.

When the agent asks a multiple-choice question it stops and waits, and the composer is replaced by a picker:

Key Does
Move between options
space Toggle, on a multi-select question
enter Confirm
esc, or typing anything Leave the picker for the composer

Every question ends with a type your own answer row, and cards with several questions are walked one at a time. If the picker has been dismissed, typing numbers still works: the transcript numbers options continuously across the card, so 2 or 1,3 answers directly.

Agent replies render as markdown: tables become grids, fenced code is syntax-highlighted, links resolve to their text plus a readable URL.

Listings are tables with a blank line around them and a count underneath. Text columns are elided to fit the terminal; ids and handles never are, because they exist to be pasted into the next command. Timestamps read as 3h ago unless --full-dates is passed.

Colour degrades by capability — 24-bit where COLORTERM reports truecolor, the nearest xterm-256 index on a -256color terminal, the basic sixteen otherwise. NO_COLOR and non-TTY output stay plain; FORCE_COLOR overrides the detection.

Below 24×6 the frame is replaced by a size hint.

Code Means
0 Success
1 An API or usage error — printed as a plain message
130 Ctrl-C during --message; the turn was cancelled server-side too