Ze networking software you didn't know you were looking for.
  • Go 90.4%
  • JavaScript 4.4%
  • Python 3.8%
  • Shell 0.6%
  • Makefile 0.3%
  • Other 0.5%
Find a file
Thomas Mangin 3bf865949f
Some checks are pending
CodeQL Advanced / Analyze (go) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
CodeQL Advanced / Analyze (python) (push) Waiting to run
fix(appliance): add feature gates to gokrazy config (enables SSH)
The gokrazy config had only ze_core, so the appliance binary was
built without SSH (ze_ssh) or any other feature gate. Added all
default-on feature gates to match the Makefile ze-appliance target.
2026-06-30 01:02:51 +01:00
.claude docs(rules): enforce registration-over-hardcoding in every spec 2026-06-29 05:05:04 +01:00
.github/workflows ci: deploy GitHub Pages from pages directory 2026-05-24 13:54:11 +01:00
.woodpecker verify: qualify FRESH, reverse deps, fail-not-skip suites 2026-06-10 14:25:25 +01:00
ai feat(dev): unified ze-setup script with drift guard 2026-06-30 00:28:20 +01:00
api/proto feat(api): add gRPC transport, proto definitions, and dev tooling 2026-04-10 13:12:22 +00:00
cmd feat(installer): pure-Go PID-1 initrd engine + build pipeline 2026-06-29 23:00:31 +01:00
docker build: add Docker support and upgrade to Go 1.26 2026-05-22 14:11:09 +01:00
docs feat(dev): unified ze-setup script with drift guard 2026-06-30 00:28:20 +01:00
etc/ze chore(repo): tidy root layout, relocate fixtures and handover 2026-06-28 13:58:42 +01:00
examples/plugin/go refactor(plugin): decompose monolith into ipc/, server/, process/ sub-packages 2026-03-27 11:03:45 +00:00
gokrazy fix(appliance): add feature gates to gokrazy config (enables SSH) 2026-06-30 01:02:51 +01:00
internal feat(dev): unified ze-setup script with drift guard 2026-06-30 00:28:20 +01:00
iso docs(rfc): add IS-IS RFC + ISO 10589 summaries and source texts 2026-06-18 01:18:29 +01:00
mk feat(installer): pure-Go PID-1 initrd engine + build pipeline 2026-06-29 23:00:31 +01:00
parked refactor(tiers): complete non-engine taxonomy, B-2 extraction, domain clustering 2026-06-29 09:20:43 +01:00
pkg feat(bgp): per-family import/export filter + egress gate 2026-06-26 19:45:36 +01:00
plan spec: close spec-dev-bootstrap 2026-06-30 00:28:21 +01:00
rfc refactor(tiers): complete non-engine taxonomy, B-2 extraction, domain clustering 2026-06-29 09:20:43 +01:00
scripts feat(installer): pure-Go PID-1 initrd engine + build pipeline 2026-06-30 00:37:39 +01:00
test fix(installer): boot-NIC pin, DHCP recovery, gated rescue shell 2026-06-29 16:27:31 +01:00
third_party/web l2tp: web management UI with CQM chart, event timeline, disconnect (spec-l2tp-11-web) 2026-04-22 22:44:07 +00:00
tools fix(installer): boot-NIC pin, DHCP recovery, gated rescue shell 2026-06-29 16:27:31 +01:00
vendor feat(traffic-usage): eBPF TCX per-port/per-IP byte accounting 2026-06-24 11:39:46 +01:00
.dockerignore docs(perf): update benchmark results after optimization campaign 2026-05-24 09:32:52 +01:00
.gitignore chore(gitignore): drop dead .claude/selected-spec ignore 2026-06-27 16:30:29 +01:00
.golangci.yml feat(feature-gate): per-protocol compile-out (isis/ldp/ospf/rsvpte) 2026-06-26 10:44:11 +01:00
.gomuignore feat(mutation): multi-pkg target, vendored gomu, combine script 2026-06-07 21:17:53 +01:00
CLA.md docs: add CLA and contributing guide, update README 2026-03-31 23:42:58 +01:00
CONTRIBUTING.md refactor: consolidate skills with ze- prefix, add health check and retrospective 2026-04-05 15:45:05 +01:00
feature-gates.txt feat(feature-gate): per-protocol compile-out (isis/ldp/ospf/rsvpte) 2026-06-26 10:44:11 +01:00
go.mod feat(traffic-usage): eBPF TCX per-port/per-IP byte accounting 2026-06-24 11:39:46 +01:00
go.sum chore(deps): record canonical go.sum checksums (rtnetlink, ebpf) 2026-06-26 11:46:52 +01:00
LICENSE AGPL-3.0 license 2026-03-27 11:01:48 +00:00
Makefile feat(dev): unified ze-setup script with drift guard 2026-06-30 00:28:20 +01:00
README.md docs: clarify supported development hosts 2026-06-02 09:02:49 +01:00
SECURITY.md fix: resolve P1-P3 release-readiness findings from 2026-04-24 audit 2026-04-24 15:43:56 +01:00
tools.go feat(test): add gomu mutation testing integration 2026-06-07 19:23:56 +01:00

Ze

ze-software.github.io/ze

Pre-release -- Ze is under active development and has not been released yet. The core BGP engine works and is extensively tested (as of 2026-04: 12,800+ unit tests, 900+ functional tests, 57 fuzz targets, chaos testing, and 35 Docker-based interop scenarios against FRR, BIRD, GoBGP, OpenBGPd, FreeRtr, RustyBGP, and rustbgpd), but some advanced features are still incomplete. APIs and config syntax may change.

