- Zig 99.3%
- C++ 0.4%
- Shell 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .githooks | ||
| docs | ||
| packaging | ||
| scripts | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| build.zig | ||
| build.zig.zon | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| CODING_STANDARDS.md | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
zerotea
A from-scratch Zig implementation of the ZeroTier network-virtualization protocol.
Status: early. Crypto tier in progress. This is a research build. Do not use it for anything real. The daemon runtime does not exist yet;
zerotea --versionis the only contract so far. Nothing here is "production ready" and no such claim will be made without end-to-end proof.
Why this repo exists
There is an older Zig port of ZeroTier that an LLM grew to 6,817 commits by iterating locally, unvalidated, more or less forever. zerotea is a deliberate counter-experiment: rebuild the same protocol with proper CI/CD as the development method —
- every commit validated in a build pipeline (it never merges red);
- constant fuzzing of every decoder (property-based, seeded, reproducible);
- occasional releases gated by wider functional tests.
The old port is used only as a reference oracle — "guardrails and a source of clues." The
open question: does disciplined CI/CD produce a measurably different commit-history shape than
"let a chatbot chew on it forever"? The comparison is tracked in
docs/METHODOLOGY.md.
Not clean-room; MPL-2.0
zerotea is a derivative work of ZeroTierOne (MPL-2.0) and is distributed under the same
license (see LICENSE and NOTICE). It is not clean-room — the
reference was visible while writing. MPL-2.0 permits derivation, so clean-room is neither
claimed nor needed. Crypto test vectors are from public standards.
Build
zig build test # unit tests (KATs, round-trips)
zig build fuzz -- --budget=30s # run every decoder's fuzz target for 30s
zig build && zig-out/bin/zerotea --version
Requires Zig ≥ 0.16.0.
Development
This repo rides the seanfarm pipeline: push a feature branch to code.sean.farm/sean/zerotea,
let CI validate it, then make land PROJECT=zerotea BRANCH=<x>. See
docs/METHODOLOGY.md.