CLI reference
The symorva command — init, validate, plan and modules — with options, output formats and exit codes.
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]| Option | Default | Description |
|---|---|---|
--template | dao | One of dao, creator, team, ecosystem |
--name | the template's example name | Community display name; also slugified into community.id |
--out | symorva.config.json | Output path |
--force | off | Overwrite an existing file |
symorva init --template team --name "Independent Guild"Created symorva.config.json from the team template.
Next: symorva validate && symorva planErrors:
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]| Option | Description |
|---|---|
--json | Print { "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 installerWhen 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 modulesChat & 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 chatThe output continues with the optional modules. See Modules for the full list.
Exit codes
| Code | Meaning |
|---|---|
0 | Success: the manifest is valid, or the command completed |
1 | The manifest is invalid, the file is missing or not valid JSON, the template is unknown, or init would overwrite a file without --force |
2 | Unknown 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 JSONColour 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.jsonInput format
The CLI reads JSON manifests. Manifests written in TypeScript with defineCommunity must be serialised to JSON first; see Write a manifest in TypeScript.
Manifest reference
Every field of symorva.config.json — types, defaults, ranges and formats — and every diagnostic the validator can report.
Client SDKs
The preview interface for building community apps — Swift and SwiftUI for Apple platforms, Kotlin and Jetpack Compose for Android, and the shared contract desktop shells bind to.