diff --git a/.github/CODE-OF-CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from .github/CODE-OF-CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 9da11b2b..c8402ca1 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -272,7 +272,7 @@ other contributions that are not aligned to this Code of Conduct."* [PEP-8]: https://peps.python.org/pep-0008/ [RDD]: https://tom.preston-werner.com/2010/08/23/readme-driven-development [cbeams]: https://cbea.ms/git-commit/#seven-rules -[conduct]: CODE-OF-CONDUCT.md +[conduct]: CODE_OF_CONDUCT.md [DCO]: https://developercertificate.org/ [closing]: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests [gpg-verify]: https://docs.github.com/en/authentication/managing-commit-signature-verification diff --git a/README.md b/README.md index 3e11dec5..1aa9be1f 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,21 @@ -[![License Badge][]][License] [![Release Badge][]][Release] [![GitHub Status][]][GitHub] [![Coverity Status][]][Coverity Scan] [![Discord][discord-badge]][discord-url] +[![License Badge][]][License] [![Release Badge][]][Release] [![GitHub Status][]][GitHub] [![Discord][discord-badge]][discord-url] -Infix — Immutable.Friendly.Secure +Infix — Immutable.Friendly.Secure -Turn any ARM or x86 device into a powerful, manageable network appliance -in minutes. From $35 Raspberry Pi boards to enterprise switches — deploy -routers, IoT gateways, edge devices, or custom network solutions that -just work. +Infix turns an ARM or x86 device into a managed network appliance. The +same OS runs on a $35 Raspberry Pi and on enterprise switching hardware, +so you can build a router, an IoT gateway, or an edge device on whatever +you have on hand. -## Our Values +More in-depth material is available in our blog and User Guide: -**🔒 Immutable** -Your system never breaks. Read-only filesystem with atomic upgrades -means no configuration drift, no corrupted updates, and instant rollback -if something goes wrong. Deploy once, trust forever. +- +- -**🤝 Friendly** -Actually easy to use. Auto-generated CLI from standard YANG models comes -with built-in help for every command — just hit ? or -TAB for context-aware assistance. +## See it in action -Familiar NETCONF & RESTCONF APIs and [comprehensive documentation][4] -mean you're never stuck. Whether you're learning networking or managing -enterprise infrastructure. - -**🛡️ Secure** -Built with security as a foundation, not an afterthought. Minimal -attack surface, separation between system and data, and container -isolation. Sleep better knowing your infrastructure is protected. - -## Why Choose Infix - -**Hardware Flexibility**: Start with a $35 Raspberry Pi, scale to -enterprise switching hardware. Same OS, same tools, same reliability. - -**Standards-Based**: Built around YANG models and IETF standards. Learn -once, use everywhere - no vendor lock-in. - -**Container Ready**: Run your applications alongside networking -functions. GPIO access, dedicated Ethernet ports, custom protocols — -your device, your rules. - -## Use Cases - -1. **Home Labs & Hobbyists**: - Transform a Raspberry Pi into a full-featured router with WiFi -1. **IoT & Edge Computing**: - Bridge devices to the cloud with reliable, updatable gateways -1. **Small Business Networks**: - Enterprise-grade features without the complexity or cost -1. **Developers & Makers**: - Test networking concepts, prototype IoT solutions, or build custom - appliances -1. **Network Professionals**: - Consistent tooling from development to production deployment. - How about a digital twin using raw Qemu or [GNS3](https://gns3.com/infix)! - -## Quick Example - -Configure an interface in seconds - the CLI guides you with built-in help: +The CLI is generated from the [YANG models][inside], so it guides you with +built-in help. Here's setting an IP address on an interface:
admin@infix-12-34-56:/> configure
 admin@infix-12-34-56:/config/> edit interface eth0
@@ -94,38 +52,94 @@ eth0            ethernet   UP          52:54:00:12:34:56
 admin@infix-12-34-56:/> copy running startup
 
