Skip to content

Latest commit

 

History

History
143 lines (109 loc) · 7.03 KB

README.md

File metadata and controls

143 lines (109 loc) · 7.03 KB

Ze

Ze is an open-source configuration and protocol engine written in Go. The network operating system built on it combines programmable routing with control of the Linux system around it. It speaks BGP, manages interfaces, and programs the forwarding table. Operators use a shared configuration model through an SSH CLI or a web editor.

One running router, eight live configuration topics

Watch the continuous terminal recording: migrate ExaBGP, operate the BGP dashboard, then configure, prove, diagnose and repair eight features without restarting Ze. The site player and transcript retain the captured session. More recordings are on the demonstrations page.

Pre-release. Ze has not been released yet. Some features are incomplete or experimental, and APIs and configuration syntax can change. The feature inventory records their status. A lab is the right place to evaluate Ze before putting it on a live network.

I wrote ExaBGP, and its users are the people I had in mind while building Ze. The aim is to keep programmable routing and add control of the device around it, with one configuration for the protocols and the system they run on.

Start Here

To explore Start with
A first BGP session Quick Start
A network lab netlab and containerlab
An existing ExaBGP deployment Migration guide
A dedicated device or VM Appliance guide

What Ze Includes

Features depend on the build and configuration. The feature inventory distinguishes supported, experimental, and partial implementations.

Area What you can do Guides
Routing Exchange and inject routes, and check BGP route origins with RPKI. BGP, route injection, OSPF, and RPKI validation
Linux networking Configure interfaces, routes, firewall rules, and IPsec. Interfaces, static routes, firewall, and IPsec
Configuration and operations Edit configuration and inspect the running system. Configuration, CLI, command reference, and operations
Automation and visibility Extend Ze and observe its routing state. Plugins, MCP, monitoring, and looking glass

In the configuration editor, you can edit a value, review the changes with show | compare, validate them with commit verify, and apply them with commit now.

Build from Source

Development requires Go 1.27 or newer on Linux or macOS. Linux is the platform for the network operating system's kernel features.

git clone https://github.com/ze-software/ze.git
cd ze
./ze --help

On a fresh checkout, the ./ze launcher builds the daemon before it runs the command. It derives the feature tags from feature-gates.txt, so there is no tag list to maintain by hand. Later invocations reuse the existing binary.

The Quick Start guide covers credentials, an example configuration, and commands to start Ze and inspect its peers. The Ubuntu installation guide covers a systemd installation.

From ExaBGP

ze exabgp migrate converts ExaBGP configuration files, and ze exabgp plugin provides a bridge for existing process scripts. The migration guide documents the syntax and API differences to check when moving a deployment.

If you run ExaBGP, I would appreciate reports from your own configurations and process scripts. A report that shows what failed and what ExaBGP did with the same input gives me something concrete to fix. You can use the issue tracker or Discord.

Architecture and Plugins

The SSH CLI and web editor use a shared configuration schema for validation. Protocols and system features register themselves and contribute their own YANG modules to that schema.

The protocol-independent core manages subsystem lifecycles through a message bus, a configuration provider, and a plugin manager. The Model Context Protocol (MCP) server derives tools from the running daemon's command catalog, so AI clients can discover its available commands.

Plugins can be compiled Go modules or separate processes. Compiled plugins contribute their YANG to the daemon's configuration validator. External plugins can expose a model through ze schema, but that model does not automatically extend the daemon's validator.

The architecture overview describes the runtime and BGP wire design. The plugin development guide covers the SDK and process protocol.

Build Only What You Run

Subsystems have ze_<feature> build tags. A custom build can omit BGP or an operator interface along with its registered schema. The architecture guide explains the component boundaries, and the feature manifest names the packages behind each tag.

Testing and Project Status

The testing overview explains the unit, functional, fuzz, mutation, and chaos tests, plus Linux checks under QEMU. The interop guide describes scenarios against other implementations, including FRR, BIRD, and GoBGP.

The RFC requirement ledger publishes requirements and their test evidence, including gaps. These records help evaluate the current implementation. They do not replace deployment experience.

AI-Assisted Development

Ze is developed with AI coding assistants. I decide the architecture, the tradeoffs, and what the code must preserve. Tests and independent review are part of that process. I explain the reasoning in AI slop is the wrong test.

Contributing and License

Bug reports and contributions are welcome through the contribution process. A Contributor License Agreement applies to contributions.

Ze is copyright © 2025-2026 Thomas Mangin, and licensed under the GNU Affero General Public License, version 3 only (AGPL-3.0-only). See NOTICE.