Ze networking software you didn't know you were looking for.
  • Go 89.9%
  • JavaScript 5.2%
  • Python 3.4%
  • Shell 0.6%
  • CSS 0.3%
  • Other 0.6%
Find a file
Thomas Mangin 3691579a5d
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
chore: close spec-yang-rename-ownership
Both phases complete: schema/ renamed to yang/ (Phase 1), command YANG
moved to plugins/ (Phase 2). Spec preserved in git history via
preceding commit.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
2026-06-08 22:23:31 +01:00
.claude style(hooks): simplify encoding-alloc path gate, drop dead clause 2026-06-08 14:43:56 +01:00
.github/workflows ci: deploy GitHub Pages from pages directory 2026-05-24 13:54:11 +01:00
.woodpecker build: add Docker support and upgrade to Go 1.26 2026-05-22 14:11:09 +01:00
ai docs(yang): add learned summary for yang-rename-ownership 2026-06-08 22:23:31 +01:00
api/proto feat(api): add gRPC transport, proto definitions, and dev tooling 2026-04-10 13:12:22 +00:00
cmd/ze fix(dispatch): add stdin config dispatch for ze_setup builds 2026-06-08 15:50:33 +01:00
docker build: add Docker support and upgrade to Go 1.26 2026-05-22 14:11:09 +01:00
docs fix(config): block load command in session mode 2026-06-08 21:56:07 +01:00
etc/ze bgp: make test evidence honest 2026-04-21 13:54:53 +01:00
examples/plugin/go refactor(plugin): decompose monolith into ipc/, server/, process/ sub-packages 2026-03-27 11:03:45 +00:00
gokrazy refactor(cmd): replace negation build tags with positive ze_core tag 2026-06-07 15:35:52 +01:00
handover feat(mrt): wire format library, daemon component, analysis tools 2026-06-07 15:08:27 +01:00
internal refactor(yang): move command YANG from component/ to plugins/ 2026-06-08 22:21:18 +01:00
mk feat(mutation): multi-pkg target, vendored gomu, combine script 2026-06-07 21:17:53 +01:00
parked refactor: flatten bgp/plugins/bgp into bgp/, fix imports, and add chaos tests to test-all 2026-03-27 11:03:47 +00:00
pkg fix(verify): resolve ze-verify gate failures and lint debt 2026-06-08 14:39:14 +01:00
plan chore: close spec-yang-rename-ownership 2026-06-08 22:23:31 +01:00
rfc feat(mrt): wire format library, daemon component, analysis tools 2026-06-07 15:08:27 +01:00
scripts refactor(yang): move command YANG from component/ to plugins/ 2026-06-08 22:21:18 +01:00
test fix(config): block load command in session mode 2026-06-08 21:56:07 +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 refactor(yang): rename schema/ directories to yang/ across codebase 2026-06-08 21:58:45 +01:00
vendor feat(test): add gomu mutation testing integration 2026-06-07 19:23:56 +01:00
.dockerignore docs(perf): update benchmark results after optimization campaign 2026-05-24 09:32:52 +01:00
.gitignore build: track tmp/go.mod sentinel so go list ./... skips tmp/ caches 2026-05-31 17:58:02 +01:00
.golangci.yml fix(verify): resolve ze-verify gate failures and lint debt 2026-06-08 14:39:14 +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
go.mod feat(test): add gomu mutation testing integration 2026-06-07 19:23:56 +01:00
go.sum feat(test): add gomu mutation testing integration 2026-06-07 19:23:56 +01:00
LICENSE AGPL-3.0 license 2026-03-27 11:01:48 +00:00
Makefile fix(dispatch): remove multi-call prefix, decouple ze-setup from ze_core 2026-06-08 12:50:02 +01:00
package-lock.json refactor: reorganize documentation structure 2026-03-27 11:02:28 +00: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