-Notice how TAB completion shows available options, `show` -displays current config, and `diff` shows exactly what changed before -you commit your changes with the `leave` command. +TAB completes available options and ? shows online help +for each option and argument. `show` displays the current config, and `diff` +shows exactly what changed before you commit it with `leave`. See the [CLI +documentation][3] for more. -For more information, see [CLI documentation][3]. +## Web interface -## Get Started +If the CLI isn't your style, the same configuration is available through the +web interface. Log in from a browser, keep an eye on your device from the +Status dashboard and use the Configure > Interface setup wizard to create more +advanced setups, or just fold out an interface to add an IP address. -Get [pre-built images][5] for your hardware. Use the CLI, web -interface, or standard NETCONF/RESTCONF tools, e.g., `curl`. Add -containers for any custom functionality you need. +

+ Login + Dashboard + Setup wizard +

-### Supported Platforms +The web interface is built on the same concepts as the CLI, so operational +status and state are kept separate from configuration and commands. -- **Raspberry Pi 2B/3B/4B/CM4** - Perfect for home labs, learning, and prototyping -- **Banana Pi-R3** - Your next home router and gateway -- **NanoPi R2S** - Compact dual-port router in a tiny package -- **x86_64** - Run in VMs or on mini PCs for development and testing -- **Marvell CN9130 CRB, EspressoBIN** - High-performance ARM64 platforms -- **Microchip SparX-5i** - Enterprise switching capabilities -- **Microchip SAMA7G54-EK** - ARM Cortex-A7 -- **NXP i.MX8MP EVK** - Highly capable ARM64 SoC -- **StarFive VisionFive2** - RISC-V architecture support +## Try it in 5 minutes -*Why start with Raspberry Pi?* It's affordable, widely available, has -built-in WiFi + Ethernet, and runs the exact same Infix OS you'd deploy -in production. Perfect for learning, prototyping, or even small-scale -deployments. +You don't need hardware to get started: +- **In a virtual lab** — run a full topology in [GNS3][gns3-post] and test + networks entirely in software. +- **From source** — [build it and `make run`][build-post] to boot Infix in + QEMU, from `git clone` to pinging the internet. +- **On real hardware** — grab a [pre-built image][5] for your board, or run + the `x86_64` image in any VM. + +Log in with `admin` / `admin` on the virtual and pre-built images. On +shipped products the factory-reset credentials are customizable — we +typically provision a unique per-device password stored in EEPROM/VPD. + +## Supported hardware + +- **Raspberry Pi 2B/3B/4B/CM4** - a good starting point; built-in WiFi and Ethernet +- **Banana Pi-R64/R3/R3 Mini/R4** - multi-port routers and gateways +- **NanoPi R2S** - compact dual-port router +- **x86_64** - VMs and mini PCs, for development or production +- **Marvell CN9130 CRB, EspressoBIN** - ARM64 development boards +- **Microchip SparX-5i** - enterprise switching +- **Microchip SAMA7G54-EK** - ARM Cortex-A7 evaluation kit +- **NXP i.MX8MP EVK** - ARM64 SoC evaluation kit +- **StarFive VisionFive2** - RISC-V board + +*Why start with Raspberry Pi?* It's cheap, easy to get hold of, has +built-in WiFi and Ethernet, and runs the same Infix you'd deploy in +production — so what you learn on it carries straight over. + +> [!TIP] > 📖 **[Complete documentation][4]** • 💬 **[Join our Discord][discord-url]** -## Technical Details +## Why Infix + +**🔒 Immutable** +Read-only filesystem with atomic upgrades. An update either applies +cleanly or rolls back, so a failed upgrade or a power cut midway through +won't leave you with a half-broken system. + +**🤝 Friendly** +The CLI is generated from the YANG models, so every command carries its +own help — hit ? or TAB to see what's available. +The same models are reachable over NETCONF and RESTCONF, with +[documentation][4] for when you get stuck. + +**🛡️ Secure** +A small attack surface, separation between system and data, and +container isolation. Since the system partition is read-only, a +compromised service or container can't rewrite the OS underneath it. + +## Use cases + +1. **Home labs & hobbyists**: + Turn a Raspberry Pi into a router with WiFi +1. **IoT & edge**: + Build gateways you can update in the field +1. **Small business networks**: + Routing, firewalling, and VLANs on affordable hardware +1. **Developers & makers**: + Prototype networking ideas, or build a custom appliance with containers +1. **Network professionals**: + The same tooling from lab to production — spin up a digital twin in raw + Qemu or [GNS3](https://gns3.com/infix) + +## Under the hood @@ -135,27 +149,29 @@ deployments. -Built on proven open-source foundations: [Linux][0], [Buildroot][1], and -[sysrepo][2] — for reliability you can trust: +Built on [Linux][0], [Buildroot][1], and [sysrepo][2]: -- **Immutable OS**: Read-only filesystem, atomic updates, instant rollback -- **YANG Configuration**: Industry-standard models with auto-generated tooling -- **Hardware Acceleration**: Linux switchdev support for wire-speed packet processing -- **Container Integration**: Docker support with flexible network and hardware access -- **Memory Efficient**: Runs comfortably on devices with as little as 256 MB RAM -- **Code Signing**: Releases are cryptographically signed for integrity verification +- **Immutable OS**: read-only filesystem, atomic updates, rollback on failure +- **YANG configuration**: standard models with an auto-generated CLI and APIs +- **Hardware acceleration**: switchdev offload for wire-speed forwarding +- **Container integration**: Docker, with access to host network and hardware +- **Memory efficient**: runs on devices with as little as 256 MB RAM +- **Code signing**: releases are cryptographically signed -Perfect for everything from resource-constrained edge devices to -high-throughput network appliances. - -With the entire system modeled in YANG, scalability is no longer an -issue, be it in development, testing, or end users deploying and -monitoring their devices. All knobs and dials are accessible from the -CLI (console/SSH), or remotely using the native NETCONF or RESTCONF -APIs. +Because the whole system is modeled in YANG, every setting is reachable +the same way: from the CLI over console or SSH, or remotely over the +native NETCONF and RESTCONF APIs. The same models drive development, +testing, and day-to-day monitoring. > Check the *[Latest Build][]* for bleeding-edge features. +## Contributing + +Bug reports, ideas, and pull requests are welcome. Start with +[CONTRIBUTING][contributing] and the [code of conduct][coc]. Found a +security issue? Follow the [security policy][security]. Need a hand? +See [support options][support] or [join us on Discord][discord-url]. + ---
@@ -171,6 +187,13 @@ APIs. [3]: https://www.kernelkit.org/infix/latest/cli/introduction/ [4]: https://www.kernelkit.org/infix/ [5]: https://github.com/kernelkit/infix/releases/latest +[inside]: https://www.kernelkit.org/posts/inside-infix/ +[gns3-post]: https://www.kernelkit.org/posts/infix-in-gns3/ +[build-post]: https://www.kernelkit.org/posts/building-infix-from-source/ +[contributing]: .github/CONTRIBUTING.md +[coc]: .github/CODE_OF_CONDUCT.md +[security]: .github/SECURITY.md +[support]: .github/SUPPORT.md [Latest Build]: https://github.com/kernelkit/infix/releases/tag/latest "Latest build" [License]: https://en.wikipedia.org/wiki/GPL_license [License Badge]: https://img.shields.io/badge/License-GPL%20v2-blue.svg diff --git a/doc/img/webui-dashboard.png b/doc/img/webui-dashboard.png new file mode 100644 index 00000000..83044400 Binary files /dev/null and b/doc/img/webui-dashboard.png differ diff --git a/doc/img/webui-login.png b/doc/img/webui-login.png new file mode 100644 index 00000000..ea7ec54c Binary files /dev/null and b/doc/img/webui-login.png differ diff --git a/doc/img/webui-wizard.png b/doc/img/webui-wizard.png new file mode 100644 index 00000000..d2877025 Binary files /dev/null and b/doc/img/webui-wizard.png differ