CLI reference / CLI overview

CLI reference

CLI overview

How the wiele command line works: global flags, paths, output, JSON, exit codes, environment variables and local files.

The wiele command runs on macOS and Linux. Every command prints help with --help, and the pages in this section list every command and flag the CLI has. The reference is generated from the CLI itself, so it matches the published version.

Page Commands
Sign-in and account login, auth, onboarding, settings
Organizations and members org
Billing billing
Workspaces workspace
Remote files stat, ls, entries, get, read, write, history, revision
Checkouts fetch, track, status, diff, push, pull, restore, checkout
Branches and copies branch, copy
Conflicts conflict
Access access
Retention workspace retention, org retention
Background sync daemon, sync, live
Search search
Machine and agent setup version, doctor, skills, telemetry
Operations and recovery operation, upload

Global flags

These flags work on every command.

Flag Description
--json Print one JSON object on standard output instead of text: {"schemaVersion":1,"ok":true,"data":...} or {"schemaVersion":1,"ok":false,"error":...}.
--non-interactive Never prompt. Commands that need an answer fail with INTERACTION_REQUIRED.
--api-url string API origin. Default: $WIELE_API_ORIGIN, or https://api.wiele.io.
--credential-file string Absolute path of a session file to use instead of the OS keychain. Its folder must be owner-only (chmod 700).
--timings Print API call durations and server timing to stderr.

The CLI framework adds a few more:

Flag Description
--help, -h Show help for the command.
--version, -v Show the CLI version.
--completions bash|zsh|fish|sh Print a shell completion script.
--log-level LEVEL Minimum log level: all, trace, debug, info, warn, error, fatal or none.
--wizard Build a command step by step with prompts.

Names, paths and IDs

You can name most things by ID, slug or name:

  • Organizations: ID (org_...) or slug. Pick a default with wiele org use SLUG.
  • Workspaces: ID (ws_...), slug or name. A few commands take only the ID; their flag descriptions say so.
  • Branches: name or ID (br_...). Without --branch, commands use the checkout's branch, or main outside a checkout.
  • Revisions: the full 40-character SHA. Short SHAs and branch names don't work where a revision is expected.

A remote path is written as WORKSPACE:/path, such as my-work:/notes/plan.md. The workspace root is my-work:/. Inside a checkout you can leave out the workspace and organization, and commands take them from the checkout.

Paths can't contain \, control characters or more than 64 levels, and no path component may be .wiele, .wiele-meta, .git, .gitattributes or .lfsconfig.

Output

By default commands print text for people. Errors go to standard error:

error: The branch changed before this push could publish, so the server closed it. Local files are unchanged. (HEAD_MOVED)
next: Run wiele pull, then wiele push again

With --json, every command prints one JSON object on standard output:

{ "schemaVersion": 1, "ok": true, "data": {} }
{
  "schemaVersion": 1,
  "ok": false,
  "error": {
    "code": "HEAD_MOVED",
    "message": "...",
    "retryable": false,
    "nextActions": ["Run wiele pull, then wiele push again"]
  }
}

error may also carry operationId and details. Scripts and agents should pass --json --non-interactive, then check ok and the exit code. Every error code is listed in Troubleshooting.

Exit codes

Code Meaning
0 Success.
1 The command failed with an error code. Also returned by onboarding complete and org invitations accept when any invitation was not applied.
2 The command line could not be parsed, such as an unknown flag.

Retries and waiting

Most commands that change something on the server take --idempotency-key. Each run generates a fresh UUIDv7, except onboarding complete, which needs one passed in. push takes no key. Run it again and it resumes the saved push. If a command times out or the network drops, run it again with the same key: the server returns the first result instead of doing the work twice.

Commands that start server work wait up to 30 seconds by default; each flag table shows the exceptions. Change that with --wait, such as --wait 2m, or return at once with --no-wait where the command has it. A wait that runs out fails with OPERATION_PENDING; the work continues on the server and the same command picks it up.

Environment variables

Variable Effect
WIELE_API_ORIGIN Default for --api-url. Must be HTTPS, except on localhost, 127.0.0.1 and [::1].
WIELE_CONFIG_HOME Config folder. Default: $XDG_CONFIG_HOME/wiele, else ~/.config/wiele.
WIELE_STATE_DIRECTORY State folder for the checkout list and the background process. Default: ~/.local/state/wiele.
WIELE_TELEMETRY 0, false, off or no turns usage data off.
DO_NOT_TRACK Any value other than empty, 0 or false turns usage data off.

Local files

What Where
Session OS keychain, service io.wiele.session, one entry per API origin. Linux uses the Secret Service. Or the file you pass with --credential-file.
Organization choice and telemetry setting The config folder. It must be owner-only (chmod 700).
Checkout list and background state The state folder. It must be owner-only.
Checkout state .wiele inside each checkout. Never shared, never uploaded.
Background service ~/Library/LaunchAgents/io.wiele.daemon.plist on macOS, ~/.config/systemd/user/wiele-daemon.service on Linux, or under $XDG_CONFIG_HOME/systemd/user/ when set, after wiele daemon install.