Develop

Command reference

mobius groups its commands by the thing you're working on. This page tells you which group to reach for. For the exact commands and options, run mobius <group> --help, which always matches the version you have installed.

The groups

GroupUse it for
authSign in, check who you are, switch between logins.
organizationsYour organization's own settings.
agentsAgents, their memory, their inboxes, and what they're allowed to use.
sessionsConversations: start one, read it, watch it live, steer it mid-reply.
routinesRecurring agent work: list, create, pause, resume, cancel, and read occurrences.
actionsManage organization-wide custom actions, run one directly, see past calls.
catalogSee what's available to you: actions, events, and AI models.
skillsManage organization-wide reusable instructions for agents.
interactionsApprovals, questions, and reviews waiting on a person.
tablesShared tables and the rows in them.
artifactsFiles an agent produced: list, inspect, download, delete, share.
api-keysAPI keys for software that calls Mobius.
blueprintsStamp out the same setup for a new client.
workerRun a worker on this machine.
billingList usage events, to see where the credits went.

A few more exist for access administration: principals, roles, and permissions. You'll meet those when you're setting up who can do what, not day to day.

Sending a file instead of typing flags

Anything with more than a couple of fields is easier to keep in a file. Commands that create or update something take --file, in JSON or YAML:

mobius agents create \
  --file scout.yaml \
  --fields id,name,status \
  --output json
{
  "id": "agent_9q2m7x5v3p8n4r6t",
  "name": "Scout",
  "status": "active"
}

Two things make this pleasant to live with:

  • --dry-run prints the request without sending it. Use it every time you change the file. It costs nothing and catches typos before they become a half-created resource.
  • --var KEY=value fills in blanks. Write ${CLIENT} in the file and pass --var CLIENT=ridgeline, and one file covers every client.

Flags you pass on the command line win over what's in the file.

Working with routines

List what is scheduled, and for which agent:

mobius routines list \
  --fields id,name,status,next_fire_at \
  --output json
{
  "items": [
    {
      "id": "rtn_9q2m7x5v3p8n4r6t",
      "name": "Morning brief",
      "status": "active",
      "next_fire_at": "2026-09-01T08:00:00Z"
    }
  ],
  "has_more": false
}

Read what each occurrence did:

mobius routines list-occurrences rtn_9q2m7x5v3p8n4r6t \
  --fields scheduled_for,status \
  --output json

Stop one without losing its schedule:

mobius routines pause rtn_9q2m7x5v3p8n4r6t

Pausing is the safe first move when a routine is misbehaving. resume puts it back on its schedule; cancel ends it for good.

Working with conversations

mobius sessions list
mobius sessions get <session-id>
mobius sessions stream <session-id>

stream holds the line open and prints the agent's reply as it arrives.

If an agent is working and heading the wrong way, you don't have to wait for it to finish. Send it a note mid-reply:

mobius sessions nudge <session-id> \
  --content "Draft the reply, but don't send anything to the client." \
  --fields id,status,delivery \
  --output json
{
  "id": "<nudge-id>",
  "status": "pending",
  "delivery": "current_turn"
}

current_turn means it reaches the agent during the reply it's writing now.

Working with data

mobius artifacts list
mobius tables list

Writing is per-resource, so ask the command what it wants:

mobius tables create --help
mobius tables upsert-row --help

Running a worker

A worker is how Mobius reaches things it can't reach on its own, like a server inside a client's network. Start one:

mobius worker

It logs a lot on startup. Two lines are the ones that matter, in this order:

level=INFO msg="starting worker" api_url=... queues=... ...
level=INFO msg="worker registered" worker_instance_id=<instance-id> heartbeat_cadence_seconds=<seconds>

The first says the process started. The second says Mobius knows about it and will send it work. Until you see the second one, nothing is happening.

By default it takes work from every queue in your organization. Use --queues to narrow it when you're running more than one worker and want them doing different things.

The process stays in the foreground while it's connected, so leave the window open or run it as a service. A reconnect message now and then is normal, that's a brief network blip. Worry when worker registered never appears at all, or when it reconnects over and over without settling.

Secrets that print once

Commands that create an API key or a signing secret show you the full value one time and never again. There's no "show it to me" command later, by design.

mobius api-keys create \
  --name ci-worker \
  --principal-id <principal-id> \
  --output json
{
  "id": "<key-id>",
  "name": "ci-worker",
  "key": "<one-time-api-key>"
}

Put it in your password manager or secret store before you close the terminal. If you lose it, the fix is to create a new key and delete the old one.

Next