CLI reference
Every statuz command with its flags, MCP tool name, where it runs and examples. Generated from the command catalog.
Posts
statuz posts createWrite a post or thread; publish now, schedule it or keep a draft
Each --text is one post of a thread. --media takes file paths or media ids and attaches to the first post; use --input with a `thread` array to put media on later posts. Text is checked against every destination before anything is saved, so a post never fails later for being too long. Without --at it publishes right away and returns the links.
- --text
- Post text; repeat for a thread · string · repeatable
- --media
- Image or video path, or a media id, for the first post · string · repeatable
- --thread
- The whole thread with media per post (instead of --text) · object · repeatable
- --to
- Account id, handle or platform name (x, bluesky, mastodon, linkedin = its default account). Default: every default account · string · repeatable
- --at
- When to publish: ISO time or plain words ("tomorrow 9am", "in 2 hours", "fri 17:30"). Without it the post goes out now · string
- --timezone
- IANA time zone for --at words (default: this machine's; on Statuz Cloud, the org's) · string
- --quote
- URL of a post to quote (X, Bluesky) · string
- --draft
- Save without publishing or scheduling · boolean · default false
- --watermark
- Statuz Cloud: stamp the org's logo on the images and videos (default: the org's setting) · boolean
- --group
- Joins this post to its other halves in other homes (the Mac app sends one per home) · string
statuz posts create --text "Shipping v2 today" --to x --to bluesky
statuz posts create --text "1/ A thread" --text "2/ that keeps going" --at "tomorrow 9am"
statuz posts create --text "New screenshots" --media ./shot.png --to mastodon --draft
echo '{"thread":[{"text":"Hello","media":[]}],"to":["linkedin"]}' | statuz posts create --input -statuz posts listList posts, soonest first (scheduled) or newest first (the rest)
- --status
- Only these statuses (repeatable) · draft | scheduled | publishing | published | failed | missed | held · repeatable
- --platform
- Only posts going to it · x | bluesky | mastodon | linkedin
- --from
- Scheduled at or after (ISO or words) · string
- --until
- Scheduled before (ISO or words) · string
- --limit
- number (1–500) · default 50
statuz posts list --status scheduled
statuz posts list --from today --until "next monday"statuz posts getOne post with every destination and its result
- --id
- string · required
statuz posts get --id p_k3m9x2abqestatuz posts editChange a draft, scheduled, missed or failed post
Fields you pass replace the old ones. Published posts can’t be edited. Moving --at into the past publishes on the next tick.
- --id
- string · required
- --text
- Replace the thread text · string · repeatable
- --media
- string · repeatable
- --thread
- object · repeatable
- --to
- Account id, handle or platform name (x, bluesky, mastodon, linkedin = its default account). Default: every default account · string · repeatable
- --at
- When to publish: ISO time or plain words ("tomorrow 9am", "in 2 hours", "fri 17:30"). Without it the post goes out now · string
- --timezone
- IANA time zone for --at words (default: this machine's; on Statuz Cloud, the org's) · string
- --quote
- URL of a post to quote (X, Bluesky) · string
- --draft
- true parks it as a draft; false schedules it again · boolean
- --watermark
- Statuz Cloud: stamp the org's logo on the images and videos (default: the org's setting) · boolean
statuz posts edit --id p_k3m9x2abqe --at "fri 10:00"
statuz posts edit --id p_k3m9x2abqe --text "Fixed typo"statuz posts deleteDelete a post: from the platforms it went out to, then from Statuz
Every published part of the thread is deleted on its platform first. If a platform refuses, the post stays in Statuz with only what is left, so deleting again retries it.
- --id
- string · required
- --keep-on-platforms
- Only delete it from Statuz; published copies stay up · boolean · default false
statuz posts delete --id p_k3m9x2abqe
statuz posts delete --id p_k3m9x2abqe --keep-on-platformsstatuz posts publishPublish now: a draft, a scheduled or missed post, or retry failures
A failed post only retries the destinations that failed; the ones that went out are not posted twice.
- --id
- string · required
statuz posts publish --id p_k3m9x2abqestatuz posts recentAn account's latest posts on the platform, to quote or reply to
- --account
- Account id, handle or platform name · string · required
- --limit
- number (1–50) · default 10
statuz posts recent --account bluesky --limit 5Accounts
statuz accounts listConnected accounts and how their sign-ins are doing
- --platform
- x | bluesky | mastodon | linkedin
statuz accounts list
statuz accounts list --platform xstatuz accounts connectConnect an account by signing in with the platform in your browser
Locally the sign-in returns to 127.0.0.1:3851 and the tokens go into the OS keychain. X and LinkedIn use your own developer app: set its keys first with `statuz config set x.client-id …` (see `statuz help config`). Bluesky and Mastodon need nothing.
- --platform
- x | bluesky | mastodon | linkedin · required
- --server
- Mastodon instance (mastodon.social) or your Bluesky handle, for a custom server · string
- --no-browser
- Open the browser (--no-browser prints the link) · boolean
statuz accounts connect --platform bluesky
statuz accounts connect --platform mastodon --server fosstodon.orgstatuz accounts removeDisconnect an account and delete its tokens
Scheduled posts that only went to this account are kept as drafts.
- --account
- Account id or handle · string · required
statuz accounts remove --account @statuz_appstatuz accounts defaultMake an account the default for its platform
- --account
- Account id or handle · string · required
statuz accounts default --account stewan.iostatuz accounts moveMove an account up or down the list
The list is kept in this order everywhere it shows: `statuz accounts list`, the Mac app and the composer.
- --account
- Account id or handle · string · required
- --position
- Its place in the list: 1 is the top; past the end is the end · number (1–9007199254740991) · required
statuz accounts move --account @you.bsky.social --position 1statuz accounts checkCheck every sign-in now (the daemon also does it before posts are due)
- --account
- Only this account · string
statuz accounts checkMedia
statuz media addCopy an image or video into Statuz and get an id to attach
JPEG, PNG, WebP, GIF, MP4 and MOV. The file is copied, so moving or deleting the original later is fine. Statuz never edits media; platform limits are checked when a post is created.
- --path
- File to add · string · required
- --alt
- Alt text for screen readers · string
statuz media add --path ./shot.png --alt "The new composer"statuz media listMedia added to Statuz, newest first
- --limit
- number (1–500) · default 50
statuz media liststatuz media editChange the alt text of a media item
- --id
- string · required
- --alt
- string · required
statuz media edit --id m_x8k2pq4nre --alt "A cat on a keyboard"statuz media removeDelete a media item that no unpublished post uses
- --id
- string · required
statuz media remove --id m_x8k2pq4nreConfig
statuz config listEvery setting in ~/.statuz, including your own X and LinkedIn app keys
statuz config liststatuz config getOne setting
- --key
- string · required
statuz config get --key timezonestatuz config setChange a setting; secrets go to the OS keychain
- --key
- string · required
- --value
- string · required
statuz config set --key x.client-id --value <client-id>
statuz config set --key linkedin.client-secret --value <secret>
statuz config set --key timezone --value America/Sao_Paulostatuz config unsetClear a setting
- --key
- string · required
statuz config unset --key linkedin.client-secretSetup and daemon
statuz initSet up ~/.statuz, write the agent guide and connect your agent apps
Writes AGENTS.md and the Statuz skill, then finds the agent apps on this machine (`statuz agents list` names every one Statuz knows). In a terminal you pick which ones to connect from a list; --agents connects every one found without asking, --no-agents skips the list. Safe to run again.
- --agents
- Connect every installed agent app (default: ask in a terminal, otherwise only report) · boolean
statuz init
statuz init --agents
statuz init --no-agentsstatuz startStart the local daemon that publishes scheduled posts
Runs in the background and comes back after a reboot (launchd on macOS, a systemd user unit on Linux). It only runs on a personal computer: virtual machines and machines without a desktop session are refused; use Statuz Cloud there.
- --no-service
- Install the login service (--no-service runs it once) · boolean
statuz startstatuz stopStop the local daemon (scheduled posts wait until it starts again)
statuz stopstatuz statusIs the daemon running, what is next, and what needs you
statuz statusstatuz logsThe last lines of the daemon log
- --lines
- number (1–5000) · default 100
statuz logs --lines 50statuz openShow the person a post or a page: in the Mac app when it is installed, else on statuz.cloud
Opens it on this computer and says where. This computer's posts show in the Mac app only. Statuz Cloud opens nothing by itself: `statuz open --cloud` opens its link here, and an agent working on Statuz Cloud gives the person `links.web`.
- --post
- Post id (statuz posts list) · string
- --page
- A page instead of a post (billing is Statuz Cloud only) · queue | compose | accounts | settings | billing
statuz open --post p_k3m9x2abqe
statuz open --page queue --cloudstatuz feedbackSend feedback or a bug report to the Statuz team
Agents: send it when something confuses you, fails, or could be better, with the command and error. It reaches the team; nobody else sees it. Read-only credentials may send it.
- --message
- string · required
- --kind
- bug, idea, confusing, praise or other · bug | idea | confusing | praise | other · default "other"
- --command
- The command it is about, like posts.create · string
- --error
- The error it gave · string
- --task
- What you were trying to do · string
- --agent
- Your agent, if you are one · string
- --model
- Your model, if you are one · string
- Where we can reply, when not signed in · string
- --client
- object
- --page
- object
- --screenshot
- A JPEG or PNG data URL; the CLI takes a file: --screenshot shot.png · string
statuz feedback --message "Scheduling from Raycast would be great" --kind idea
statuz feedback --kind bug --command posts.create --error "media too large" --message "A 40 MB video was refused"Agent apps
statuz agents listAgent apps on this machine and whether Statuz is connected to them
Apps with a terminal (Claude Code, Codex, Cursor, VS Code, Copilot CLI, Windsurf, Gemini CLI, OpenCode, Amp, Goose, Cline, Kilo Code, Factory Droid, Qwen Code, Crush, Warp, Zed, Junie, Mistral Vibe, Kimi Code, Qoder, OpenHands, Pi, Letta Code and Trae) get the Statuz skill in a skills folder they read; apps without one (Claude Desktop, LM Studio, Jan, AnythingLLM and BoltAI) get an MCP server entry.
statuz agents liststatuz agents addConnect Statuz to your agent apps (all the installed ones by default)
Links ~/.statuz/skills/statuz into each app’s skills folder (~/.claude/skills, ~/.agents/skills for Codex, ~/.gemini/skills, ~/.config/opencode/skills and so on) and adds an MCP server to the config of apps without a terminal (Claude Desktop, LM Studio, Jan, AnythingLLM and BoltAI). Nothing already there is overwritten. Some apps also read other apps’ folders, so connecting several can show the skill twice. `statuz agents list` shows every path.
- --agent
- Only these apps (repeatable); default: every installed one · claude-code | codex | cursor | vscode | copilot-cli | windsurf | gemini-cli | opencode | amp | goose | cline | kilo | droid | qwen-code | crush | warp | zed | junie | vibe | kimi-code | qoder | openhands | pi | letta | trae | claude-desktop | lm-studio | jan | anythingllm | boltai · repeatable
statuz agents add
statuz agents add --agent claude-desktopstatuz agents removeDisconnect Statuz from agent apps (all by default)
- --agent
- Only these apps (repeatable) · claude-code | codex | cursor | vscode | copilot-cli | windsurf | gemini-cli | opencode | amp | goose | cline | kilo | droid | qwen-code | crush | warp | zed | junie | vibe | kimi-code | qoder | openhands | pi | letta | trae | claude-desktop | lm-studio | jan | anythingllm | boltai · repeatable
statuz agents remove --agent cursorSign-in
statuz auth whoamiWho you are signed in as on Statuz Cloud, and your orgs
statuz whoamiStatuz Cloud
statuz cloud moveMove this computer's scheduled posts and drafts to Statuz Cloud
Connect the same accounts in Statuz Cloud first: tokens never leave this computer. Each post moves with its media, then its local copy is deleted. Posts whose accounts are not in Cloud yet stay here. --dry-run shows what would move.
- --dry-run
- Show what would move; change nothing · boolean · default false
statuz cloud move --dry-run
statuz cloud movestatuz cloud pricingStatuz Cloud prices (works offline; local publishing is free)
statuz cloud pricingstatuz cloud billing balanceThe org's credit balance, the next expiry and auto-reload
statuz cloud billing balancestatuz cloud billing depositAdd credits: returns a Stripe Checkout link (opened in your browser)
- --amount
- USD, 5 to 1000 · number (5–1000) · required
statuz cloud billing deposit --amount 20statuz cloud billing auto-reloadTurn auto-reload on or off (off by default)
- --on
- --on or --no-on · boolean · required
- --below
- Reload below this balance (USD) · number (≥ 1)
- --amount
- Reload this much (USD) · number (≥ 5)
statuz cloud billing auto-reload --on --below 5 --amount 20statuz cloud billing ledgerDeposits, spending, promos and expiries, newest first
- --since
- 30d, 6m or an ISO date · string · default "30d"
- --limit
- number (1–1000) · default 100
statuz cloud billing ledger --since 30dstatuz cloud billing cardSave a card, or manage cards and receipts in the Stripe portal once there is one
Without a card it opens a Checkout that saves one without charging it (auto-reload uses it). Signed in with the email you bought Statuz 1 with, saving a card or a first deposit adds $4 of credits, once per license.
statuz cloud billing cardstatuz cloud org listThe orgs you belong to
statuz cloud org liststatuz cloud org createCreate an org; you become its owner
- --name
- string · required
- --timezone
- Default: the creator's zone · string
statuz cloud org create --name "Intenseloop"statuz cloud org updateRename the org, or change its watermark default or time zone
- --name
- string
- --watermark
- Watermark posts with the org logo unless a post turns it off · boolean
- --timezone
- IANA time zone for time words like "tomorrow 9am" when a command names none · string
statuz cloud org update --watermark
statuz cloud org update --timezone America/Sao_Paulostatuz cloud team listWho's in the org, with roles, and pending invites
statuz cloud team liststatuz cloud team cancelCancel a pending invite: its link stops working
- --id
- string · required
statuz cloud team cancel --id <inviteId>statuz cloud team inviteInvite someone by email (each extra seat is $5 a month in credits, prorated the month they join)
- string · required
- --role
- owner | admin | member | viewer · default "member"
statuz cloud team invite --email [email protected]statuz cloud team resendSend a pending invite again: a new link, emailed, good for 14 more days
The old link stops working. You can resend only invites for roles you may give.
- --id
- string · required
statuz cloud team resend --id <inviteId>statuz cloud team roleChange someone's role
- --user-id
- string · required
- --role
- owner | admin | member | viewer · required
statuz cloud team role --user-id <userId> --role adminstatuz cloud team removeRemove someone from the org, or leave it (your own id)
Anyone may leave, viewers too; removing someone else takes an admin, and an owner takes an owner.
- --user-id
- string · required
statuz cloud team remove --user-id <userId>statuz cloud keys listAPI keys for scripts, CI and agents (only prefixes are shown)
statuz cloud keys liststatuz cloud keys createCreate an API key (STATUZ_TOKEN); the secret is shown once
A key has its own role, viewer (reads), member (also writes posts and connects accounts) or admin (also runs the team and settings), up to yours; never owner, so no key reaches billing. It acts with the lower of its role and yours as it is when used: demote or remove its creator and it loses that reach too.
- --label
- string · required
- --role
- viewer, member or admin; at most your own role · viewer | member | admin · default "member"
statuz cloud keys create --label "CI"
statuz cloud keys create --label "Dashboard" --role viewerstatuz cloud keys renameRename an API key
- --id
- string · required
- --label
- string · required
statuz cloud keys rename --id <keyId> --label "Release bot"statuz cloud keys revokeRevoke an API key
- --id
- string · required
statuz cloud keys revoke --id <keyId>statuz cloud accounts connectStart connecting an account to Statuz Cloud: returns a sign-in link to open
Open the link in a browser, then wait with cloud.accounts.connected. `statuz accounts connect` does both for you. Cloud signs in with Statuz’s own X and LinkedIn apps: no developer keys.
- --platform
- x | bluesky | mastodon | linkedin · required
- --server
- Mastodon instance or your Bluesky handle, for a custom server · string
statuz cloud accounts connect --platform blueskystatuz cloud accounts connectedWait for a sign-in started with cloud.accounts.connect
- --connect-id
- string · required
- --wait
- Seconds to wait for it to finish · number (0–25) · default 20
statuz cloud accounts connected --connect-id <connectId>statuz cloud invites getLook up an invite link before accepting it
- --token
- string · required
statuz cloud invites get --token inv_…statuz cloud invites acceptJoin the org an invite link is for
The invite must be for the email you signed in with. Accepting one you already accepted just returns the org.
- --token
- string · required
statuz cloud invites accept --token inv_…Everywhere
Global flags6
- --json
- JSON output for scripts and agents
- --compact
- One-line JSON (with --json)
- --input <json|->
- Raw input as JSON, or '-' to read stdin
- --local, --cloud
- Run this command on this machine or on Statuz Cloud
- --org <id>
- Statuz Cloud org (default: your first org)
- --api <url>
- Statuz Cloud API URL (default: STATUZ_API_URL, else https://api.statuz.cloud)
Built into the CLI7
- statuz login [--no-browser]
- Sign in to Statuz Cloud in your browser
- statuz logout
- Sign out of Statuz Cloud
- statuz whoami
- Who you are on Statuz Cloud (same as `auth whoami`)
- statuz use local|cloud
- Where commands run by default
- statuz mcp
- Serve the commands to an agent over MCP (stdio)
- statuz help [command] [--json]
- Help; --json prints the catalog for agents
- statuz --version
- Print the version