跳到主要內容

ARC 2.0.0-beta.28

Publish and deploy

Split local daemon registration, local DID Space publish, remote --server publish, and Pages deploy — mark unverified paths experimental.

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)

PathCommandTargetAuth / secretsStatus on this board
Local servearc blocklet run <dir> · arc service start --blocklet <dir>Local daemonNone beyond local processVerified (2.0.0-beta.28)
Local daemon registrationarc deploy <path> (no publish flags)Running local daemon extra dirsLocalPrefer serve commands; registration can be environment-sensitive
Local DID Space publisharc deploy <path> --publishDeveloper local DID Space /blocklets/<id>/Local snapshot secret (see below)Partial — command surface real; secret required in isolated home
Remote DID Space publisharc deploy <path> --server <url> [--token]Remote DID Space via RPCBrowser/passkey, vault, or --token alwaysExperimental / unverified on this board (not E2E'd here)
Pages one-shotarc blocklet deploy [dir]Local stage + Cloudflare Pages optionCF credentials when --cloud=cfPlatform path — verify in your environment
Instance subcommandsarc blocklet instance …Deployed Pages instancesPlatformTreat as advanced; confirm against live CLI help
Fleetarc blocklet fleet …Multi-blocklet aggregatePlatformAdvanced / monorepo ops

Prefer local acceptance first

bash
arc dsl validate ./my-app
arc blocklet check ./my-app --profile <profile>
arc blocklet run ./my-app
# browser accept

Only 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 --published read that local registry path.
  • Remote --server publishes do not populate the local show/list registry.

Example shape (from ARC's third-party workflow guide; re-verify on your machine):

bash
arc deploy ./my-app --publish
arc deploy list --published
arc deploy show did:blocklet:my-app

Secret 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:

text
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)

bash
arc deploy ./my-app --server https://example-did-space.example
# always requires auth: browser flow, cached credential, or --token
# --no-browser requires --token

This 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

bash
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)

bash
arc blocklet instance --help
arc blocklet fleet --help

Use 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 /instance claims labeled if not E2E-proven?
  • Reader still has a local-only path that does not require deploy?