Visit our developer docs at https://wendy.sh/docs
WendyOS is like iOS for developing, deploying, and debugging
apps on edge devices such as NVIDIA Jetson, AGX, Thor, Raspberry Pi, and Linux machines.
This repository contains the wendy CLI and the wendy-agent runtime service.
WendyOS images already include wendy-agent. If you are looking for the
Yocto image build system, it lives in
wendylabsinc/WendyOS-Builder.
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.WendySome local setup scripts are unsigned, so Windows may block them even when you trust the repository. If you need to run a local, trusted PowerShell setup script, use a one-time bypass only after reviewing the script:
Get-Content .\set-up-windows.ps1
powershell -ExecutionPolicy Bypass -File .\set-up-windows.ps1The bypass applies only to that PowerShell invocation. Run it from a non-elevated (standard-user) PowerShell window. If a specific step fails with an access-denied error, review that section of the script before re-running as Administrator.
Package-specific options are available via Homebrew, .deb, .rpm, and AUR.
Use the CLI to install WendyOS on supported hardware:
wendy os installThe installer can download WendyOS images, write them to the selected target
drive, and pre-seed device configuration such as WiFi credentials. WendyOS
images come preconfigured for remote development and include wendy-agent.
To discover a WendyOS device after it boots:
wendy discoverTo build and run an app on a discovered WendyOS device:
wendy runYou do not need to install wendy-agent separately on WendyOS. WendyOS
already has wendy-agent installed and configured.
Install wendy-agent only when you want to turn a standard Linux machine into a
Wendy target, such as Ubuntu x86_64, Arch Linux, Fedora, Debian, RHEL-compatible
Linux, or other distributions.
curl -fsSL https://install.wendy.sh/agent.sh | bashThe installer supports Linux x86_64 and ARM64. It uses native packages on Debian/Ubuntu, Fedora/RHEL, and Arch Linux when available, with a binary fallback for other Linux distributions. See INSTALL.md for manual package installation.
wendy-agent uses containerd to run apps. On a manual Linux setup, make sure
containerd is installed and running:
sudo systemctl enable --now containerdThe CLI is written in Go:
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/wendyBuild the agent from source:
cd go
go build -o wendy-agent ./cmd/wendy-agentAdd a wendy-dev shell function 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/WendyOS/go && go run ./cmd/wendy "$@")
}Then use wendy-dev anywhere you would normally use wendy:
wendy-dev run
wendy-dev discover --jsonYou can do the same for the agent:
wendy-agent-dev() {
(cd /path/to/WendyOS/go && go run ./cmd/wendy-agent "$@")
}wendy-agent supports both NetworkManager and ConnMan for WiFi configuration.
The agent automatically detects which network manager is available:
- ConnMan is preferred for embedded and IoT devices due to its lighter resource usage.
- NetworkManager is supported for desktop and server environments.
- The agent automatically detects and uses 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-networkmanagercd Examples/HelloWorld
wendy runcd 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, with no sensitive data
- CLI version and operating system
- Anonymous identifier (UUID)
We never collect file paths, hostnames, project names, code, or personally identifiable information.
Check current analytics status:
wendy analytics statusDisable analytics:
wendy analytics disable
export WENDY_ANALYTICS=falseRe-enable analytics:
wendy analytics enableAnalytics is automatically disabled in CI environments.
