Skip to content

Components

OS packages

The base OS is built from a set of focused Buildroot packages. Each is self-contained with its own scripts and systemd units.

Package Purpose
offlinelab-base Data partition setup, fake-hwclock, serial console, boot partition mount
offlinelab-usb-gadget USB composite gadget: ACM serial (ttyGS0) + ECM ethernet (usb0)
offlinelab-wifi WiFi via wpa_supplicant, credential provisioning
offlinelab-ssh Dropbear SSH, key-only auth, host key generation
offlinelab-zram Compressed RAM swap
offlinelab-disco Service discovery and name resolution (Phase 2)

See Packages for details on each package and the provisioning pattern.

Service model

Services on Offline Lab are packaged as squashfs images and run as systemd portable services. The base OS provides the foundation. Services provide the functionality.

Each service image contains everything it needs. Images are placed on /data/portable and attached using systemd's portable service mechanism.

User data stays on /data, separate from the service image. Updating a service means replacing its image without losing data.

Planned services

Knowledge

Wikipedia and reference content via Kiwix, medical information, programming references (Stack Overflow archives), and offline street maps.

Communication

Local messaging and real-time chat between users on the network. LoRa and Meshtastic integration for long-range communication between communities.

Personal tools

Notes and document editing, contact management, personal storage and backups, e-reader library with sync.

Media

Video and music collections with HTTP and Bluetooth playback, photo gallery.

Gaming

Retro gaming service optimised for offline usage.

Infrastructure

DNS for the local domain, DHCP (via travel router or on-device), Debian package mirror for development, and data sync tooling.

Offline concessions

Services are designed around a "cutoff" moment, after which no new data can be fetched.

Content databases like Wikipedia and maps are frozen at the last sync. Security updates stop arriving. The network compensates with strict firewall rules and known-client policies. Services must work indefinitely without upstream connectivity.