/elodin

Elodin simulation and flight software monorepo.

Primary LanguageRustApache License 2.0Apache-2.0

This monorepo contains the source code for all Elodin simulation and flight software:

  • Flight software
    • aleph-os: Aleph NixOS modules for composing a Linux flight software stack that runs on the Orin.
    • elodin-db (FSW application): A time-series database which functions as a central telemetry store and message bus.
    • serial-bridge (FSW application): Reads sensor data being streamed over the serial port and writes it to elodin-db.
    • mekf (FSW application): A Multiplicative Extended Kalman Filter implementation that fuses sensor data to estimate vehicle attitude.
    • sensor-fw: Aleph expansion board firmware that streams sensor data (IMU, mag, baro) to the Orin over USB/UART.
  • Simulation software
    • nox-py: Python version of nox-ecs, that works with JAX.
  • Editor: 3D viewer and graphing tool for visualizing both simulation and flight data.

Getting Started

Prerequisites

  • Determinate Systems Nix for a consistent development environment
  • Just: ( brew install just / apt install just )
  • git-lfs: ( brew install git-lfs / apt install git-lfs ), and make sure to activate it globally with git lfs install from the terminal.
  • STRONGLY prefer an Arm-based MacOS, nix works on x86 & Ubuntu but at much slower build speeds and worse DX.

Development Setup (Recommended: Nix)

The Elodin repository uses Nix to provide a consistent, reproducible development environment across all platforms. This is the same environment our team uses daily.

1. Install Nix

# Install Determinate Systems Nix (recommended)
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

2. Clone the Repository

git clone https://github.com/elodin-sys/elodin.git
cd elodin

3. Build and Install Elodin Editor and Elodin DB into your path

# this will also build and use the shell below
just install

4. Enter the Development Shell, run elodin

nix develop
# open elodin, we'll connect to the server we start below
elodin

Tip

The Nix shell runs Oh My Zsh + Powerlevel 10k, and will run configuration setup on first run if not installed

5. Enter the Development Shell, run the server & example simulation

Python SDK Development

# In a new terminal
nix develop # enter a new nix develop shell
cd libs/nox-py
uv venv --python 3.12
source .venv/bin/activate
uvx maturin develop --uv
python3 examples/rocket.py

Open the Elodin editor and connect to the local server

Note

Local setup instructions were validated on Arm M2 MacOS & Intel x86 Ubuntu 24.04 on 2025-10-12.


Alternative Local Setup (macOS Only)

Warning

This setup is more complex and may lead to inconsistent environments across developers. We strongly recommend using Nix instead.

If you cannot use Nix, you can manually install dependencies on macOS:

Prerequisites

# Install required tools via Homebrew
brew install gstreamer python gfortran openblas uv git-lfs rust

# Initialize git-lfs
git lfs install

Build and Run

git clone https://github.com/elodin-sys/elodin.git
cd elodin
just install

Python Development (Local Setup)

cd libs/nox-py
uv venv --python 3.12
source .venv/bin/activate
uvx maturin develop --uv
uv sync

cargo run --manifest-path=../../apps/elodin/Cargo.toml editor examples/three-body.py

Note

Local setup instructions were validated on M1 architecture, macOS 15.1.1 on 2025-08-26.

Additional Resources