SymorvaDocs
SDK & APIs

CLI reference

The symorva command — init, validate, plan and modules — with options, output formats and exit codes.

Developer preview· Interface published, subject to change

The symorva CLI ships with @symorva/sdk. It creates manifests from templates, validates them, resolves them into deployment plans and prints the module catalog. Commands that take a file default to ./symorva.config.json in the current directory.

The SDK is in developer preview and is distributed to design partners by the Symorva team. Contact the team for access.

symorva — community manifest tooling

Usage
  symorva init [--template dao|creator|team|ecosystem] [--name <name>] [--out <file>] [--force]
  symorva validate [file] [--json]
  symorva plan [file] [--json]
  symorva modules

Defaults to ./symorva.config.json.

symorva, symorva help, symorva --help and symorva -h print this summary. An unknown option prints the option, then this summary, and exits with status 2.

symorva init

Writes a starter manifest from a template.

symorva init [--template <id>] [--name <name>] [--out <file>] [--force]
OptionDefaultDescription
--templatedaoOne of dao, creator, team, ecosystem
--namethe template's example nameCommunity display name; also slugified into community.id
--outsymorva.config.jsonOutput path
--forceoffOverwrite an existing file
symorva init --template team --name "Independent Guild"
Created symorva.config.json from the team template.
Next: symorva validate && symorva plan

Errors:

symorva.config.json already exists. Pass --force to overwrite it.
Unknown template "guild". Choose one of: dao, creator, team, ecosystem.

The manifest is written as JSON with two-space indentation and a trailing newline.

symorva validate

Validates a manifest against the schema and the composition rules.

symorva validate [file] [--json]

With --json it prints { "ok": true, "diagnostics": [...] } or { "ok": false, "diagnostics": [...] } instead of the summary, with the same exit status.

On success it prints the community name and id, the number of enabled modules and platforms, and any warnings or info notes:

✓ Nova Guild (nova-guild) — 4 modules, 4 platforms
  info  Audiences above 500 use large-room mode: speakers stay on real-time media, listeners receive a low-latency stream. (modules.meetings.broadcast.maxAudience · meetings.large-room)

On failure it prints every diagnostic and exits with status 1. Schema errors are reported together:

✗ bad1.json is invalid
  error Use lowercase letters, digits and single hyphens, e.g. orbit-collective. (community.id · schema.invalid_format)
  error Use a 6-digit hex colour such as #6E5BFF. (brand.primaryColor · schema.invalid_format)
  error Too big: expected number to be <=500 (modules.meetings.maxParticipants · schema.too_big)
  error Invalid option: expected one of "ios"|"android-apk"|"macos"|"windows" (platforms.1 · schema.invalid_value)
  error Too small: expected string to have >=2 characters (deployment.region · schema.too_small)

When the schema passes, every composition rule runs and all findings are listed in rule order:

✗ bad2.json is invalid
  error Creator economy requires Wallets & assets. Enable modules.wallet. (modules.creatorEconomy · module.requires)
  error Meetings are part of the foundation and need the real-time media service. (sharedServices.media · service.media-required)
  error AI & creator studio is enabled but the AI service is set to none. (sharedServices.ai · service.ai-required)
  warn  AI & creator studio is enabled with every tool switched off. (modules.aiStudio · module.empty)
  warn  End-to-end encryption is off. Message content will be readable by the community server. (modules.chat.e2ee · privacy.e2ee-off)
  warn  DApps are enabled without a wallet. Partner apps that need signing or payments will be unavailable. (modules.dapps · dapps.no-wallet)
  warn  Creator economy is enabled with tips and remix revenue sharing both off. (modules.creatorEconomy · module.empty)
  warn  Duplicate platforms: ios. (platforms · platforms.duplicate)

Each line ends with the JSON path and the diagnostic code in parentheses. Use --json when you need structured diagnostics.

symorva plan

Validates the manifest and prints the deployment it describes.

symorva plan [file] [--json]
OptionDescription
--jsonPrint { "ok": true, "plan": ... } or { "ok": false, "diagnostics": [...] } instead of text

Text output has five sections — the navigation, Your deployment (owned components), Shared services with the modules that use them and their metered units, Clients, and Notes when there are diagnostics:

Independent Guild
navigation  Community · Meetings · AI Studio

Your deployment
  Community server     Accounts, identity, community structure, roles and module host.
  Admin console        Operator console for members, content, modules and settings.
  Data stores          Relational database, cache, object storage and message queue, owned by the operator.
  Messaging service    Message routing, sync, groups, tribes and membership. Runs in the operator's environment.
  Meeting service      Room lifecycle, scheduling, permissions and invitations. Media flows through the shared real-time media service.
  Studio service       Projects, prompts, generated assets and publishing rules. Inference runs on the shared AI service.

Shared services
  Real-time media                  used by Meetings & live rooms · metered in participant-minutes, broadcast-viewer-minutes
  AI inference & generation        used by AI & creator studio · metered in ai-tokens, images, video-seconds
  Resource metering & settlement   records usage for the services above

Clients
  iOS          Signed iOS build for App Store or TestFlight
  Android APK  Signed Android APK
  macOS        Notarised macOS app
  Windows      Signed Windows installer

When the metering service is present only because other shared services are, it is listed as recording usage for the services above. When the creator economy is enabled, it is listed as used by Creator economy and metered in settled-payouts.

The JSON form is the DeploymentPlan described in the SDK overview. It is stable within a schema version and suitable for infrastructure tooling — for example provisioning one service per entry in plan.owned.

symorva modules

Prints the module catalog: name, id, kind, summary and dependencies.

symorva modules
Chat & communities chat · foundation
  Encrypted conversations, groups and tribes, with members, roles and approvals.
Meetings & live rooms meetings · foundation
  Voice, video, slides and screen sharing for calls, AMAs and community events.
  requires chat

The output continues with the optional modules. See Modules for the full list.

Exit codes

CodeMeaning
0Success: the manifest is valid, or the command completed
1The manifest is invalid, the file is missing or not valid JSON, the template is unknown, or init would overwrite a file without --force
2Unknown command

Other file errors:

No manifest at /path/to/symorva.config.json. Run `symorva init` first.
nj.json is not valid JSON: Unexpected token 'o', "not json
" is not valid JSON

Colour and CI

Output is coloured only when standard output is a terminal and the NO_COLOR environment variable is not set. In CI logs and pipes the output is plain text. A typical CI step:

symorva validate && symorva plan --json > plan.json

Input format

The CLI reads JSON manifests. Manifests written in TypeScript with defineCommunity must be serialised to JSON first; see Write a manifest in TypeScript.

On this page