NebulaNebula
CLI

Command reference

Every nebula-ai command and subcommand, plus the global flags, environment variables, JSON output for scripting, shell completion, and the logs.

Every nebula-ai command, what it does, and the flags that apply everywhere. Run nebula-ai <command> --help for the options on any one of them — that output is generated from the binary you have, so it's always current.

Commands

CommandWhat it does
loginAuthenticate with Nebula via device-flow pairing
logoutClear stored credentials
statusShow CLI status overview
usageShow workspace token usage and cost — --days <n> sets the window
chatSend a message to an agent DM and stream the response
callVoice calls — see below
channelsManage channels — see below
agentsManage agents — see below
workspaceManage workspaces — list, switch, create
integrationsConnect and manage workspace integrations — see below
modelsList and manage the models this workspace can use — see below
userYour profile and account settings — see below
profileYour public profile — get, set, set-email, verify-email, upload-avatar
local-deviceManage computer control and the local device daemon — see below
installSet up computer control — an alias of local-device enable
uninstallTurn off computer control, stop the daemon, and remove this device
capabilitiesProbe and print this host's capability snapshot
logsInspect Nebula log files on disk — logs path prints the directory
updateCheck for a newer CLI version and install it
completionGenerate a shell completion script
acpRun Nebula as an editor agent over the Agent Client Protocol

Run nebula-ai with no command at all to open the full-screen app.

Agents

Everything except list and create takes the agent's ID as its first argument.

CommandWhat it does
agents listList agents
agents createCreate a new agent
agents getGet agent details
agents updateUpdate an agent
agents deleteDelete an agent
agents enableEnable an agent
agents disableDisable an agent
agents logsGet agent logs
agents errorsGet agent errors
agents triggersList triggers for an agent
agents accountsShow which account an agent acts as, and what else it could use
agents set-accountChoose which connected account an agent acts as
agents skills listList skills attached to an agent
agents skills detachDetach a skill from an agent

An agent doesn't pick up your connected accounts on its own — you choose one per app. agents accounts <id> is how you see where that stands from a terminal: it lists your connected accounts with an In use column, so a connected account reading no is exactly what a stalled tool is waiting for.

nebula-ai agents set-account inbox-triage --account acc_9f2c
$ nebula-ai agents set-account inbox-triage --account acc_9f2c
Agent inbox-triage now uses alex@work.com for gmail

The toolkit is implied by the account you name, so there's no separate flag for it. Only the agent's owner can set this — the binding decides which of their identities the agent spends.

To give an agent a new skill, ask Nebula to install it from a link. See Skills and slash commands.

Channels

CommandWhat it does
channels listList channels
channels createCreate a new channel
channels getGet channel details
channels statusShow the channel's work status
channels updateUpdate a channel
channels messagesList messages in a channel
channels shareShare a channel
channels archiveArchive a channel
channels unarchiveUnarchive a channel
channels deleteDelete a channel

nebula-ai chat --resume <channel-id> skips all of this and opens that channel directly in the full-screen app.

Calls

The calls page covers what each of these feels like to use.

CommandWhat it does
call startStart a call and open the call screen
call join <thread>Join an existing call
call list <thread>List a channel's calls, live ones first
call status <thread>Show the state of one call
call chat <thread>Send a one-shot typed message into a call
call leave <thread>Leave a call you're in
call end <thread>End the call for everyone

Integrations

CommandWhat it does
integrations listList integration connections
integrations connect <provider>Connect a workspace integration
integrations disconnect <provider> [account]Disconnect a workspace integration account. The account ID is only needed when more than one is connected

Models

Which models this workspace can use, and which one it falls back to. Curating the catalog and setting the default need workspace admin or owner; listing doesn't. See Models and defaults.

CommandWhat it does
models listList selectable models — Nebula tiers, curated, and custom
models default [model]Show the workspace default, or set it (admin only)
models curateShow which vendor models the workspace offers
models curate --add <ids...>Add vendor models to the curated list
models curate --remove <ids...>Remove vendor models from the curated list
models custom listList custom models visible in this workspace
models custom add <name>Add a custom model — see the flags below
models custom remove <model-id>Delete a custom model you own

models custom add takes --alias <model-id> to create a routing alias to a catalog model, or --base-url <url> with --model-id <id> to point at your own OpenAI-compatible endpoint. Add --auth <value> for an authorization header, --device <device-id> to lock the model to one machine, and --share to make it visible to the whole workspace instead of just you. See Bring your own model for what each of those means.

Local device

The computer control page explains when you'd reach for each.

CommandWhat it does
local-device enableTurn on computer control and start the daemon
local-device disableTurn off computer control and stop the daemon
local-device statusShow computer-control and daemon status, and check with the server which workspace this machine is bound to
local-device logsView daemon logs
local-device startStart the daemon
local-device stopStop the daemon
local-device restartRestart the daemon
local-device exec-mode getShow the current execution mode
local-device exec-mode set <mode>Set whether agents can run commands on this host

Account commands live under user

Anything that belongs to your account rather than the workspace is nested one level down, so nebula-ai user on its own prints a summary of who you're signed in as.

CommandWhat it does
user updateUpdate your username or display name
user variablesManage user variables — list, set, create, delete
user configManage CLI configuration — see below
user billingManage credits — balance, history, auto-topup
user filesManage files — see below
user devicesManage your cloud devices — see below

