Skip to content
Uno Docs

uno CLI command reference

This page lists every uno command, grouped by task, and gives the full flag tables for uno kit pay, uno kit quota and uno kit resume. It is for developers and AI agents who need to find a command or check a flag. The page is self-contained.

Some values on this page can change. They are marked "today". Run uno kit capabilities for the live limits and prices. Run uno <command> --help or uno <command> --schema for the exact flags of any command. See Agent mode and exit codes for the JSON envelope and the exit-code table.

Find a command

Do not guess flags. Ask the CLI.

uno --llms --format json
uno --llms-full --format json
uno kit pay --schema

uno --llms-full --format json prints every command with its flags and output fields. The commands on this page match the command tree that the CLI tests expect, plus uno skills add. The hidden kit ops group is left out.

Global flags

These flags work on every command. See Agent mode and exit codes for what each does.

GroupFlags
Account and origin--account, --expect-account, --anonymous, --api, --kit-api, --confirm-kit-api-origin, --kit-target
Diagnostics--telemetry, --trace
Output--format, --json, --filter-output, --full-output, --token-count, --token-limit, --token-offset
Discovery--help, --llms, --llms-full, --schema

No command takes a credential as a flag.

Commands by task

Each line is one command. Descriptions are short forms of the CLI help.

Sign in and manage accounts

CommandWhat it does
uno loginSign in to Uno. Local macOS uses a native passkey. SSH and other platforms use web login.
uno logoutSign out one account, or every saved account with --all.
uno whoamiShow the signed-in account and Uno username.
uno auth statusShow local session and passkey support without network requests.
uno account createCreate an unverified account and sign in. The key stays on this machine. Losing the key loses the account.
uno account verifyHand an unverified account to uno.fun to add an email and a passkey.
uno account loginSign in to an unverified account with the key on this machine.
uno account listList saved accounts for this origin without network requests.
uno account currentValidate and show the selected account online.
uno account switchChange the active local account. Explicit pins keep their own account.
uno account bindBind a physical folder tree to an account in your config.
uno account unbindRemove this folder's binding and reveal any parent binding.
uno account key exportWrite a copy of the account key to a new file. Anyone with the file controls the account.
uno account key importRestore an account key from a file that uno account key export wrote.

Username and profile

CommandWhat it does
uno usernameShow your Uno username.
uno username checkCheck whether a Uno username is available, and why not.
uno username setSet or change your Uno username. The server may refuse a change during a cooldown.
uno profile updateSet your given name, family name and bio.

Read Kits

CommandWhat it does
uno kit discoverList recently updated public Kits, newest first.
uno kit listList an owner's Kits. With no owner, list your own, private ones included.
uno kit profileRead the public profile linked to a Kit owner.
uno kit showList all committed files.
uno kit catPrint a committed file as text, or in data.text with JSON output.
uno kit getDownload a Kit object to a new file.
uno kit logRead commit history with pagination.
uno kit diffCompare files between two revisions.
uno kit refsList the Kit's branches and tags.
uno kit read-refRead the current commit ID of a branch or tag, to pass to a write as --expected-head.
uno kit object-urlFind an accessible object URL. Use kit get for private downloads.
uno kit layoutInspect a file's content chunks and proof metadata.
uno kit proveRead content proof metadata for a revision or file.
uno kit verifyCheck signature validity, authorization at acceptance and later revocation separately.
uno kit cloneClone a Kit into a new folder with its history, for reading.
uno kit pullFetch a Kit clone and fast-forward its branch. It never merges.

Write Kits

Kit writes need --operation when you run in agent mode. See Agent mode and exit codes.

CommandWhat it does
uno kit uploadUpload a local file or folder into an upload session, then finalize it. With --commit, commit in the same run.
uno kit upload-sessionOpen an upload session for staging. It sends no bytes.
uno kit stageStage one local file up to staging.inline_call_bytes. Use kit upload for larger files.
uno kit stage-urlStage a public HTTPS URL. It polls for up to 10 minutes.
uno kit commitCommit an upload session. The first commit creates the Kit. A new Kit is public by default. --draft keeps it private until kit visibility.
uno kit jobRead the state of a commit job. --wait polls until it ends.
uno kit publish-videoUpload a video through the video-minute flow, wait for its job, then commit a kit.json that names the job.
uno kit tagCreate a tag on a revision of your Kit. A tag is immutable and cannot be deleted.
uno kit ref-updateMove a branch of your Kit to a commit, only if its head is still --expected-old.
uno kit ref-deleteDelete a branch of your Kit.
uno kit revertCommit the inverse of one commit onto a branch, only if its head is still --expected-head.
uno kit remixCopy a Kit into a new Kit of your own. The new Kit keeps the source history.
uno kit visibilitySet your repo to public or private.
uno kit deleteDelete a repo you own. Its refs go at once. Its object bytes are retained for 30 days.
uno kit resumeReplay a saved write by its operation id. See kit resume.

