- Hello, world! We have launched after a year in research and development.
Botnix
works out-of-the-box using standardNixOS
conventions and is currently in active development.- We are working on our first major release:
Botnix 1.0 Torbjörn
(pronounced torr-beyourn, meaning "Bear of Thor") - Join us in building the future of robot operating systems!
Botnix
is the first operating system (OS) and Linux distribution for multi-agent and -domain
autonomous systems, intelligent robotic systems, or embodiment
as it is known in the artificial intelligence (AI) research community. Botnix
stands for
"Robot Linux" or "Robotics Linux". Our goal is to create the ideal OS for intelligent robotic
systems in-the-wild, built on the widely deployed and field-tested Linux kernel and the
powerful Nix software deployment model.
Botnix
provides the Botpkgs
or "Bot packages" software repository, a domain-specific subset
of the 80,000+ packages found in the Nixpkgs repository.
Botnix
is a single-purpose, battle-hardened variant of NixOS
using the same declarative
design. It is a production-grade OS that supports state-of-the-art research in AI for robotics.
Botnix
is designed with the future in mind. As a community of
Builders, we aim to accelerate the development and
deployment of AI for robotics. The Botnix
software and community are free and open-source.
We welcome contributions from all individuals, organizations, and industries. We are grateful
for your support!
While compute and energy constraints have historically limited robotic systems to legacy real-time OSes running on underpowered microcontrollers, these constraints are rapidly vanishing with development of new low-power processor architectures, domain-specific accelerators, unified memory, and high-speed interconnects, as demonstrated by the NVIDIA Grace Hopper Superchip, Apple M1 system-on-chip (SoC), and AMD chiplet technology. This revolution in computing is powering a new Age of Embodied Intelligence. We aim to be the operating system (OS) of the robotics revolution.
Embodied AI: Botnix
is intended to be the first OS with native, batteries-included
support for robotics and artificial intelligence (AI) at both the high- and low-level. We
aim to bring the robotics and AI software ecosystems out of piecemeal, standalone packages
and libraries and into a cohesive whole at the OS level. This includes boilerplate
interfaces necessary to communicate between popular software systems used in different
robotics domains. We further aim to provide tools for physical intuition, such as real-time
internal physics engines for hybrid neurosymbolic AI inference.
RoboDevSecOps: Botnix
aims to be the ideal OS for AI and robotics developer-security-operations
or RoboDevSecOps, as the safety of deployed systems
is a primary consideration in AI and robotics alike. More than a package manager, the powerful
Nix system enables us to provide a simple, declarative, stateful,
reproducible OS with native depedency isolation (think of it as built-in containers),
cloud over-the-air (OTA) updates, and rollbacks. We aim to buttress this system with robust
kernel-hardening, penetration testing, monitoring, and CVE notification systems.
Inclusive Community: Any open-source project is only as good as its community. To make our shared vision a reality, we are creating a new community of talented contributors. We strive to create a community where all individuals, organizations, and viewpoints are welcome. We default to protecting your rights. To do so, we ask that all contributors make an effort to comply with the same well-defined Code of Conduct. Unlike other communities, we are not here to censor your speech by a set of abtrirary, ill-defined rules. Your voice matters to us. We want your opinions.
Like many of you, we are thrilled about recent advances in open-source AI and robotics, but have run across some challenges along the way:
- The Robot Operating System (ROS) is not an OS at all, but rather, a collection of software packages. Getting ROS installed and configured for a particular OS can be a hassle. This increases the time needed to get up and running. ROS also provides no little to no tools to manage robot sofware deployment, requiring third-party tools with additional complexity and constraints.
- RoboStack is a step in the right direction by using the Conda package manager for dependency management in C/C++ and Python projects. Unfortunately, it is an incomplete solution that introduces yet another package manager to be managed.
- Configuring a machine for AI development and/or deployment can still be a significant
burden. Common challenges include installing mutually compatible graphics drivers, CUDA
libraries, and deep learning frameworks. An entirely separate package manager such as
conda or
micromamba is often used for dependency
management. If we begin with the 'right' package manager (e.g.,
Nix
), all of this added complexity becomes unnecessary. - Popular flight control system (FCS) software (e.g., ArduPilot, PX4, BetaFlight) projects remain focused on microcontroller-based real-time OSes for unmanned aircraft systems (UAS). ArduPilot and PX4 are based on ChibiOS and Apache NuttX, respectively, two hard real-time OSes designed for microcontrollers. Because of this, ArduPilot- and PX4-based systems still must rely on separate Linux companion computers for the heavy lifting. This is not the way.
- Debian 12 ("bookworm") is our favorite release to date, but it remains a traditional Linux OS poorly suited to our use case.
- While Ubuntu is the most popular Linux OS, and Ubuntu Core is intended for robotics among other things, it has all of the limitations of Debian plus proprietary Snaps, a closed source, and a high price. Robotics should be open to everyone.
- The Yocto Project and the related OpenEmbedded layers for ROS is a major step in the right direction, but OSes must be hand-crafted and lack the powerful Nix system for configuring and deploying robotic systems, which we call RoboDevSecOps.
- OSTree is yet another solution designed without robotics in mind that must be arduously adapted to our use case.
- GNU Guix is the next best thing to
NixOS
with some theoretical advantages. In practice though, we foundGuix
to be less reliable and supported thanNixOS
. While the potential there, we were more comfortable moving forward with the large and rapidly growingNix
community. - Although we love unikernels or Library operating systems (libOSes), they are often
slow and painful to deploy using common tools. Certaintly, automation can alleviate
much of this headache and thankfully
Nix
does just that. That's right, you can useNix
to build and deployMirageOS
unikernels. The two systems are not mutually exclusive.
After careful consideration, we decided that the focus of Botnix
substantially differs from
that of NixOS
and other communities, given our sole focus on AI for robotics. There are
numerous drivers and applications that are relevant to a general-purpose OS, but not to our
use case. Removing this overhead allows us to be more efficient. We want to accelerate robotics,
and to do so, we must be focused.
Last, we felt that the Apache 2.0 license might be better suited to commercial adoption.
- Botnix Manual - TBA
- Botpkgs Manual - TBA
- NixOS Manual - how to install, configure, and maintain a purely-functional Linux distribution
- Nixpkgs Manual - contributing to Nixpkgs and using programming-language-specific Nix expressions
- Nix Manual - how to write Nix expressions (programs), and how to use Nix command line tools
- Botnix Discord (a migration to Discourse is in discussion)
- NixOS Discourse
- NixOS Weekly
- NixOS community wiki
- NixOS community contact (Discord, Telegram, IRC, etc.)
All official NixOS
project sources are maintained at the NixOS organization on GitHub:
- Nix - a purely functional package manager
- NixOps - a tool to remotely deploy NixOS machines
- nixos-hardware - NixOS profiles to optimize settings for different hardware
- Nix RFCs - the formal process for making substantial changes to the community
- NixOS homepage - the NixOS.org website
- hydra - the NixOS continuous integration (CI) system
- NixOS Artwork - the NixOS artwork
Botnix
and Botpkgs
are built and tested using GitHub Actions.
Nixpkgs
and NixOS
are built and tested using the Nix
-based Hydra CI/CD system.
- Nixpkgs builds for unstable/master
- Nixpkgs builds for NixOS 23.05
- Nixpkgs tests for unstable/master
- Nixpkgs tests for NixOS 23.05
Artifacts successfully built with Hydra are published to the Nixpkgs
https://cache.nixos.org/.
When building and testing succeed, the Nixpkgs
expressions are distributed via Nix channels.
Botnix
implements a Linux distribution for AI and robotics based on NixOS
, Nixpkgs
, and Nix
.
The GitHub Insights page gives a sense of the project activity.
Community contributions are strongly encouraged via GitHub Issues and Pull Requests.
For more information about contributing to the project, please visit the contributing page.
- Create
Botpkgs
and make it the default package repository - Create OS flavours for Agent, Orchestrator, and Simulator operational models
- Add packages, drivers for robotics and AI
- Add packages for physics engines (embodiment) and game engines (self-simulation)
- Add boilerplate interfaces for inter-modal communication
- Add hardware and software security systems
- Add robot operations or fleet management systems
- Add labeled and unlabeled datasets, autolabeling systems
- Reduce to domain-specific security-audited packages
- Create OS flavours with sane defaults: Agent, Orchestrator, Simulator
- Add pinned libraries, APIs, tools for artificial intelligence (AI) in robotics
- Add packages for robotics: ROS2, Gazebo, Meta HomeRobot, AutonomySim
- Add packages for flight control: PX4, ArduPilot, MAVLink, BetaFlight, OpenPilot/LibrePilot, dRehmFlight, Flightmare
- Add packages for self-driving car control: openpilot, Autoware, CARLA, Vista, Aslan, OpenPodcar/ROS
- Add packages for game engines: Unreal Engine 5, Unity, NVIDIA IsaacSim, Meta HabitatSim
- Add packages for physics engines: PhysX, Bullet, MuJoCo, DART, Drake, Havok, ODE
- Add packages for differentiable physics: TDS, Dojo, Brax, Nimble, NVIDIA Warp
- Add packages for flight dynamics modeling: JSBSim
- Add boilerplate interfaces for multi-domain robotic system communication (e.g., ROS <> PX4)
- Add embodied AI agent datasets
- Add packages for security CVE notification system
- Add packages for robot penetration testing or hacking
- Add packages for fleet management or robot operations (RobOps): InOrbit, Foxglove Studio
- Add packages for monitoring and alerts: Prometheus, Apache Kafka
- Add packages for data visualization: Grafana, browser (D3, WebGL, v8/Electron)
- Update automated tests
Botnix
is made possible by the Linux Foundation, NixOS Foundation, Nervosys, and countless contributors to related projects.
We need your support to ensure the success of Botnix
development.
Botnix
is licensed under the Apache 2.0 License. The software it deploys may be
licensed under a variety schemes, from open- to closed-source.