Skip to main content

Overview

arc is the command line tool for operating an ARC runtime instance: the AFS file system, identity and trust, secrets, deployments, and the AUP DSL all go through it.

arc is the command line tool for operating an ARC runtime instance. Every top-level command talks to one part of that runtime: afs is file system operations, did is identity and trust, vault is encrypted secrets, deploy handles deployment targets, dsl works with AUP DSL artifacts, and so on.

Version documented here: 2.0.0-beta.48 (5a5316bde), built 2026-09-10. arc --version always prints this three-field form — <semver> (<commit>) <build date> — because the same beta.N string gets reused across different builds; the commit is what actually pins the command surface. Run arc --version to check yours; commands and options can change between builds.

If arc is not on your PATH yet, start with Install.

arc worker manages ArcBlock's own Cloudflare deployments. It registers behind two gates that must both hold: a build-time flag that's off in any release build (so the binary you install with install.sh never has it), and a runtime check that the current working directory is inside a real ArcBlock/arc checkout, or ARC_WORKER_DIR is set explicitly (so even a debug build made from that checkout won't show arc worker when you run it from somewhere else). It isn't listed below.

arc space sync-bench is a hermetic benchmark driver for arc's own afs-rpc wire, not a product feature — there's nothing a third party would run it to accomplish with their own data. It registers behind the same build-time flag as arc worker (off in any release build), just without arc worker's extra checkout-location check. It isn't listed below either.

arc connect and arc explore were removed: both duplicated things the daemon already does (arc service start prints every endpoint including /explorer, so there's no separate step to start-and-open). Use arc service start instead.

Global options

Every command accepts the same flags:

  • --json: print structured JSON instead of the default text output
  • --view <default|llm|human|json>: pick a rendering style; llm is tuned for feeding output back into an agent, human for a person reading a terminal, json is equivalent to --json
  • --instance <name> / -i: which local ARC instance this command operates against (see arc service list). Omit for the default instance. This is the only name for that axis
  • --home <dir>: instance root. Used by arc service start (create), --standalone (ad-hoc), and arc did init (identity). To pick which instance, use --instance

--json and --view only change how the result prints. They apply to command output, not to --help itself; help text is always plain text. --instance and --home change which instance the command talks to.

An unrecognized flag is rejected (ERROR: Unknown argument: <name>, exit code 5) — arc does not silently ignore a mistyped or removed option, and help/error text is always in English regardless of your system locale. --yaml was one such removed option (advertised on every command's --help but never implemented); use --json or --view json instead.

When you mistype a command

A misspelled top-level command is not simply rejected — arc names the commands you probably meant, and then prints the full command list (trimmed after the suggestion here):

bash
$ arc serivce list
ERROR: Unknown command: "serivce"

Did you mean?
  arc serve
  arc service

A near-tie offers every candidate rather than guessing between them: serivce is one edit away from both serve and service, so both are printed. Mistyping exits 5, like any other usage mistake — Exit Codes covers what each code means.

The same mechanism catches a misspelled subcommand or a misspelled option, one level down — always scoped to just that one command's own choices, and always still exit 5:

bash
$ arc service strat
ERROR: Invalid values:
  Argument: action, Given: "strat", Choices: list, start, stop, restart, status, delete, gc, url, logs

Did you mean?
  arc service start
...
$ arc service start --instnace foo
ERROR: Unknown argument: instnace

Did you mean?
  --instance
...

Fix any of the three and the same command runs normally, exit 0:

bash
$ arc service list --help
arc service list

List every local instance with its status, port and home
...

Previewing a destructive command

--dry-run is not a global flag. Six commands take one — arc afs delete, arc blocklet build, arc deploy, arc service delete, arc space migrate, and arc space sync — and three take --yes to skip a confirmation prompt: arc afs delete, arc service delete, and arc did issuer reset (afs delete and service delete take both). arc space sync --dry-run reports the entire plan and writes nothing (trimmed here to the summary; the engine-selection and timing lines are omitted).

bash
$ arc space sync --from ./src --to ./dst2 --dry-run
./src ⇢ (dry-run) ./dst2
Base path: /
Mode:      additive

Added:     2
Modified:  0
Deleted:   0
Unchanged: 0

Transferred: 0 files

Transferred: 0 files is the point — the plan says two files would be added, and the destination is still empty afterwards. arc blocklet build --dry-run behaves the same way: it prints the manifest it would publish, and leaves no dist/ behind.

Every other command has neither a preview nor a confirmation prompt. arc space rm in particular has neither --dry-run nor --yes: it removes a file or directory inside a local app space as soon as you press enter. Look before you delete, with arc space tree <app-did>.

Command groups

afs

File system operations: ls, read, write, delete, stat, exec, explain, search, subscribe, and mount management.

did

Identity and trust: generate a DID, issue and verify credentials, manage trusted issuers.

vault

Encrypted secret storage: init, get, set, list, delete.

dsl

Validate, lint, format, generate, and inspect AUP DSL artifacts.

collections

Scan content/ and generate the collections: fragment for blocklet.yaml.

space

Manage local DID Space data: list, tree, path, rm, sync between two subtrees, folder-space claim and repair, folder-layout migration.

deploy

Register a blocklet with the local daemon, or publish it to a DID Space.

blocklet

Blocklet package and instance lifecycle: scaffold, build, check, deploy, fleet deploy.

service

Manage named AFS background instances: list, start, stop, restart, status, delete, gc, url, logs.

serve

Start a foreground AFS server over HTTP or MCP.

attach

Reverse-mount a local directory, or this host's HostFace, into a remote arc daemon.

drain

Long-running: watch the work ledger and dispatch ready work to an idle peer.

mcp

Bridge stdio to a running AFS daemon's MCP endpoint.

skill

Bundled how-to booklets: list, show, install into host agent skill dirs (not full skill package manager yet).

provider

Provider package operations: publish a provider's resources to CF Pages.

upgrade

Upgrade arc itself to the latest release, or a pinned version.

network

Diagnose outbound connectivity: proxy discovery, DNS, HTTPS and WebSocket, each reported separately.

completion

Print a bash, zsh, or fish tab-completion script to stdout: command names, subcommand names, instance names, and --recipe values.