Pay and check storage

CommandWhat it does
uno kit capabilitiesList server limits and storage pricing. Read-only.
uno kit quotaShow storage state, usage and limits. See kit quota.
uno kit purchaseLook up a recorded owner purchase without paying or creating a quote.
uno kit payBuy storage with Tempo or Stripe Link, or quote an Agent plan. See kit pay.

Signing keys

CommandWhat it does
uno kit whoamiShow your Uno username and Kit owner identity.
uno kit key listRead this owner's current keys and server custody state.
uno kit key enrollCreate or import a signing key and enroll it.
uno kit key modePrint or choose local or custodial signing for this profile.
uno kit key custodyTurn server custodial signing on or off.
uno kit key rotateReplace the custodial signing key.
uno kit key revokeRevoke a signing key from now or a past time.
uno kit key removeRetire a self-owned key. Its history stays valid.

Social, activity and notifications

CommandWhat it does
uno starStar Kits, and list stars.
uno star addStar a public Kit.
uno star removeRemove your star from a Kit.
uno star listList your stars, the Kits a user starred, or a Kit's star count and stargazers.
uno followFollow Uno users, and list follows.
uno follow addFollow a Uno user.
uno follow removeStop following a Uno user.
uno follow listList who you or a user follow, or their followers with --followers.
uno activityRead the public activity feed, newest first.
uno notifications listList your inbox, newest first.
uno notifications mark-readMark notifications through a sequence number read.

Install and diagnose

CommandWhat it does
uno doctorCheck the install: files, PATH, wrapper and auto-update. It reads local state only.
uno updateUpdate uno to the newest release, check for one, or return to the previous version.
uno telemetry statusShow consent and pending reports without network requests.
uno skills addWrite the uno agent skill to <dir>/uno/SKILL.md. The default folder is ~/.agents/skills. See Install the CLI.

kit pay

uno kit pay buys Kit storage. It has three modes.

  • Block purchase. --blocks with --renew or --no-renew. This is the App account path.
  • Subscription. --subscribe starts automatic Tempo payments. --cancel-subscription stops them.
  • Agent capacity. --capacity with --months quotes an Agent plan and prints a Tempo wallet command. This mode never pays.

kit pay is a guarded command. When an agent marker is set (UNO_AGENT=1, CLAUDECODE or CODEX_THREAD_ID), or when stdin or stdout is not a terminal, it exits 2 unless you pass --yes or --dry-run. --json on a terminal does not count. The guard applies to every mode, so the Agent capacity quote needs --yes too. Get your user's approval for the exact terms first. A printed command that adds --yes is not approval.

Flags

FlagTypeMeaning
--operation <id>stringSaved operation id. Reuse it with identical arguments after an interruption. Required in agent mode.
--blocks <n>integer, 1 to 4294967295Paid blocks. Default 1. uno kit capabilities lists the block limit (payment.blocks) and the price per block.
--renewbooleanStart or renew a term.
--no-renewbooleanAdd blocks to an active term.
--subscribebooleanStart Tempo payments that renew every 30 days. Today: USD 9.99 for 50 GB of paid storage.
--subscription-plan <id>stringApp subscription plan id. Needs --subscribe.
--cancel-subscription <id>GUIDStop future Tempo payments for this subscription id.
--method tempo|stripeenumPayment method. stripe opens Stripe Link in an interactive terminal.
--capacity <size>stringAgent plan: total storage, such as 500MB or 1GB. Needs --months.
--months <n>integer, 0 or moreAgent plan: whole 30-day months to add. 0 only raises the capacity of an active plan.
--payment-file <path>pathA 0600 file that holds one serialized MPP Payment credential from an external wallet.
--yesbooleanSkip the prompt. Required when stdin or stdout is not a terminal.
--dry-runbooleanPrint the change without writing. Identity and price reads may run.

--capacity takes MB, GB or TB in decimal units. Today the accepted range is 100MB to 10TB in exact 100MB steps. --capacity is the total, including stored history, not the amount to add.

