Skip to content

CLI Reference

Command-line interface for the Wippy runtime.

Available on all commands:

FlagShortDescription
--configConfig file (default: .wippy.yaml)
--verbose-vEnable debug logging
--very-verboseDebug with stack traces
--console-cColorful console logging
--silent-sDisable console logging
--event-streams-eStream logs to event bus
--profiler-pEnable pprof on localhost:6060
--memory-limit-mMemory limit (e.g., 1G, 512M)

Memory limit priority: --memory-limit flag > GOMEMLIMIT env > 1GB default.

Create a new lock file.

Terminal window
wippy init
wippy init --src-dir ./src --modules-dir .wippy
FlagShortDefaultDescription
--src-dir-d./srcSource directory
--modules-dir.wippyModules directory
--lock-file-lwippy.lockLock file path

Start the runtime or execute a command.

Terminal window
wippy run # Start runtime
wippy run list # List available commands
wippy run test # Run tests
wippy run snapshot.wapp # Run from pack file
wippy run acme/http # Run module from hub
wippy run acme/http@1.2.3 # Run specific version
wippy run --exec app:worker # Start runtime and execute a single process
FlagShortDescription
--override-oOverride entry values (namespace:entry:field=value); field may be kind to change the entry kind
--setOverride a config value (section.path=value, repeatable, takes precedence over the config file)
--exec-xExecute process and exit (namespace:entry)
--hostTerminal host ID for --exec (auto-detected if only one terminal.host exists)
--registryRegistry URL for hub modules

--set writes any runtime configuration value from the command line, merged over .wippy.yaml per leaf:

Terminal window
wippy run --set cluster.enabled=true \
--set cluster.membership.join_addrs=node-2:7946,node-3:7946 \
--set cluster.raft.bootstrap_expect=3

Values coerce by shape: true/false to bool, integers and floats to numbers, everything else stays a string (durations like 5s are parsed where the option expects one).

Check Lua code for type errors and warnings.

Terminal window
wippy lint
wippy lint --level warning
wippy lint --json
wippy lint --rules

Validates all Lua entries: function.lua, library.lua, process.lua, workflow.lua (including their .bc variants).

FlagShortDefaultDescription
--lock-file-lwippy.lockLock file path
--levelwarningMinimum severity: error, warning, hint
--nsFilter by namespace patterns (e.g. app, lib.*)
--codeFilter by error codes (e.g. E0001,E0004)
--rulesfalseEnable style/quality lint rules
--summaryfalseGroup output by error code
--limit0Max diagnostics shown (0 = unlimited)
--jsonfalseJSON output
--no-colorfalseDisable colored output
--cache-resetfalseClear Lua cache before linting

Add a module dependency.

Terminal window
wippy add acme/http
wippy add acme/http@1.2.3
wippy add acme/http@latest
FlagShortDefaultDescription
--lock-file-lwippy.lockLock file path
--registryRegistry URL

Install dependencies from lock file.

Terminal window
wippy install # Install all
wippy install acme/http # Install specific module
wippy install --refresh acme/http # Re-fetch a specific module
FlagShortDefaultDescription
--lock-file-lwippy.lockLock file path
--refreshfalseRe-fetch every module, bypassing cache
--forcefalseAlias for --refresh
--repairfalseAlias for --refresh
--registryRegistry URL

Update dependencies and regenerate lock file.

Terminal window
wippy update # Update all
wippy update acme/http # Update specific module
wippy update acme/http demo/sql # Update multiple
FlagShortDefaultDescription
--lock-file-lwippy.lockLock file path
--src-dir-d./srcSource directory
--modules-dir.wippyModules directory
--registryRegistry URL

Create a snapshot pack (.wapp file).

Terminal window
wippy pack snapshot.wapp
wippy pack release.wapp --description "Release 1.0"
wippy pack app.wapp --embed app:assets --bytecode **
FlagShortDescription
--lock-file-lLock file path
--description-dPack description
--tags-tPack tags (comma-separated)
--metaCustom metadata (key=value)
--embedEmbed fs.directory entries (patterns)
--listList fs.directory entries (dry-run)
--exclude-nsExclude namespaces (patterns)
--excludeExclude entries (patterns)
--bytecodeCompile Lua to bytecode (** for all)

Publish module to the hub.

Terminal window
wippy publish
wippy publish --version 1.0.0
wippy publish --dry-run