CLI configuration

CommandWhat it does
user config listList all configuration values
user config get <key>Get a configuration value
user config set <key> <value>Set a configuration value
user config resetReset all settings to defaults
user config modelsList available AI models

user config set telemetry false turns product analytics off. The DO_NOT_TRACK environment variable does the same thing without touching your config.

Files

CommandWhat it does
user files listList files
user files get <id>Get file details
user files content <id>Print a text file's contents
user files upload <path>Upload a file
user files download <id>Download a file
user files share <id>Create a shared link for a file
user files foldersList folders
user files delete <id>Delete a file

Cloud devices

These are your cloud devices, not the machine you're typing on — that one is local-device.

CommandWhat it does
user devices infoGet your device info
user devices startStart your device
user devices stopStop your device
user devices rename <name>Rename your device
user devices visibility <true|false>Make the device visible to your workspace, or keep it private
user devices filesList files on the device
user devices search <pattern>Search device files by filename glob
user devices deleteDelete your device
user devices services listList device services
user devices services get <name>Get service details
user devices services create <name>Create a long-running service
user devices services start <name>Start a service
user devices services stop <name>Stop a service
user devices services logs <name>Get service logs

Changing your email address

Your email is the one profile field you can't set outright — changing it takes proof that you can receive mail at the new address, so it runs in two steps.

Run nebula-ai profile set-email <address>. Nebula mails a six-digit code to the new address and tells you your current address hasn't changed yet.

Run nebula-ai profile verify-email <code> with the code from that mail. Only then does the address actually change.

Codes expire after 15 minutes; request another with set-email if yours runs out. nebula-ai profile get marks an address that hasn't been confirmed yet with (unverified).

Using Nebula from your editor

nebula-ai acp runs Nebula as an agent over the Agent Client Protocol, speaking on standard input and output rather than drawing anything itself. Point an editor that speaks ACP at that command and Nebula answers inside the editor, with the same agents and channels you get everywhere else.

nebula-ai acp
$ nebula-ai acp
# no output — the editor drives it over stdin/stdout

Each session is scoped to the directory the editor opens it in, and that directory becomes the working folder the agent reads and writes in. The scoping comes from computer control, so run nebula-ai local-device enable first — without a registered device, sessions fail with "Nebula local device is not configured."

Run it by hand and it will sit there silently waiting for protocol messages. That's correct behaviour, not a hang — press Ctrl C to exit.

Global flags

These work on every command.

FlagWhat it does
--jsonOutput raw JSON
--workspace <id>Run against a specific workspace, ignoring the active one
-v, --verboseVerbose output — the same as --log-level=debug
--log-level <level>One of error, warn, info, debug, trace
--no-colorDisable colours
--api-url <url>Point at a different API host

Environment variables

Useful when you can't pass flags — CI, containers, a shared shell profile.

VariableWhat it does
NEBULA_AUTH_TOKENUse a pre-minted token instead of the stored credential. Takes precedence over whatever login saved
NEBULA_API_BASEPoint at a different API host — the same thing --api-url does
NEBULA_WEB_URLPoint the links the CLI opens, such as sign-in, at a different Nebula host
NEBULA_HOMEOverride ~/.nebula, where credentials, settings, and logs live
NEBULA_LOG_LEVELOne of error, warn, info, debug, trace — the env form of --log-level
NEBULA_DEBUGSet to true for verbose logging — the same as -v
DO_NOT_TRACKSet to 1 to turn product analytics off. NEBULA_DO_NOT_TRACK works too
NEBULA_AI_NO_UPDATE_CHECKSet to 1 to skip the daily update check
NEBULA_AI_CACHE_DIROverride where npx nebula-ai caches the downloaded binary
NEBULA_AI_DOWNLOAD_BASEDownload that binary from a mirror instead — useful behind a strict firewall

NEBULA_AUTH_TOKEN is the one to reach for in CI. It skips the device-flow browser handoff entirely, which a build agent can't complete anyway.

Scripting

--json turns any command into something you can pipe. It's a global flag, so it works the same everywhere.

nebula-ai channels list --json | jq -r '.[].title'
$ nebula-ai channels list --json | jq -r '.[].title'
Launch retro
Design sync

List commands emit a top-level array under --json, so .[] is the right entry point rather than reaching through a wrapper.

The columns a command prints don't always match its JSON field names. Run the command once with --json and read the shape before writing the jq.

Combine --json with --workspace in CI so a script never depends on whichever workspace happened to be active on that machine.

Shell completion

nebula-ai completion prints a completion script for bash, zsh, or fish — source it from your shell profile.

nebula-ai completion zsh > ~/.nebula-completion.zsh
$ nebula-ai completion zsh > ~/.nebula-completion.zsh
# then add: source ~/.nebula-completion.zsh

When something goes wrong

nebula-ai status shows whether you're signed in and which workspace you're pointed at — most surprises are one of those two. nebula-ai capabilities reports what this machine supports, like whether ffmpeg is available for camera.

nebula-ai logs path prints the directory the log files live in (~/.nebula/logs/), ready to pipe into your pager. Re-run a failing command with -v for the detail.

nebula-ai update checks for a newer version and installs it. Worth trying before reporting anything.

Still stuck? Ask Nebula directly — it's good at drafting a support email with the right detail in it. For bugs or anything unresolved, email support@nebula.gg.

On this page