Unleash the devices
you already own.
Open source software that brings your devices together. And a world of self‑hosted apps to run on them.
Try SpacewaveYour devices.
Your people.
Your Space.
This is Spacewave: our open source, self-hosted app suite. Open it in your browser and a private, encrypted workspace is running on your own machine in one click.
Open SpacewaveNo account. No setup. Make yourself at home.
A place for the things you want to do.
Keep your work togetherFiles, notes, and documents
Keep files and notes in a shared, encrypted Space. Work on your own machine, sync directly between devices, and keep going offline.
Bring people into the pictureChat and live collaboration
Invite people into a Space to share work and collaborate live. Chat and messaging live alongside the files, notes, and apps in your Space.
Reach the rest of your devicesTerminals and device tools
Use terminal access and remote control of your devices. Extend your Space with plugins, including SkiffOS for building and managing Linux devices.
Your storage. Your choice.
Keep data on your machines, in your browser, on your own server, or in a cloud you pick.
Optional managed storage and relay cost $8 a month for 100 GB. Spacewave works without them.
Open all the
way down.
You can look inside. You can make it your own.
We build the layers beneath Spacewave, from networking and storage to the tools that run on your devices. Nearly everything we write is open source under permissive licenses.
Build the appsBldr
Builds and ships apps and plugins to browsers, desktops, servers, and firmware. The same Go, TypeScript, React, and WebAssembly machinery is yours to build with.
Explore BldrConnect the devicesBifrost
The peer-to-peer networking engine. Devices identify each other and communicate over encrypted links, with pluggable transports and multi-hop routing.
Explore BifrostStore and sync the dataHydra
Encrypted, content-addressed storage with peer-to-peer sync. Block graphs and pluggable backends let data live where you choose.
Explore HydraCoordinate the workControllerBus
Communicating control loops. Configurable, hot-loadable controllers coordinate through declarative directives and manage their lifecycles.
Explore ControllerBusKeep the conversation flowingStaRPC
Streaming Protobuf RPC with bidirectional streams over any multiplexed transport, in Go, TypeScript, Rust, and C++.
Explore StaRPCBring Go to the browserGoScript
Go compiled to TypeScript, including goroutines, channels, and select. Run it in Node, Bun, and the browser.
Explore GoScriptPut small boards to workSkiffOS
A minimal, cross-compiled Linux host for embedded devices. Run the Linux distribution of your choice in a container on the boards you own.
Explore SkiffOSSkiffOS brings the same spirit to the operating system on your boards.
There is more in the workshop.Explore the project catalog
Flagship projects
- SkiffOSRun any Linux distribution on the boards you own: a minimal cross-compiled host that runs the distribution of your choice in a container.Buildroot / Shell
- SpacewaveLink the devices you own into one mesh and run a self-hosted app suite across them in one click. No account, and it works offline.Go / TypeScript / Wasm
- GoScriptWrite Go and run it anywhere TypeScript runs: goroutines, channels, and select compiled for Node, Bun, and the browser.Go / TypeScript
- rGraphQLTwo-way streaming GraphQL over real-time transports, with resolvers generated from Go code and live updates on the wire.Go / TypeScript
- StaRPCStreaming Protobuf RPC with bidirectional streams over any multiplexed transport, in Go, TypeScript, Rust, and C++.Go / TypeScript / Rust / C++
- protobuf-go-liteReflection-free Protobuf for Go: static code for marshal, size, clone, equal, text, and JSON, with smaller binaries.Go
- ControllerBusCommunicating control loops: configurable, hot-loadable controllers that coordinate through declarative directives.Go
Application frameworkCompose apps from controllers and ship them to every device.
- BldrBuilds and hot-deploys plugins to the browser, desktop, CLI, servers, and firmware.Go / TypeScript
- CommonThe aptre CLI: Protobuf code generation for Go, TypeScript, C++, and Rust, with the toolchain embedded as Wasm.Go / Wasm
- UtilConcurrency primitives for Go: broadcast, keyed routines, promises, backoff, refcounts, and queues.Go
- cliA slim, reflection-free, TinyGo-friendly fork of urfave/cli for fast command line apps.Go
- TemplateThe starting point for a new project on the stack: Protobuf, Go, TypeScript, and C++.Go / TypeScript
- protobuf-projectProject boilerplate for Protobuf with Go import paths across Go and TypeScript.Go / TypeScript
- ocpipeType-safe LLM pipelines with Zod schemas, checkpoints, and pluggable agent backends.TypeScript
NetworkingConnect devices directly over encrypted links, on any transport.
Lightweight ProtobufSmall, fast, reflection-free code for WebAssembly and TinyGo.
- protobuf-es-liteProtobuf messages as plain TypeScript interfaces with a companion codec.TypeScript
- go-protobuf-cpp-genA pure-Go generator of standalone C++ Protobuf classes, with no protoc required.Go / C++
- go-protoc-wasiThe protoc compiler as a WASI reactor, embedded in a Go module.Go / Wasm
- go-protoc-gen-prostRust Protobuf generation from Go, via prost compiled to Wasm.Go / Rust / Wasm
- json-iterator-liteMinimal, reflection-free JSON marshal and unmarshal for Go.Go
- timestampA simple cross-language Protobuf timestamp in milliseconds.Go / TypeScript
WebAssembly runtimesRun JavaScript and WebAssembly engines inside Go and the browser.
- go-quickjs-wasi-reactorQuickJS-NG in Go through wazero, with re-entrant scheduling in the WASI reactor model.Go / Wasm
- js-quickjs-wasi-reactorQuickJS-NG in any JavaScript runtime, with a complete browser WASI shim.TypeScript / Wasm
- go-quickjs-wasiQuickJS-NG as a WASI command, embedded in a Go module.Go / Wasm
- go-dash-wasi-reactorThe dash shell compiled to a WASI reactor, with setjmp built on wazero snapshots.Go / C / Wasm
- go-reactorHost harnesses for Go WASI reactor binaries with cooperative scheduling.Go / TypeScript
- ts2goEmbeds JavaScript in Go with QuickJS inside a WASI virtual machine.Go / TypeScript
Storage and dataKeep data durable and portable, from embedded key-value files to graphs.
- HydraA peer-to-peer data store: content-addressed, encrypted block graphs on any backend.Go
- go-kvfileA compact key-value archive with binary-search lookup and seekable zstd compression.Go
- bboltbbolt with LMDB-style multi-process readers and writers over a shared lock file.Go
- go-indexeddbA low-level IndexedDB driver for Go compiled to WebAssembly.Go / Wasm
- CayleyA graph database for Go, maintained as a lightweight fork.Go
- prometheus-liteThe Prometheus label model and PromQL engine without the server, over injected storage.Go
Embedded LinuxBring small boards and robots to life with containers.
InterfaceMake apps feel native on the desktop and in the browser.
Upstream projectsWe maintain lean forks and send our fixes back.
- Buildroot
- QuickJS-NG
- Pion WebRTC
- Pion ICE
- Pion DTLS
- Pion TURN
- Pion mDNS
- Pion RTCP
- Pion Transport
- quic-go
- wazero
- esbuild
- v86
- SQLite
- sqlite-wasm
- go-mysql-server
- Vitess
- go-mysql-driver
- Badger
- Ristretto
- go-git
- CIRCL
- x/crypto
- Protocol Buffers
- goprotowrap
- fastjson
- go-brotli-decoder
- go-multiaddr
- go-multibase
- go-websocket
- fsnotify
- logrus
- jsonpath
- go-winjob
- client_golang lite
- dash
- Saucer
- Conduit
- go-org
- Hidalgo
- Prime Agent
Over a decade of systems,
built in the open.
Christian Stewart
Founder and lead developer
Christian builds software that makes hardware easy to use. He created SkiffOS, the Linux under a published drone research stack, and founded Aperture Robotics in 2018 to build Spacewave. He studied computer science at Purdue and works from Seattle.
He has maintained core Buildroot packages since 2015 and landed fixes in Go, Kubernetes, libp2p, QuickJS-NG, and wazero. Before Aperture he worked on vision navigation for the Mars Helicopter at NASA JPL and built matchmaking at FACEIT.
A little more background
- 2018 to now
Founder, Aperture Robotics
Spacewave and the open stack under it: GoScript, Bifrost, StaRPC, ControllerBus, protobuf-go-lite, and more.
- 2015 to 2022
Senior Software Engineer, FACEIT
Built a matchmaking system managing millions of queues, ran its Dota 2 bot network on go-dota2, and moved the 18 million user platform onto Kubernetes.
- 2016
Created SkiffOS
A container-optimized Linux for any board. It is the operating system under the CNS Flight Stack for autonomous drones, published in IEEE Robotics and Automation Letters, and supported simulated crewed Mars mission efforts.
- 2015 to now
Buildroot developer
Maintains the Go, Docker, containerd, runc, and networking packages, with more than 370 commits upstream.
- 2013 to 2017
Summer Intern, NASA Jet Propulsion Laboratory
Ported vision navigation to phone processors, demonstrated vision-based flight on a mobile chip, and supported early development of the Mars Helicopter, Ingenuity.
- 2011 to 2012
Caltech, and the Los Angeles Science Fair
Automated amplifier test instruments at Caltech, and took first place in Applied Engineering for low-cost autonomous civilian aircraft.
What will you
bring together?
Building something for the devices people already own? Let's talk.
[email protected]Partnerships, investment, press, or a question about the code. We read every message.
Join our Discord