Reads from wippy.yaml in current directory.

FlagDescription
--versionVersion to publish
--dry-runValidate without publishing
--labelPublish as mutable label instead of version
--release-notesRelease notes
--protectedMark version as protected
--embedEmbed fs.directory entries by id or name
--configPath to directory containing wippy.yaml (default: .)
--registryRegistry URL
--createCreate the module on the registry if it does not yet exist
--module-visibilityVisibility for newly created modules (--create only): public or private (default: private)
--module-typeType for newly created modules (--create only): library, application, agent, or plugin (default: application)
--module-display-nameDisplay name for newly created modules (--create only)

Search for modules in the hub.

Terminal window
wippy search http
wippy search "sql driver" --limit 20
wippy search auth --json
FlagDefaultDescription
--jsonfalseOutput as JSON
--limit20Maximum results
--registryRegistry URL

Manage registry authentication.

Terminal window
wippy auth login
wippy auth login --token YOUR_TOKEN
FlagDescription
--tokenAPI token
--registryRegistry URL
--localStore credentials locally
Terminal window
wippy auth logout
FlagDescription
--registryRegistry URL
--localRemove local credentials
Terminal window
wippy auth status
wippy auth status --json
FlagDescription
--jsonOutput as JSON

Fetch a module README from the hub.

Terminal window
wippy readme wippy/terminal
wippy readme wippy/terminal@1.2.3
wippy readme --json wippy/terminal@latest
FlagDescription
--jsonOutput as JSON
--registryRegistry URL (default: from credentials)

Query and inspect registry entries.

Terminal window
wippy registry list
wippy registry list --kind "function.lua.*"
wippy registry list --ns "app.*" --json
wippy registry list --meta "type=api" --meta "enabled=true"
FlagShortDescription
--kind-kFilter by kind (glob pattern)
--ns-nFilter by namespace (glob pattern)
--nameFilter by name (glob pattern)
--metaFilter by metadata (repeatable)
--jsonOutput as JSON
--yamlOutput as YAML
--lock-file-lLock file path

Metadata operators for --meta:

OperatorMeaning
field=valueExact match
field~regexRegex match
field*substrContains substring
field^prefixStarts with prefix
field$suffixEnds with suffix
Terminal window
wippy registry show app:http:handler
wippy registry show app:config --yaml
FlagShortDescription
--field-fShow specific field
--jsonOutput as JSON
--yamlOutput as YAML
--rawRaw output
--lock-file-lLock file path

Print version information.

Terminal window
wippy version
wippy version --short

Any process.lua or process.wasm entry can be registered as a named command by adding command metadata:

entries:
- name: test_runner
kind: process.lua
meta:
command:
name: test
short: Run application tests
source: file://runner.lua
method: main
modules:
- io
- registry
- funcs

Run it with:

Terminal window
wippy run test

List all available commands:

Terminal window
wippy run list
FieldRequiredDescription
nameYesCommand name used with wippy run <name>
shortNoShort description shown in wippy run list
mainNoMark this entry as the default command (picked automatically by packs and hub modules that ship a single command)

Any process entry kind works (process.lua, process.wasm). The command name must be unique across all loaded entries. Arguments after the command name are passed to the process as string payloads.

Terminal window
# Initialize project
wippy init
wippy add wippy/http wippy/sql
wippy install
# Check for errors
wippy lint
# Run with debug output
wippy run -c -v
# Override config for local dev
wippy run -o app:db:host=localhost -o app:db:port=5432
Terminal window
# Create release pack with bytecode
wippy pack release.wapp --bytecode ** --exclude-ns test.**
# Run from pack with memory limit
wippy run release.wapp -m 2G
Terminal window
# Execute single process
wippy run --exec app:worker
# With profiler enabled
wippy run -p -v
# Then: go tool pprof http://localhost:6060/debug/pprof/heap
Terminal window
# Add new dependency
wippy add acme/http@latest
# Force re-download
wippy install --force
# Update specific module
wippy update acme/http
Terminal window
# Login to hub
wippy auth login
# Validate module
wippy publish --dry-run
# Publish
wippy publish --version 1.0.0 --release-notes "Initial release"

Create .wippy.yaml for persistent settings:

logger:
encoding: console
logmanager:
min_level: -1 # debug
profiler:
enabled: true
address: localhost:6060
override:
app:gateway:addr: ":9090"
app:db:host: "localhost"