CLI for the Awa Postgres-native job queue (migrations, admin, serve)
Project description
awa-cli
Command-line interface for the Awa Postgres-native job queue. Run migrations, inspect and manage jobs, walk the storage transition, drive the Dead Letter Queue, list cron schedules, and serve the web admin UI.
Install
The CLI is shipped as both a Rust binary and a Python wheel. Either
distribution gives you the same awa executable, including the
embedded React admin dashboard for awa serve.
# Python (no Rust toolchain needed)
pip install awa-cli
# Rust
cargo install awa-cli
If you're already using the awa-pg
Python SDK, install both with one command:
pip install 'awa-pg[ui]'
That pulls in awa-cli as a dependency so python -m awa serve works
end-to-end alongside the worker SDK.
Quick start
# Run migrations
awa --database-url $DATABASE_URL migrate
# Inspect
awa --database-url $DATABASE_URL queue stats
awa --database-url $DATABASE_URL job list --state failed
awa --database-url $DATABASE_URL job dump 12345
awa --database-url $DATABASE_URL job dump-run 12345
# Admin
awa --database-url $DATABASE_URL job retry 12345
awa --database-url $DATABASE_URL queue pause email
awa --database-url $DATABASE_URL queue drain email
# Web UI
awa --database-url $DATABASE_URL serve
# → http://127.0.0.1:3000
DATABASE_URL may be passed as the --database-url flag or read from
the environment.
Commands
| Command | Description |
|---|---|
migrate |
Apply migrations, or extract / print SQL with --sql / --extract-to |
job list |
List jobs with --state / --kind / --queue filters |
job dump <id> |
Pretty-print one job and its full lifecycle metadata |
job dump-run <id> [--attempt N] |
Pretty-print one attempt run |
job retry <id> |
Retry a failed or cancelled job |
job cancel <id> |
Cancel a job |
job retry-failed --kind K |
Retry every failed job of a given kind |
job discard --kind K |
Delete every failed job of a given kind |
queue stats |
Per-queue depth, lag, and throughput |
queue pause / resume / drain <queue> |
Queue admin |
cron list / remove |
List or remove cron schedules |
dlq depth [--queue Q] |
Total DLQ rows, optionally split by queue |
dlq list |
List DLQ entries with --kind / --queue / --tag / --before-* filters |
dlq retry <id> |
Retry a single DLQ row |
dlq retry-bulk |
Retry every DLQ row matching the filter (--all required if no filter is given) |
dlq move |
Move existing failed terminal rows into the DLQ |
dlq purge |
Delete DLQ rows matching the filter (--all required if no filter is given) |
storage status |
Current storage-transition state |
storage prepare --engine E |
Prepare a future storage engine without changing routing |
storage prepare-queue-storage-schema |
Materialize the queue-storage schema (tables, indexes, functions) |
storage enter-mixed-transition |
Begin routing new writes to the prepared engine |
storage finalize |
Finalize the transition once drain and capability gates pass |
storage abort |
Abort a prepared or mixed-transition rollout |
serve |
Start the embedded web admin UI |
Run awa <command> --help for the flags on any subcommand.
Storage transition
For an existing 0.5.x cluster moving to the queue-storage engine, the typical sequence is:
awa --database-url $DATABASE_URL storage prepare-queue-storage-schema
awa --database-url $DATABASE_URL storage prepare --engine queue_storage
# ... roll out a binary that supports queue storage to all workers ...
awa --database-url $DATABASE_URL storage enter-mixed-transition
# ... drain the canonical engine ...
awa --database-url $DATABASE_URL storage finalize
See docs/upgrade-0.5-to-0.6.md for
the full pre-flight checklist, gate semantics, and rollback notes.
Fresh installs auto-finalize on first migrate and do not need this
sequence.
Dead Letter Queue
dlq retry-bulk and dlq purge require an explicit filter (--kind,
--queue, or --tag) or --all. This is intentional — a bare bulk
retry / purge with no filter would touch every DLQ row, which is
almost never what you want. See
docs/dead-letter-queue.md.
Web UI
awa serve starts an embedded admin UI (awa-ui) bound
to 127.0.0.1:3000 by default. The UI is read-only when the database
reports transaction_read_only = on (e.g. on a replica) or when
--read-only is passed explicitly. Mutation endpoints return 503 in
that mode.
License
MIT OR Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file awa_cli-0.6.0a6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: awa_cli-0.6.0a6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 5.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
261516eb0843ed64a6806aa3f76614e41754f010c0068f185933aa9c1bce9a82
|
|
| MD5 |
81399db3fb0918d7668f02b6d2152de7
|
|
| BLAKE2b-256 |
2a28151dfdbbffe41d7867004847dc7fdfca5d453fcc67aa306861cc1b8f4bae
|
Provenance
The following attestation bundles were made for awa_cli-0.6.0a6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on hardbyte/awa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
awa_cli-0.6.0a6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
261516eb0843ed64a6806aa3f76614e41754f010c0068f185933aa9c1bce9a82 - Sigstore transparency entry: 1454048533
- Sigstore integration time:
-
Permalink:
hardbyte/awa@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Branch / Tag:
refs/tags/v0.6.0-alpha.6 - Owner: https://github.com/hardbyte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file awa_cli-0.6.0a6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: awa_cli-0.6.0a6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d402e467ba8fd1f1c7c323149058178ee6242f5fb0a63719a2c3bc1dba757d4e
|
|
| MD5 |
973fe1309d26e7d74aa99a33211d0d41
|
|
| BLAKE2b-256 |
4d90023e1fe20136a0e65ca0d353a1eb26413d7866e259fae53360c58a2f60a4
|
Provenance
The following attestation bundles were made for awa_cli-0.6.0a6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on hardbyte/awa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
awa_cli-0.6.0a6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
d402e467ba8fd1f1c7c323149058178ee6242f5fb0a63719a2c3bc1dba757d4e - Sigstore transparency entry: 1454048422
- Sigstore integration time:
-
Permalink:
hardbyte/awa@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Branch / Tag:
refs/tags/v0.6.0-alpha.6 - Owner: https://github.com/hardbyte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file awa_cli-0.6.0a6-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: awa_cli-0.6.0a6-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.9 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a372d0dd8ce99261170af3d483361a168945ba1ffac339634f7549cd6257b57
|
|
| MD5 |
daf07adb8fe711b34e63ce5455012baf
|
|
| BLAKE2b-256 |
8150f282975264c790fd60e67beea603e86eb80dfada3c69feba70ff30d25454
|
Provenance
The following attestation bundles were made for awa_cli-0.6.0a6-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on hardbyte/awa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
awa_cli-0.6.0a6-py3-none-macosx_11_0_arm64.whl -
Subject digest:
6a372d0dd8ce99261170af3d483361a168945ba1ffac339634f7549cd6257b57 - Sigstore transparency entry: 1454048064
- Sigstore integration time:
-
Permalink:
hardbyte/awa@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Branch / Tag:
refs/tags/v0.6.0-alpha.6 - Owner: https://github.com/hardbyte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file awa_cli-0.6.0a6-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: awa_cli-0.6.0a6-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aea3e34574b3be45d442eb41ee4b312faf0b8318abc29909746b6ae2440d97a3
|
|
| MD5 |
3284c608f5f11e7dca0b0b96b84eec02
|
|
| BLAKE2b-256 |
5b48a5789ca533abc0756ce04fa19bdb4a88ce38d69c03e333625b0d5ed9bbf2
|
Provenance
The following attestation bundles were made for awa_cli-0.6.0a6-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on hardbyte/awa
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
awa_cli-0.6.0a6-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
aea3e34574b3be45d442eb41ee4b312faf0b8318abc29909746b6ae2440d97a3 - Sigstore transparency entry: 1454048218
- Sigstore integration time:
-
Permalink:
hardbyte/awa@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Branch / Tag:
refs/tags/v0.6.0-alpha.6 - Owner: https://github.com/hardbyte
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d690c4479c966e4372c78e7ea2bf9bd658bc2ed3 -
Trigger Event:
push
-
Statement type: