Pre-release -- Ze is under active development and has not been released yet. The core BGP engine works and is extensively tested (8,000+ unit tests, 550+ functional tests, fuzz testing, chaos testing, interop tests against FRR, BIRD, and GoBGP), but some advanced features are still incomplete. APIs and config syntax may change.
Ze turns a Linux server into a networking device. 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. 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.
It is the successor to ExaBGP to be a fully programmable network stack for device configuration and network automation.
| Component | Role |
|---|---|
| BGP engine | TCP connections, FSM, message parsing, capability negotiation |
| Config | YANG-modeled configuration, validation, live reload |
| CLI | SSH-accessible interactive editor and command shell |
| Web UI | Browser-based configuration editor |
| Looking glass | Peer status and route viewer, birdwatcher-compatible API |
| Telemetry | Prometheus metrics export |
| MCP | Model Context Protocol server for AI tool integration |
| 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.
| 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 |
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.
| Type | Scope |
|---|---|
| Unit tests | 18,000+ test functions |
| Linting | 26 linters |
| Functional tests | Config parsing, wire encoding, plugin behavior |
| Fuzz testing | All external input parsing |
| Chaos testing | Deterministic replay with configurable scenarios |
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 startRequires Go 1.25+. See the Quick Start guide.
| 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 | Design Document |
| Build a route server at an IXP | Route Reflection (please don't, not yet) |
| Run Ze in production | Operations |
| Compare Ze with other daemons | Comparison |
| User Guide | Configuration, plugins, operations, and feature guides |
| Design Document | Architecture, goals, and design rationale |
| 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 |
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.
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 |