Install or update the wendy CLI on macOS or Linux (x86_64 and ARM64):
curl -fsSL https://install.wendy.sh/cli.sh | bashOn Windows:
winget install WendyLabs.WendyAlso available via Homebrew, .deb, .rpm, and AUR.
Install or update the wendy-agent on a Linux device (x86_64 and ARM64):
curl -fsSL https://install.wendy.sh/agent.sh | bashSupports Debian/Ubuntu, Fedora/RHEL, and Arch Linux. Also available via system packages.
The CLI is written in Go. To build from source:
cd go
go build -o wendy ./cmd/wendyOn macOS, CGO is required (for CoreBluetooth). It is enabled by default when using the standard Go toolchain, but if you have explicitly disabled it:
cd go
CGO_ENABLED=1 go build -o wendy ./cmd/wendycd go
go build -o wendy-agent ./cmd/wendy-agentAdd a wendy-dev alias to your shell profile (~/.zshrc or ~/.bashrc) so you can quickly iterate on CLI changes without overwriting your installed wendy:
wendy-dev() {
(cd /path/to/wendy-agent/go && go run ./cmd/wendy "$@")
}Then use wendy-dev anywhere you'd normally use wendy:
wendy-dev run
wendy-dev discover --jsonYou can do the same for the agent:
wendy-agent-dev() {
(cd /path/to/wendy-agent/go && go run ./cmd/wendy-agent "$@")
}The device needs to run the wendy-agent. We provide pre-built WendyOS images for the Raspberry Pi and the NVIDIA Jetson Orin Nano. These are preconfigured for remote debugging and have the wendy-agent preinstalled.
WendyAgent supports both NetworkManager and ConnMan for WiFi configuration. The agent will automatically detect which network manager is available on the system:
- ConnMan is preferred for embedded/IoT devices due to its lighter resource usage
- NetworkManager is supported for desktop and server environments
- The agent will automatically detect and use the available network manager
You can configure the network manager preference using the WENDY_NETWORK_MANAGER environment variable on the agent:
# Auto-detect (default)
export WENDY_NETWORK_MANAGER=auto
# Prefer ConnMan if available, fall back to NetworkManager
export WENDY_NETWORK_MANAGER=connman
# Prefer NetworkManager if available
export WENDY_NETWORK_MANAGER=networkmanager
# Force ConnMan (will fail if not available)
export WENDY_NETWORK_MANAGER=force-connman
# Force NetworkManager (will fail if not available)
export WENDY_NETWORK_MANAGER=force-networkmanagerIf no environment variable is set, the agent will auto-detect the available network manager.
The wendy CLI communicates with a wendy-agent. The agent uses containerd for running your apps.
On a Debian (or Ubuntu) based OS, you can do the following:
# Install containerd
sudo apt install containerd
# Start containerd and keep running across reboots
sudo systemctl start containerd
sudo systemctl enable containerdThen install the agent using the install script above, or download a build from the releases page.
cd Examples/HelloWorld
wendy runA more advanced example demonstrating HTTP server capabilities:
cd Examples/HelloHTTP
wendy runTo debug an app, use the --debug flag:
wendy run --debugThis enables host networking for remote debugger access. For Python apps, debugpy is automatically injected and listens on port 5678.
The Wendy CLI includes privacy-first anonymous usage analytics to help improve the developer experience. Analytics helps us understand which commands are used most, identify common errors, and prioritize improvements.
- Command names and success/failure status
- Sanitized error types (no sensitive data)
- CLI version and operating system
- Anonymous identifier (UUID)
We never collect file paths, hostnames, project names, code, or any personally identifiable information.
Check current analytics status:
wendy analytics statusDisable analytics:
wendy analytics disable
# Or set environment variable
export WENDY_ANALYTICS=falseRe-enable analytics:
wendy analytics enableAnalytics is automatically disabled in CI environments.