Combination rules

  • --capacity and --months go together. One without the other exits 2.
  • --capacity and --months do not combine with --blocks, --renew, --subscribe, --method, --payment-file, --cancel-subscription or --subscription-plan.
  • A one-time block purchase needs --renew or --no-renew. Without one, the command exits 2 before it sends anything.
  • Write --renew and --no-renew without a value. --renew=false exits 2 with the reason INVALID_RENEW. Passing both exits 2.
  • --subscribe and --cancel-subscription exclude each other.
  • --subscribe and --cancel-subscription do not combine with --blocks, --renew or --method stripe.
  • --cancel-subscription does not combine with --payment-file.
  • --subscription-plan needs --subscribe.
  • --method stripe does not combine with --payment-file.
  • A saved operation keeps its original flags. Passing --operation with a different --renew choice does not change the saved request.
  • A fresh block purchase is checked against payment.blocks before it is journaled. A request over the limit exits 9.

Stripe Link runs only in an interactive terminal with no explicit format flag. In every other case, --method stripe exits 15 and prints the command for you to run in a terminal.

Outcomes

ExitMeaningNext step
0Settled. For Agent capacity, state is settled and results lists the classification, applied amount, capacity, dates and transaction.Retry the write that needed storage.
15An unpaid quote or challenge. error.details.payment holds the terms.Get approval, then pay.
14A payment may be in flight.Wait. Run uno kit purchase <purchase_id>. Never pay again to recover.
21Purchases are off, or the quote does not match your request, account or owner.Stop. Do not pay the quote.
24The backend has no capacity purchases yet.Stop.
9The purchase failed, expired or belongs to an old network.Read it with uno kit purchase. Start a new operation to buy again.

Exit 15: error.details.payment

Exit 15 carries the payment terms as data in error.details.payment. The object holds no challenge text and no secret.

Blocks

A write that hits the payment gate, and uno kit pay --blocks, both exit 15 with this object.

FieldMeaning
amountThe amount the server named, as a string. null if empty.
tokenThe token address. When the challenge names no address, the currency name.
chainThe chain id as a number. null if the challenge names none.
blocksThe number of paid blocks. 1 when the challenge does not name a count.
pay_commandThe command to run next.

kit pay --blocks adds these fields to the Tempo path.

FieldMeaning
challenge_filePath of the saved challenge file.
request_filePath of the request body file for the Tempo handoff, or null.
offersPresent when you did not pass --method and Stripe Link is offered. A list of one Tempo entry and one Stripe entry.

With --method stripe, the object holds the Stripe terms and offers holds one Stripe entry.

Each offers entry has method, intent, amount, currency and pay_command. The Stripe entry also has test_mode.

For the Tempo path, pay_command is a tempo request command that pays and settles in one step. When the CLI cannot prepare that command, pay_command is uno kit pay --blocks <n> <--renew|--no-renew> --payment-file <file> --operation <id>. A write-gate error prints uno kit pay --blocks <n> <flag> --operation <id>, which saves the challenge.

Agent capacity

uno kit pay --capacity <size> --months <n> exits 15 with a frozen server quote. The error details also hold purchase_id, state set to payment_required, next_command and, when you passed one, operation.

FieldMeaning
purchase_idThe owner purchase id.
quote_idThe quote id.
amountThe exact amount to pay, as a decimal string.
tokenThe token address.
chainThe chain id as a number.
capacity_bytesThe quoted total capacity in bytes.
monthsThe number of months the quote adds.
usd_per_gb_monthThe quoted price, as a decimal string. Today 0.50.
expires_atWhen the quote ends, in Unix seconds.
no_refundThe no-refund statement from the server.
pay_urlThe backend's exact payment link for this purchase.
pay_commandA tempo request command that pays pay_url.

pay_command pins the selected account with an x-uno-expect-account header. Run it as printed. The CLI accepts pay_url only for this owner, this purchase and an HTTPS origin, and only when the quote matches your request. Another payer needs only the pay_url. The link grants payment, not ownership.

Today a quote ends 30 minutes after creation, or sooner at the plan's next expiry or restore cutoff. There is no cash refund. A late, stale or duplicate payment becomes storage time.

Examples

Preview an Agent quote. This sends nothing.

uno kit pay --capacity 1GB --months 1 --dry-run --format json

Request the quote. This never pays. --yes only lets the quote request run past the guard.

uno kit pay --capacity 1GB --months 1 --yes --operation buy-1 --format json

Preview a block purchase.

uno kit pay --blocks 1 --renew --dry-run --format json

Rerun the same command after a lost reply. The saved operation reuses the server idempotency key. Never start a new operation while a payment may be in flight.

For the full payment flow, see Pay with Tempo, Pay with Stripe Link and Recover an uncertain payment.

kit quota

