Hey everyone,
I'm excited to share a project I've been building: WendyOS - an open-source, Swift-first Linux distribution designed to make embedded development radically simpler.
The Problem
Anyone who's worked with embedded Linux boards like NVIDIA Jetson knows the pain: hours of setup, flashing SD cards, hunting for IP addresses, configuring SSH, installing toolchains. We recently ran an experiment with an MIT robotics student who spent 3.5 hours on the traditional Jetson setup and still couldn't get to building apps. With WendyOS, she went from brew install to running code on the device in 3 minutes.
What WendyOS Does
brew install wendylabsinc/tap/wendy # Install the CLI
wendy os install # Flash WendyOS to your device
wendy run # Deploy your Swift package or Dockerfile
That's it. No monitors, keyboards, or complex flashing workflows. Just USB-C and your code.
WendyOS currently supports NVIDIA Jetson boards with Raspberry Pi support coming soon. The CLI runs on macOS, Linux, and Windows!
Built on the Swift Ecosystem
WendyOS is a showcase of what's possible with Swift outside of Apple platforms. The entire stack leverages:
- grpc-swift: The agent daemon exposes gRPC services over mTLS for secure device communication
- swift-container-plugin: Build OCI container images directly from SwiftPM packages
- Hummingbird: Powers our container registry API and OpenTelemetry proxy
- swift-otel: Full observability with logs, metrics, and traces streamed to your CLI
- swift-certificates: Certificate management for mTLS
Open Source & Upstreaming
Everything is open source:
- wendy-agent - The on-device daemon
- All our repositories
We've also been contributing back to the ecosystem with PRs to:
- Swift VSCode Extension (remote debugging support)
- SwiftNIO Windows support
- grpc-swift
- swift-container-plugin
- Tuist/Noora (Windows support + improvements)
- MLX-Swift on Linux
Features
- Cross-compilation from any host OS to ARM64 Linux
- Remote debugging with LLDB via the VSCode extension
- OTA updates and fleet management
- Setup over USB, Bluetooth, or LAN
- Container-based app isolation using containerd
Why Swift?
Swift's type safety, performance, and async/await model make it excellent for systems programming. We're generating OCI runtime specs, managing container lifecycles, and streaming telemetry data - all in pure Swift.
In addition, Swift's memory and concurrency safety provide compile-time guarantees which are great for security, but also serve as a feedback loop for coding agents.
I'd love to hear your thoughts, feedback, and ideas. If you're working on embedded projects or interested in Swift beyond Apple platforms, give it a try and let me know how it goes!