Hardened operating system for secure peer-to-peer mesh communication.
HavenLink OS is a purpose-built, minimal Linux distribution based on Alpine Linux. Designed for high-risk users who need secure, anonymous communication. The OS boots into a hardened, read-only environment with Tor running automatically — the user launches the HavenLink chat tool interactively from the console.
- Minimal Attack Surface: No SSH, no remote admin, console-only
- Read-Only Root: Filesystem is immutable at runtime; volatile data goes to tmpfs
- Tor Always On: Tor daemon starts automatically at boot as a background service
- HavenLink Pre-installed:
havenlinkcommand available immediately after login - Hardened Kernel: sysctl hardening, module blacklisting, nftables firewall
- Air-Gap Ready: Can operate without internet via LoRa or local mesh
┌─────────────────────────────────────┐
│ HavenLink OS (Alpine Linux) │
├─────────────────────────────────────┤
│ Kernel (Linux LTS) + OpenRC │
│ + Tor (autostarted, client only) │
│ + nftables firewall │
│ + HavenLink CLI tool │
├─────────────────────────────────────┤
│ Security: │
│ - Read-only root filesystem │
│ - No SSH / no remote admin │
│ - tmpfs for all mutable state │
│ - Module blacklisting │
└─────────────────────────────────────┘
git clone https://github.com/SkogsErik/havenlink-OS.git
cd havenlink-OS
# Build for x86_64 (VM/laptop)
make image ARCH=x86_64
# Build for Raspberry Pi
make image ARCH=aarch64Requires: root, qemu-utils, debootstrap/apk, internet access during build.
sudo qemu-system-x86_64 \
-m 512 -enable-kvm \
-drive file=havenlink-os-0.1.0-x86_64.img,format=raw,if=ide \
-nographic -serial mon:stdioLogin: root / havenlink
sudo dd if=havenlink-os-0.1.0-x86_64.img of=/dev/sdX bs=4M status=progressAfter login, Tor is already running. Launch the chat client:
# Connect via Tor (recommended)
havenlink --name yourname --tor
# Connect via direct internet
havenlink --name yourname --internet
# Connect via LoRa radio
havenlink --name yourname --lora| Service | Autostart | Description |
|---|---|---|
| nftables | ✅ | Firewall — drop all except mesh ports + Tor |
| tor | ✅ | Tor daemon (SOCKS on 127.0.0.1:9050) |
| havenlink | ❌ | Interactive CLI tool — run manually |
- Architecture — System design
- Threat Model — Security analysis
- Project Structure — File layout
- x86_64 PC / Raspberry Pi 3 or 4
- 2GB+ storage
- Console access (serial or keyboard/display)
See THREAT_MODEL.md for full analysis.
Disabled at runtime:
- SSH server
- HTTP/HTTPS admin interfaces
- Any remote administration
- Package manager (no
apkat runtime)
Enabled at runtime:
- Tor client (autostarted,
127.0.0.1:9050) - nftables firewall
- HavenLink mesh ports 9001–9010
havenlink-OS/
├── docs/ # Documentation
├── scripts/ # build-image.sh, setup-device.sh, havenlink-wipe.sh
├── config/ # torrc, firewall.nft, sysctl.conf, havenlink.conf, …
├── overlay/ # Files copied verbatim into the image root
├── Makefile
├── VERSION
└── AGENT_GUIDE.md # Notes for AI coding agents
- HavenLink (chat app): https://github.com/SkogsErik/havenlink
- HavenLink OS (this): https://github.com/SkogsErik/havenlink-OS
TBD