nullctl CLI
nullctl is the official command-line tool for Null Autos. Anything you can do
in the portal you can do with nullctl, which makes it ideal for scripting,
automation, and CI/CD. It follows a familiar verb-on-object grammar, similar
to kubectl:
nullctl <verb> <object> [name] [flags]
# e.g.
nullctl get emulators
nullctl create emulator --snapshot base-aaos
Installation
nullctl is distributed as a single self-contained binary. Get it from your
platform's distribution channel and confirm it is working:
nullctl version
It comes pre-installed in Null Autos cloud workspaces.
Authentication
nullctl resolves credentials from a chain, trying each in order until one
succeeds, so the same commands work on your laptop, in CI, and in a workspace:
- GitLab CI job token (
CI_JOB_TOKEN), automatic in pipelines. - Workspace token, automatic inside a cloud workspace.
- Browser single sign-on, interactive, on your machine.
Mint or refresh a token explicitly, or sign out:
nullctl auth token
nullctl auth logout
Contexts & configuration
Connection settings live in contexts (API URL, identity provider, and client details). The active context determines which environment you are talking to.
nullctl get context # list/show contexts
nullctl edit context # edit a context
nullctl get config # show resolved config
- Global config:
~/.config/nullauto/config.yaml - Select a context per command:
--context <name> - Use an alternate config file:
--config <path>
Common workflows
Emulators
nullctl get emulators # list your emulators
nullctl get emulator <id> # inspect one
nullctl create emulator --snapshot <name> # launch (polls until running)
nullctl browse emulator <id> # open in your browser
nullctl adb connect <id> # proxy adb to a local port
nullctl delete emulator <id> # tear down
Snapshots
nullctl get snapshots # list snapshots
nullctl get snapshot <name> # inspect one
nullctl create snapshot ... # create a snapshot
nullctl snapshot score # value-based retention scoring
nullctl snapshot promote-root <name> # protect as a retention root
nullctl delete snapshot <name>
Identity & access
nullctl get whoami # who am I
nullctl get permissions # what can I do
nullctl get permission-check ... # check a specific permission
nullctl get users / get user <id>
nullctl get tenants / get tenant <id>
nullctl get groups / get group <id>
nullctl get group-members / get group-grants
Raw API access
nullctl api GET /api/v1/emulators # call the control plane directly
nullctl api is a thin passthrough to the REST API,
handy for endpoints without a dedicated subcommand.
Plugins
nullctl is extensible: any executable named nullctl-<name> on your PATH
becomes a subcommand. When you run an unknown command, nullctl looks for a
matching plugin and hands off to it, passing along your active context and
credentials so plugins inherit your auth state.
nullctl plugin list # discover installed plugins
nullctl infra cell create ... # example: the infra plugin
Command summary
| Verb | Works with |
|---|---|
get | config, context, snapshots, emulators, users, tenants, groups, group-members, group-grants, whoami, permissions |
create | emulator, snapshot, tenant, group, group-member, group-grant |
delete | emulator, snapshot, and other objects |
edit | context |
auth | token, logout |
adb | connect |
browse | emulator |
snapshot | score, promote-root |
api | raw request passthrough |
plugin | list |