Skip to content
Projects

kernelkit/infix has 102 GitHub stars and 24 forks. Star changes are not measured yet. Last checked 2026-11-09 23:07 UTC. Last push 2026-11-09.

How these counts are measured

Immutable.Friendly.Secure — Reliable embedded Linux for any device

Measured star growth

in 24h
Update delayed
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

License Badge Release Badge GitHub Status Coverity Status Discord

Jacky, a penguin living in an RJ45 jack, next to the Infix logo: Immutable. Friendly. Secure.

Infix turns an ARM, RISC-V, or x86 device into a managed network appliance: a router, a switch, an IoT gateway, or the base of your own product. The same OS runs on a Raspberry Pi and on enterprise switching hardware.

Getting started:

[!TIP] The Latest Build has everything merged since the last release. Log in with admin / admin on the virtual and pre-built images. Products built on Infix set their own password, usually unique per device.

See it in action

The CLI is generated from the YANG models, 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
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 TAB
      address     autoconf      bind-ni-name     dhcp 
      enabled     forwarding    mtu              neighbor
admin@infix-12-34-56:/config/interface/eth0/> set ipv4 address 192.168.2.200 prefix-length 24
admin@infix-12-34-56:/config/interface/eth0/> show
type ethernet;
ipv4 {
  address 192.168.2.200 {
    prefix-length 24;
  }
}
admin@infix-12-34-56:/config/interface/eth0/> diff
interfaces {
  interface eth0 {
+    ipv4 {
+      address 192.168.2.200 {
+        prefix-length 24;
+      }
+    }
  }
}
admin@infix-12-34-56:/config/interface/eth0/> leave
admin@infix-12-34-56:/> show interfaces
INTERFACE       PROTOCOL   STATE       DATA                                  
lo              ethernet   UP          00:00:00:00:00:00
                ipv4                   127.0.0.1/8 (static)
                ipv6                   ::1/128 (static)
eth0            ethernet   UP          52:54:00:12:34:56
                ipv4                   192.168.2.200/24 (static)
                ipv6                   fe80::5054:ff:fe12:3456/64 (link-layer)
admin@infix-12-34-56:/> copy running startup

TAB completes and ? shows help for every option. diff shows what changed before leave commits it. See the CLI documentation for more.

The same configuration is available from a browser. The Status Overview dashboard keeps an eye on the device, the interface setup wizard under Configure builds the common setups, or fold out an interface and add an address.

Login Dashboard Setup wizard

The web interface follows the CLI: status and configuration are kept apart, and both come from the same YANG models.

Make it your own

bitSign - Code Signing Three layers: Buildroot at the bottom, Infix on top of it, and a product layer on top with its own signing keys

Buildroot supplies the open source base, and Infix follows each patch release of its LTS series. The layer above adds the YANG models, the CLI and web interface, NETCONF and RESTCONF, container support, automated regression tests, and packages not yet in Buildroot.

A product is built on top of that as a spin: a small br2-external tree with Infix as a submodule, holding the board files, the vendor's own software and branding, and the vendor's own signing keys. The spin example is the skeleton the products built on Infix start from, and Branding & Releases walks through the settings.

The public images are the middle layer, built from this tree, and signed with a development key that is also in this tree. The signature says the image is intact, not who made it.

A spin replaces that key with its own and enables secure boot where the hardware supports it, see Signing Keys. All products built on Infix by Wires are signed through bitSign.

Our values

Immutable. Friendly. Secure. The tagline on the logo is also the design brief, and most of what is under the hood follows from it.

🔒 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. There are two system partitions, and an upgrade only ever writes to the one not running.

🤝 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 web interface, NETCONF and RESTCONF come from the same models. The User Guide ships inside the image, one click away in the web interface, so help is there even when the Internet is not.

🛡️ 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. A spin adds its own signing keys and secure boot, see above.

Built on Linux, Buildroot, and sysrepo. Switchdev offload gives wire-speed forwarding on switch hardware, and all of it runs on devices with 512 MB RAM. The Inside Infix post walks through how the pieces fit together.

Contributing

Bug reports, ideas, and pull requests are welcome. Start with CONTRIBUTING and the code of conduct. Found a security issue? Follow the security policy. Need a hand? See support options or join us on Discord.

Wondering how long a given version keeps receiving updates, and what goes into a patch release? See releases & support.



Infix development is sponsored by Wires

Explore related projects