owlette docs
clireference

site

a site is the top-level scope every operator command nests under (roosts, machines, audit log, quota, deploys, processes — all site-scoped). this noun is read-only in v1: site create / update / delete stay in the dashboard. tier: [ready] for both verbs.

verbs:

  • site list — list sites the caller has access to
  • site get — print the detail record for one site

site list

lists every site the active token has access to, server-resolved from the caller's identity. emits a plain ascii table by default and a { "sites": [...] } envelope under --json (legacy unwrapped shape — kept stable for scripts that pipe into jq).

owlette site list [--json]

no verb-specific flags. inherits --json, --profile, and --api-url from the global set.

examples

# human-readable table — id, name, plan, timezone, createdAt
owlette site list
# pull just the ids for use in another command
owlette --json site list | jq -r '.sites[].id'
# count how many sites you can see
owlette --json site list | jq '.sites | length'

backing: GET /api/sites.


site get

prints the full detail record for one site (id, name, plan, timezone, owner, createdAt). under --json the cli emits the raw detail object directly — there is no { "site": {...} } wrapper.

owlette site get <siteId> [--json]

no verb-specific flags. the positional <siteId> is required. inherits --json, --profile, and --api-url from the global set.

examples

# human-readable detail block
owlette site get site-1
# pull a single field
owlette --json site get site-1 | jq -r '.timezone'
# scripted: only proceed if the site is on the pro plan
plan=$(owlette --json site get site-1 | jq -r '.plan')
[ "$plan" = "pro" ] || { echo "skipping — not on pro plan"; exit 0; }

backing: GET /api/sites/{siteId}.


exit codes

  • 0 — success (table printed or detail emitted)
  • 1 — network failure or non-2xx api response (e.g. 404 if <siteId> doesn't exist or you lack access)
  • 2 — no token configured for the active profile (run owlette auth login first)

notes

  • scope: user — lists sites the caller's token has access to; no --site flag because the noun is the site
  • tier: [ready] for reads only. create, update, and delete are intentionally absent in v1 — manage sites from the dashboard
  • json envelope: list emits { "sites": [...] } (legacy unwrapped shape); get emits the raw detail object. new commands wrap in { ok, data } — these two predate that convention and stay stable for compatibility
  • related: overview (auth + config precedence), roost, quota, and every other operator noun (all consume --site <siteId> against the ids returned here)

on this page