Wire is a distributed stream processing engine written in Go. It targets unbounded data streams with strict correctness guarantees: exactly-once semantics, deterministic recovery, and strict event ordering. State lives in an embedded PebbleDB; checkpoints use Asynchronous Barrier Snapshots (Chandy–Lamport). Wire is designed to run as a single binary with no external dependencies.
Project status: pre-
v0.1.0, alpha. The codebase underwent a full architectural rewrite (merged March 2026, PR #148). The engine, coordinator, and worker are in place; user-facing surfaces (configuration reference, Go SDK, REST API, connector SDK) are actively being specified under the WIP process. There are no built-in connectors yet.
The canonical design docs live in docs/:
| Doc | Purpose |
|---|---|
docs/vision.md |
Goals, non-goals, and design principles |
docs/architecture.md |
Runtime topology, control plane, data plane |
docs/execution-model.md |
Event/time/watermarks, checkpointing, backpressure |
docs/state-backend.md |
Pebble integration, snapshot protocol |
docs/operations.md |
Deployment modes, scaling, monitoring |
docs/usage.md |
Build/run instructions and CLI flag reference |
docs/trds/ |
Wire Improvement Proposals (WIPs) — design history and in-flight proposals |
For a gap analysis against the current codebase, see docs/docs-todo.md. For the project roadmap, see ROADMAP.md.
git clone https://github.com/tarungka/wire.git
cd wire
make buildThis produces the wire binary in the project root. Go 1.24+ is required.
Wire runs as a single binary in either coordinator or worker mode. See docs/usage.md for the full flag reference.
Coordinator (single-node):
./wire \
--mode coordinator \
--http-listen :4001 \
--listen :4002 \
--election-backend noop \
--coordinator-data-dir data/coordinatorWorker:
./wire \
--mode worker \
--coordinator-addr localhost:4002 \
--task-slots 4See CONTRIBUTING.md for development setup and contribution guidelines. Non-trivial changes should go through the WIP process.
MIT — see LICENSE.