Explore littlestar
bootc

Built in Rust · by Mainsail Industries

Every edge node.
Under one sky.

littlestar is the immutable, signed operating system for core to edge machines. No SSH, no shell, no inbound ports. You run it on your hardware and manage it through one API.

The OS under Starlight. Every Starlight node runs littlestar. Meet Starlight →

What it runs

Everything you ship, from core to edge.

OCI containers

Any OCI image, run under Podman as a Quadlet and kept to its desired state.

microVMs

libkrun microVMs through crun for workloads that need their own kernel.

Kubernetes

Isolated clusters, each node its own microVM, with replicated storage via littlestar-x.

AI models

llama.cpp, vLLM or mistral.rs, served on the node with GPUs passed in through CDI.

Agents

Edge agents and MCP tools over NATS, every call authorised by Cedar policy.

0.15 GBcompressed release image
37packages, every file traced
0inbound ports
1reboot per OS update

Platform

Three parts. One known, signed state.

01

littlestar OS

A minimal, immutable bootc image built from source. Boots only a signed kernel under Secure Boot.

02

The hub

Rust services that hold the fleet's desired state and record why every workload runs where it does.

03

The agent

A Rust service on every node. Pulls desired state over NATS, applies it with Quadlets and bootc, reports back.

04

iroh

Every node is reachable by its key over QUIC, through any NAT or firewall, without opening a single inbound port.

NATfarm-02NATship-11NATyard-07NATtower-3NATkiosk-9hub

Connectivity

Reachable anywhere. Exposed nowhere.

iroh connects every machine over QUIC by its key, not its IP, through carrier NAT and firewalls you don't control, falling back to your own relays. The hub reaches any node, any node reaches the hub, and not one inbound port is opened. Each node also runs a NATS leaf, so it keeps working through an outage and catches up exactly once.

No shell. Just the API.

Managed through the Machine API.

There's no SSH and no shell, so there's nothing to log into. Every node, app and update is managed through one authenticated API. Root is locked, and the kernel is signed end to end, so only verified code ever runs.

Kernel security

Hardened all the way down.

KSPP baseline

Kernel Self Protection Project settings, checked every build

Clang kCFI

Control-flow integrity, zeroed stacks, full struct randomisation

Lockdown LSM

Even root can't change the running kernel

Signed modules

MODULE_SIG_FORCE: unsigned modules are refused

LSM stack

LockdownYamaLandlockSELinuxBPF LSM

Direct to the node

lsctl, straight to any node.

Point lsctl at a node's key and iroh does the rest: a quick handshake through your relay, then a hole-punched, end-to-end encrypted QUIC path straight to the machine. Logs, status and Machine control, with no VPN, no bastion and no SSH.

$ lsctl --node 7f3a…c21e status
connected · direct · 18 ms
os v42 · 3/3 apps Ready
relayNATNATdirect QUIC · end-to-end encryptedlsctlyour laptopyard-07key 7f3a…c21e

Machine API

Your entire fleet. One API.

Ship apps, AI models and OS updates to every site from one place. Roll changes out in stages, watch them land in real time, and roll back automatically if anything looks wrong. Your team stops traveling to sites and starts shipping faster, with fewer outages.

$ lsctl apply -f - <<'EOF'
kind: App
metadata: { name: thermal-cam }
spec:
  image: zot.hub/cams/thermal@sha256:9c1e…
  quadlet: thermal-cam.container
  rollout: { batch: 10%, healthGate: Ready, autoRollback: true }
EOF
app/thermal-cam configured ✓

$ lsctl why thermal-cam --node yard-07
Agreement ag-31f2  state=running
  policy: site-has-camera  ✓ permit
  policy: gpu-not-required ✓ permit
The littlestar hub overview: fleet health, machines, apps, storage and nodes on one screen
The hub: your whole fleet at a glance. Available in the cloud or on-prem.
  1. image v42 staged
  2. one reboot
  3. health gate
  4. v42 running ✓

health gate failed? → back to v41 automatically, no truck roll.

Updates

Apps and the OS. Rolled out, rolled back.

Apps ship in batches behind health gates. OS images stage as one deployment, apply with one reboot in the maintenance window, and return to the previous image if the health gate fails.

General-purpose bootc base1.06 GB
littlestar OS + signed UKI0.19 GB
littlestar OS0.15 GB

Security

Defense in depth, from the boot up.

Built in Rust, built from source

Every package compiled from upstream source by a toolchain that rebuilds itself. Rust where it matters: uutils coreutils, bootc, netavark, and every littlestar component.

Immutable bootc image

The OS is one signed container image on a composefs root. No package manager on the node, nothing drifting, nothing to patch by hand.

Connected by iroh

Nodes dial out over QUIC and are addressed by key, not IP. Through any NAT, carrier network or firewall, with zero inbound ports and no VPN.

No SSH. No shell. No door.

Root is locked, early-boot failures reboot instead of dropping to a shell, and the kernel command line can't be edited. There is nothing to log into.

A Machine API, not a terminal

Every Node, App, Model and Rollout is a resource in an OpenAPI 3.1 spec, with ETags, problem+json and live SSE watches. lsctl and the console are generated from it.

Updates apps and the OS

Apps roll out in batches behind health gates. New OS images stage, apply with one reboot and roll back on their own if the health check fails.

Signed boot, end to end

Kernel, initramfs and command line ship as one signed UKI under Secure Boot. Change one byte and it doesn't boot.

Ask “why is this running here?”

Placement is decided by Cedar policy, deny by default, and recorded as an Agreement you can query.

Make it yours.

Source available to qualified government and critical-infrastructure partners. Read the spec and tell us what your fleet needs.