Usage and audit
Two admin commands for org-wide visibility: a live usage rollup, and a tamper-evident audit trail of everything that's happened.
Org usage
$ adj org usage
QUOTA
max per user: 3
max per org: 30
active in org: 14
USERS
EMAIL NAME ROLE STATUS ACTIVE TOTAL
[email protected] Alex Park admin active 1 4
[email protected] Dana Lin user active 2 9
GOLDENS
NAME LATEST SHARED ACTIVE TOTAL
prod-pg16 3 true 11 40
CLUSTERS
NAME HEALTH LAST_SEEN ACTIVE_INSTANCES
prod connected 6s ago 14
POOLS
prod-pg16: 5/5 warm
IMPORTS
total: 3
succeeded: 3
failed: 0
last finished at: 2026-07-18T22:10:04Z
One command, six sections:
- QUOTA — the org's current caps and total active instance count.
- USERS — every member with their role, status, and instance counts (active vs. lifetime total).
- GOLDENS — every golden lineage: latest version, whether it's shared, and how many clones are active vs. have ever existed.
- CLUSTERS — registered clusters, agent connectivity health, and how long since the last heartbeat.
- POOLS — warm count vs. target per pool (
(none)if you haven't created any). - IMPORTS — lifetime import job counts and the last completion time.
-o json (or -o yaml) emits the same data as a single structured document
— useful for feeding a dashboard or a scripted check instead of reading the
table.
Audit log
$ adj org audit --limit 3
SEQ TS ACTOR ACTION RESOURCE
102 2026-07-18T22:10:04.812345Z [email protected] import.start 5b9d7c31-2e4f-4a6b-8c0d-1e2f3a4b5c6d
101 2026-07-18T21:02:11.204819Z [email protected] instance.launch 7a1e9c3d-5b2f-4c8a-9d0e-2f3a4b5c6d7e
100 2026-07-18T20:58:40.573062Z [email protected] invite.create 1f2e3d4c-5b6a-4978-8c9d-0e1f2a3b4c5d
Every state-changing action in the org — logins, invites, instance launches,
deletes, quota changes, cluster registration, and more — is recorded as a
sequenced event with an actor, a dotted action name (e.g. instance.launch,
snapshot.share, invite.create, cluster.register), and the affected
resource's id (a UUID). --limit caps how many events come back (server
default if omitted); --before takes an RFC3339 timestamp as a pagination
cursor to page further back in history.
Tamper-evident verification
$ adj org audit --verify
...
audit chain OK (23 events verified)
Each audit event is hash-chained to the one before it — the same shape as a
blockchain's block-linking, without the distributed-consensus part. --verify
re-derives the chain from the stored events and confirms nothing was altered
or deleted out from under you. If verification fails, the command exits
non-zero with the specific failure:
$ adj org audit --verify
Error: audit chain BROKEN: <reason>
That should never happen in normal operation — treat it as a signal to investigate the control plane's audit store directly, and loop in Adjoint support.
Exporting
$ adj org audit --limit 500 -o json > audit-export.json
-o json is the export path: no separate export command, just the audit
list in structured form. Combine with --before to page through the full
history in batches if you're pulling more than one page's worth.
Next
- Cluster operations — cluster health
shown in
org usage(CLUSTERS section) is the same data asadj cluster status. - Users and quotas — setting the caps that
org usage's QUOTA section reports against.