Switchyard is a self-hosted home automation platform. switchyardd runs on your local network and connects to devices via a driver model; switchyard is the CLI for managing it.
Warning: This project is in early development. It's definitely not ready for production use, and the API is likely to change.
| Module | Path | Description |
|---|---|---|
github.com/fdatoo/switchyard |
. |
Daemon (switchyardd) + CLI (switchyard) |
github.com/fdatoo/switchyard-driverkit |
./switchyard-driverkit |
SDK for building device drivers |
Both modules are linked by a Go workspace (go.work), so go build ./... and go test ./... work across the full tree from the repo root.
- Go 1.25+
- Task —
brew install go-task - buf —
brew install bufbuild/buf/buf(proto codegen) - Pkl —
brew install pkl(config schema) - Node.js 20+ — for the web UI
task build # builds switchyardd + switchyard binaries into dist/
task web:build # builds the web UI (required before task build)task test # unit tests
task test:race # race detector
task test:integration # integration tests (real disk I/O)Drivers are out-of-process binaries that implement the driver gRPC protocol. Use the switchyard-driverkit to build one:
cd switchyard-driverkit
go build ./...Full documentation lives in docs/ and is published via Zensical. Design specs and implementation plans live in docs/design/.