Ze is an open-source network operating system for Linux. It speaks BGP, manages network interfaces, programs the FIB, and serves a config editor over SSH and a web UI. Everything beyond the core is a plugin. Plugins can be Go modules or external processes in any language. An MCP server can let AI assistants discover all its features (including plugins) and operate them directly.

The engine is a supervisor that composes a message bus, a config provider, and a plugin manager. It has no knowledge of BGP or any specific protocol. BGP, interface management, and everything else register as subsystems and plugins.

It is the successor to ExaBGP to be a fully programmable network stack for device configuration and network automation.

Components

Component Role
BGP engine TCP connections, FSM, message parsing, capability negotiation
Interfaces Linux network management: ethernet, bridge, VLAN, tunnels, WireGuard, DHCP, NTP
FIB Route installation into the kernel forwarding table (netlink) or VPP data plane
Config YANG-modeled configuration with commit, rollback, and live reload
CLI SSH-accessible interactive editor and command shell
Web UI Browser-based configuration editor and admin dashboard
Looking glass Peer status and route viewer, birdwatcher-compatible API
Telemetry Prometheus metrics export with optional Basic Auth and Netdata-compatible OS collectors
MCP Model Context Protocol server for AI tool integration

Plugins

Type Plugins
Storage bgp-rib, bgp-adj-rib-in, bgp-persist
Policy bgp-rs, bgp-filter-community, bgp-role
Resilience bgp-gr, bgp-watchdog, bgp-route-refresh
Validation bgp-rpki, bgp-rpki-decorator
Capabilities bgp-aigp, bgp-hostname, bgp-llnh, bgp-softver
Address families bgp-nlri-vpn, bgp-nlri-evpn, bgp-nlri-flowspec, bgp-nlri-ls, bgp-nlri-labeled, bgp-nlri-vpls, bgp-nlri-mvpn, bgp-nlri-rtc, bgp-nlri-mup

IPv4/IPv6 unicast and multicast are built into the engine. See Feature Inventory for details.

Wire Performance

Aspect Detail
Parsing Lazy via offset iterators, no upfront deserialization
Forwarding Zero-copy when source and destination share encoding context
Encoding Buffer-first: all wire writes into pooled, bounded buffers
Dedup Per-attribute-type pools with refcounted handles

ExaBGP

Existing ExaBGP plugins work unchanged via a bridge. ze config migrate converts ExaBGP configs.

If you are an ExaBGP user, we would love your feedback on the migration experience. Please try ze config migrate with your configs and let us know what works and what does not -- even at this early stage, that feedback shapes the project. File issues or reach out on Discord.

Testing

Type Scope
Unit tests 10,000+ test functions as of 2026-04
Linting 26 linters
Functional tests Roughly 800 .ci files as of 2026-04: config parsing, wire encoding, plugin behavior, reloads, UI/editor flows, L2TP, firewall, and web
Fuzz testing 50+ targets covering external input parsing as of 2026-04
Chaos testing Deterministic replay with configurable scenarios

Deployment

Ze runs as a daemon under systemd (or any process manager) on any Linux, or as a dedicated appliance image built with gokrazy for purpose-built hardware. Same binary, same config format, same CLI.

Mode Description
Any Linux Standard daemon, integrates with systemd, journald, and your existing tooling. See Operations
Appliance Immutable boot image for N100 mini PCs or VMs: read-only root, no shell, automatic supervision. See VM Appliance

You own the config, the plugins, and the hardware. No per-instance licensing, no vendor portal, no cloud dependency.

Quick Start

git clone https://codeberg.org/thomas-mangin/ze.git && cd ze
make build              # produces bin/ze
bin/ze init             # set up SSH credentials (once)
bin/ze config import router.conf  # or: ze config edit
bin/ze start

Requires Go 1.26+ on a macOS or Linux development host. Windows is not a supported development platform. See the Quick Start guide.

I Want To...

Task Start here
Try Ze for the first time Quick Start
Announce routes to my upstream Route Injection
Migrate from ExaBGP ExaBGP Migration
Monitor BGP sessions Monitoring
Restart without dropping routes Graceful Restart
Validate routes against RPKI RPKI
Write a plugin (Go, Python, Rust) Plugin Development
Understand the internals Architecture
Build a route server at an IXP Route Reflection (please don't, not yet)
Run Ze in production Operations
Build a dedicated network appliance VM Appliance
Compare Ze with other daemons Comparison

Documentation

Architecture One-page overview: components, data flow, key abstractions
User Guide Configuration, plugins, operations, and feature guides
Design Document Full design rationale, wire format details, performance analysis
Feature Inventory Protocols, attributes, capabilities, CLI commands
Command Reference All shell and runtime commands
Plugin Development Writing external plugins, IPC protocol, SDK
Comparison Ze vs FRR, BIRD, GoBGP, OpenBGPd, and others

An AI-Assisted Project

Ze exists because AI coding assistants (Claude Code) made a ground-up BGP rewrite feasible for a solo developer. The author focused on architecture and design decisions informed by a decade of ExaBGP; AI handled the volume of protocol encoding, boilerplate, and test generation.

Contributors using Claude Code have access to 19 project-specific slash commands for specs, implementation, review, and testing. See the Claude Code cheat sheet.

License and Contributions

GNU Affero General Public License v3.0

Contributions are welcome if they follow the contribution process. A Contributor License Agreement applies.

Official repo github.com/ze-software/ze
Development codeberg.org/thomas-mangin/ze
Issues github.com/ze-software/ze/issues
Discord discord.gg/ykJb8meS4
ExaBGP github.com/Exa-Networks/exabgp