Publication and deployment are not substitutes for a local direct run. Use local run for ordinary acceptance. Enter a publish path only when the task is release, distribution, or remote hosting.
Path matrix (strict)
| Path | Command | Target | Auth / secrets | Status on this board |
|---|---|---|---|---|
| Local serve | arc blocklet run <dir> · arc service start --blocklet <dir> | Local daemon | None beyond local process | Verified (2.0.0-beta.28) |
| Local daemon registration | arc deploy <path> (no publish flags) | Running local daemon extra dirs | Local | Prefer serve commands; registration can be environment-sensitive |
| Local DID Space publish | arc deploy <path> --publish | Developer local DID Space /blocklets/<id>/ | Local snapshot secret (see below) | Partial — command surface real; secret required in isolated home |
| Remote DID Space publish | arc deploy <path> --server <url> [--token] | Remote DID Space via RPC | Browser/passkey, vault, or --token always | Experimental / unverified on this board (not E2E'd here) |
| Pages one-shot | arc blocklet deploy [dir] | Local stage + Cloudflare Pages option | CF credentials when --cloud=cf | Platform path — verify in your environment |
| Instance subcommands | arc blocklet instance … | Deployed Pages instances | Platform | Treat as advanced; confirm against live CLI help |
| Fleet | arc blocklet fleet … | Multi-blocklet aggregate | Platform | Advanced / monorepo ops |
Prefer local acceptance first
arc dsl validate ./my-app
arc blocklet check ./my-app --profile <profile>
arc blocklet run ./my-app
# browser acceptOnly then choose a publish path.
Local DID Space publish (--publish)
Intended semantics (from CLI help and ARC deploy module):
- Writes to the local developer DID Space (no network, no browser auth).
arc deploy show/arc deploy list --publishedread that local registry path.- Remote
--serverpublishes do not populate the local show/list registry.
Example shape (from ARC's third-party workflow guide; re-verify on your machine):
arc deploy ./my-app --publish
arc deploy list --published
arc deploy show did:blocklet:my-appSecret prerequisite (verified failure)
On 2.0.0-beta.28 with a clean isolated instance home (ARC_HOME is retired; isolate with a named instance and --home), publish failed without a snapshot secret:
Error: Local publish failed: Snapshot V2 requires a snapshot token secret:
set AFS_DID_SPACE_SNAPSHOT_SECRET (32-byte hex).
AFS_DID_SPACE_SCOPE_SECRET also satisfies it, but that variable additionally
derives the storage directory name for each DID …
Prefer the dedicated variable.Document this as an environment requirement for local publish, not as "publish is unimplemented". Configure secrets only in environments you control; do not commit them.
Remote DID Space publish (--server)
arc deploy ./my-app --server https://example-did-space.example
# always requires auth: browser flow, cached credential, or --token
# --no-browser requires --tokenThis board does not claim E2E success for remote publish. Mark any remote workflow experimental/unverified until your team records a successful run against a non-shared target (auth, upload, and independent serve from the remote copy).
Even loopback URLs still require a real credential — not an auth bypass.
Cloudflare / Pages-oriented commands
arc blocklet build ./my-app
arc blocklet deploy ./my-app --project <project-name>
# options include --cloud cf|none, --domain, --verify, …build prints a deploy hint after packaging. Pages deploy is a different product surface from DID Space publish. Verify credentials, project naming, and live routes in your own environment before treating it as a documented default for third-party authors.
Instance and fleet (advanced)
arc blocklet instance --help
arc blocklet fleet --helpUse these when you already understand package vs instance and have a platform target. Do not require them for "I scaffolded a Blocklet on my laptop."
Stateful /instance interactions (settings writes, replicated posts, agent tools that mutate instance trees) need a real instance DID Space. Local shell HTTP 200 without that binding does not prove those paths. Treat deep /instance E2E as unverified unless you have run it.
Honesty checklist before you write "deployed"
- Local
check+ browser accept recorded? - Which publish target (local space / remote server / Pages)?
- Auth and secrets path named without embedding secrets?
- Remote or
/instanceclaims labeled if not E2E-proven? - Reader still has a local-only path that does not require deploy?
Related
- Create and run locally
- Test and diagnose
- arc deploy CLI (if present on the arc-cli board)
- arc blocklet CLI