uno kit quota shows storage state, usage and limits. It is a read. With --format json, it also returns recovery guidance and paginated Kit sizes.

uno kit quota --format json

Flags

FlagTypeMeaning
--kit-limit <n>integer, 1 to 100Kits per storage page. Default 10.
--kit-cursor <cursor>stringContinue Kit sizes with storage.kit_sizes.next_cursor.
--purchase-limit <n>integer, 1 to 100Purchases per storage page. Default 10.
--purchase-cursor <cursor>stringContinue purchases with storage.next_purchase_cursor.

To page through all Kits, repeat the command with --kit-cursor set to the last next_cursor until it is empty. Do the same for purchases with --purchase-cursor.

Storage fields

The storage observation is under storage in JSON output. It is present on servers that run the Agent storage implementation.

FieldMeaning
billing_classThe account's billing class: App or Agent.
planThe Agent plan: state, capacity_bytes, starts_at, expires_at, grace_ends_at, restore_cutoff_at.
used_bytesBytes stored, including history.
reserved_bytesBytes reserved by writes that have not settled.
available_bytesUnreserved active capacity. Zero without an active plan.
minimum_fit_bytesThe smallest capacity that fits used + reserved + the refused write, rounded up to 100 MB. At least 100 MB. Retained deleted bytes are excluded.
kit_sizesA page. kit_sizes.kits[] has one entry per Kit incarnation with repository_id, name, used_bytes, reserved_bytes, retained_deleted_bytes and deleted. kit_sizes.next_cursor continues.
retained_deleted_bytesBytes of deleted content still retained.
retained_capacity_basis_bytesThe capacity basis for the retained-byte limit. It persists after the plan expires.
retained_threshold_bytesThe retained-byte limit. Absent when enforcement is not active. Absent does not mean zero.
earliest_reclaim_atThe earliest time retained bytes can be reclaimed, in Unix seconds.
operation_limitsThe upload limits: hosted_upload_bytes, hosted_upload_files, remix_source_bytes, inline_commit_bytes. Buying capacity does not raise them.
promo_grantThe original promo grant: capacity_bytes, expires_at, source.
pricingAgent pricing: capacity bounds and step, usd_per_gb_month, offers_enabled, network_epoch, chain_id, asset, asset_decimals.
purchasesRecorded owner purchases, open and paid.
next_purchase_cursorContinues purchases.
open_purchase_idThe purchase that holds the owner's pending lease, when any.

Today these limits apply to the plan lifecycle. Writes stop at expiry. Grace lasts 30 days. Suspension lasts until the restore cutoff, 60 days after expiry. Deleted bytes stay counted until reclaimed, and writes are refused when they exceed three times the capacity basis. Check uno kit capabilities before you rely on these numbers.

The JSON also keeps older App fields such as quota_bytes, used_bytes and paid_until. A write_ops_cap or write_bytes_cap of 0 means the server reports no write-rate window. The write_* fields then do not limit your writes.

kit resume

uno kit resume <operation> replays the exact saved mutation from the local journal. It does not read local file bytes.

uno kit resume <operation> --format json

Arguments

ArgumentTypeMeaning
operationstring, requiredThe saved operation id to replay.

kit resume takes no other flags of its own. Add the global flags. In agent mode, a recovery command carries --account, --expect-account, --api and --kit-api. Keep all four and the original operation.

What it can replay

kit resume can replay a saved write of these kinds: visibility change, upload session start, staged files, staged URL, commit, ref update, ref delete, tag, revert, remix, repo delete and pay. It also replays a frozen signed write.

It sends the same request with the same idempotency key. A saved answer is returned without a new call. A journal of any other procedure exits 2 with "The journal does not name a supported kit mutation."

What it cannot replay

  • Uploads. kit resume refuses every upload journal: <operation>, <operation>.stage and <operation>.finalize. It cannot stage or finalize, because it never reads local files. It prints the uno kit upload command to run instead. Run that command again with the same files, flags and operation.
  • Unfinished file stages. A kit stage journal holds a digest and a size for each file, never the content. Run uno kit stage again with the same file and the same --operation. kit resume names that command.
  • Video publishing stages. Run uno kit publish-video again with the original operation.

Rules

  • A journal is local to UNO_CONFIG_DIR. An operation id is not a server recovery token.
  • A journal records the account, the API origin, the Kit origin and the Kit owner. kit resume for another recorded account exits 25 with the reason operation_account_mismatch. It sends nothing. Do not switch accounts to force a replay.
  • Do not edit journals.
  • After a payment that may have landed, check with uno kit quota or uno kit purchase <purchase_id> before you pay again.