WendyOS Docs
Wendy CLI

wendy init

Initialize a new Wendy project

Syntax

wendy init [app-id] [flags]

Examples

wendy init
wendy init hello-wendy --target wendyos --language node --template simple-api --var PORT=3000 --assistant skip --git-init no

Arguments

Argument notation from the CLI: [app-id]. Angle brackets mark required values; square brackets mark optional values. See Details for command-specific validation.

Flags

Flags below include inherited options. Types and defaults come from the CLI source. An empty default means no value is configured.

FlagTypeDefaultDescription
--all-entitlementsboolfalseEnable all entitlements (requires field flags for gpio, i2c, persist)
--app-idstring(empty)Application ID to write into wendy.json
--assistantstring(empty)AI assistant to launch after init: claude, codex, or skip
--branchstring(empty)Branch of the templates repo to use (default: main)
--devicestring(empty)Target device hostname; wendy run accepts a comma-separated list to deploy one build to several devices (needs a remote build host and --detach). Defaults to $WENDY_DEVICE, then the saved default device
--entitlementstringSlice[]App entitlement to enable (repeatable or comma-separated)
--frameworkstringSlice[]App framework to enable in wendy.json's top-level "frameworks" key (repeatable or comma-separated; currently: ros2)
--git-initstring(empty)Initialize a git repo in the project directory (yes or no)
--gpio-pinsstring(empty)GPIO pins for the gpio entitlement (comma-separated, e.g. 17,27,22)
--hereboolfalseScaffold into the current directory instead of creating a subdirectory
--i2c-devicestring(empty)I2C device path for the i2c entitlement (e.g. /dev/i2c-1)
--install-claude-skillsboolfalseInstall Wendy Claude skills before launching Claude
--jsonboolfalseOutput in JSON format
--languagestring(empty)Project language: python, swift, rust, node, cpp, or mojo
--no-extra-entitlementsboolfalseSkip entitlement prompts and use only the default network entitlement
--persist-namestring(empty)Container ID for the persist entitlement
--persist-pathstring(empty)Mount path for the persist entitlement (e.g. /data)
--ros2-discovery-scopestring(empty)ROS 2 discovery scope: app (default, isolated) or host (shared with the device's host network)
--ros2-distrostring(empty)ROS 2 distribution (default: humble)
--ros2-domain-idint-1ROS 2 domain ID, 0-232 (default: derived from the app ID)
--ros2-rmwstring(empty)ROS 2 middleware implementation: cyclonedds (default), fastrtps, connextdds, or gurumdds
--targetstring(empty)Target platform: wendyos (writes "linux" to wendy.json), wendy-lite, or darwin
--templatestring(empty)Project template (e.g. simple-api, fullstack)
--varstringSlice[]Template variable override (repeatable, KEY=VALUE)

Output

Output depends on the operation and selected target. Command behavior and detailed examples.

JSON output

The global --json option requests machine-readable output. The CLI also selects JSON mode when no interactive terminal is attached. Support and payloads are command-specific; this flag does not guarantee a single JSON document for commands that stream logs or invoke build tools. Consult Details before parsing command output.

Exit codes

The CLI entry point returns 0 on success and for its user-cancelled or default-cleared results. Other returned errors exit with 1 and print a diagnostic to stderr. Some operations may terminate through subprocess or signal handling; do not infer application health from the CLI exit code alone.

Common errors

Check argument values and flag combinations against the synopsis above. For discovery, build, port, and readiness failures, see deployment troubleshooting. Command-specific constraints are in Details.

See also

Details

Interactively create a new Wendy project with scaffolding, entitlements, and optional AI assistant setup.

An [app-id] argument (or --app-id) creates a new subdirectory of that name by default; pass --here to scaffold into the current directory instead (with no app ID, --here infers one from the current directory's name).

wendy.json also supports a separate, top-level "frameworks" key for framework-level config (currently ROS 2: domain ID, RMW middleware, discovery scope). Enable it with --framework (see the ROS 2 example below), through the interactive prompt on a WendyOS target, or by hand-editing "frameworks" in wendy.json afterwards.

Command behavior and detailed examples

On this page