Build the open-source column, for real.
The comparison table's Open Source column makes one claim per row. This is the deep dive behind it: three real candidates per row, independently researched, license and privacy posture included, plus what actually plugs into what if you want to build the whole ecosystem rather than one piece of it.
Interface & Input
Primary interface
index.html currently says: “Terminal, self-hosted web UIs (Open
WebUI), Home Assistant voice for ambient pickup.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Open WebUI | “Open WebUI License” (BSD-3-Clause base + mandatory branding-retention clause for deployments over 50 users; code through v0.6.5 remains plain BSD-3-Clause) | Self-hosted, ChatGPT-style web front end for local or remote model backends (Ollama, OpenAI-compatible APIs). | All chat data and RAG documents stay on your own server by default — nothing is sent to Open WebUI's maintainers. | Actively maintained — v0.10.2 (Jul 1, 2026), 166 releases | open-webui/open-webui |
| Home Assistant Assist (voice pipeline) | Apache-2.0 (Home Assistant Core) | Wires wake-word detection, speech-to-text, a conversation agent, and text-to-speech together over the local network via the open Wyoming protocol. | Run fully locally (faster-whisper + Piper + a local Ollama model) — no audio or transcript ever needs to leave the home network. Caveat: the Piper TTS component in this pipeline is archived upstream (last pushed 2025-08-26) — still functional and widely used, just not actively developed. | Actively maintained — Home Assistant Core 2026.7.2 (Jul 10, 2026) | Home Assistant Voice Control |
| oterm | MIT | Terminal UI client that talks to Ollama and any pydantic-ai-supported provider (OpenAI, Anthropic, local OpenAI-compatible servers) — no browser or web server required. | Chat history and settings are stored locally in SQLite; when pointed at a local Ollama endpoint, nothing leaves the machine. | Actively maintained — v0.20.0 (Jun 30, 2026), 81 releases | ggozad/oterm |
Recommendation: Start with Home Assistant's Assist pipeline if ambient, hands-free pickup is the goal — it's the only one of the three actually designed for “walk up and talk,” and it's fully local end to end. Layer Open WebUI on top for a shared, multi-user chat surface, but budget time to read the 2025 license change before deploying it beyond a household. Keep oterm in the toolbox for quick, no-server terminal access to the same local models — it has near-zero setup cost, but it's single-user.
Plays well with: Core architecture — Home Assistant Assist needs a local inference backend, and Open WebUI and oterm can point at that same backend, so all three can share one self-hosted model server rather than three separate stacks.
Agrees with index.html's current
claim. Open WebUI and Home Assistant's Assist voice pipeline are both real, current,
actively-maintained projects that do what the claim says, and a terminal remains a
genuine, low-overhead primary interface for this kind of self-hosted stack.
Touchscreen GUI
index.html currently says: “Linux touch support is real but patchy
— and open computer-use agents can drive a screen too” (status: caveat).
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| GNOME Shell / libadwaita apps | GPL-2.0-or-later (core) | The default Linux desktop's touch handling: on-screen gestures, tablet-mode auto-rotation, and adaptive apps that resize for touch. | Fully local, no telemetry by default. Genuinely earns the “patchy” label — 2026 community threads still report gestures not registering and tablet-mode detection breaking on some hardware. | Actively maintained — GNOME 48 line, mid-2026 point releases | GNOME/gnome-shell |
| KDE Plasma Mobile | GPL/LGPL (standard KDE licensing) | A touch-first Plasma shell built specifically for phones and tablets (PinePhone, OnePlus 6 via postmarketOS), not a touch mode bolted onto a desktop shell. | More consistent on supported hardware than desktop-GNOME's touch mode, but device support is narrower. | Actively maintained — Plasma 6 line, v6.6.5 (May 12, 2026) | invent.kde.org/plasma-mobile |
| Cua (trycua/cua) | MIT | Open-source infrastructure for computer-use agents: sandboxed virtual desktops plus an SDK/benchmark suite so a vision-capable model can perceive a screen and drive it with clicks/taps/keystrokes. | Self-hosted sandboxes; the more current pick over Open Interpreter (pivoted to a coding agent in 2026) or self-operating-computer (no commits since Sep 2025) for this specific job. | Actively maintained — @trycua/fleet v0.0.3 (Jul 15, 2026), 20.4k stars | trycua/cua |
Recommendation: If you already run a Linux desktop, don't add
anything — GNOME's or Plasma Mobile's touch support (whichever your distro
ships) is “good enough, patchy” out of the box and matches what
index.html actually claims. Reach for Cua only for the narrower job of
letting an agent operate a screen on your behalf. Don't reach for Open Interpreter for
this job in 2026 — it's no longer a computer-use tool.
Plays well with: Natural language processing — Cua needs a vision-capable model to actually see and act on the screen, and this report's own NLP pick, Qwen3.6-27B, is already described as a multimodal model, so it doesn't need inventing a separate model for this job.
Agrees with index.html's current
claim. Linux touchscreen support is genuinely inconsistent in current releases, and
open, MIT-licensed computer-use agents (Cua) really can drive a screen today.
Natural language processing
index.html currently says: “Open-weight models are genuinely
conversational — a step behind frontier on the hardest reasoning” (status:
caveat).
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| DeepSeek V4 (V4-Pro / V4-Flash) | MIT (weights) | Mixture-of-experts family (V4-Pro: 1.6T total/49B active; V4-Flash: 284B total/13B active), both with 1M-token context, downloadable and runnable fully offline. | MIT licensing permits self-hosting with no callback to DeepSeek's servers — genuine local-only privacy once self-hosted, though “open-weight” here means the weights are open, not the training data. | Actively maintained — released Apr 24, 2026 | deepseek-ai/DeepSeek-V4-Pro |
| Qwen3.6-27B | Apache-2.0 | 27B-parameter dense multimodal model built for agentic coding and repository-level reasoning, small enough to self-host on a single consumer-class GPU. | No commercial-use restriction; runs fully locally via Ollama/vLLM/llama.cpp once downloaded, so no data has to leave the host. | Actively maintained — released Apr 22, 2026, still Alibaba's newest fully open-weight general model | Qwen/Qwen3.6-27B |
| Mistral Large 3 | Apache-2.0 | Sparse mixture-of-experts model (41B active/675B total) available in base, instruct, and reasoning variants. | Apache-2.0 covers essentially the whole family, so downstream users can redistribute and commercialize without legal review; self-hostable for full data locality at real hardware cost. | Actively maintained — released Dec 2, 2025, with a further open-weight model in early access as of Jul 2026 | mistral.ai/news/mistral-3 |
Recommendation: For a home/self-hosted setup, start with Qwen3.6-27B — it's the only one of the three that realistically runs on a single consumer GPU. Reach for DeepSeek V4-Flash or Mistral Large 3 only if you have the hardware and want the strongest open-weight reasoning available, accepting both still trail the best closed frontier models on the hardest reasoning benchmarks. None of the three publish full training-data provenance, so “open-weight” should not be read as “fully auditable.”
Plays well with: Core architecture — all three need a local inference runtime to actually self-host, and can share the same backend already referenced by the Primary interface row and the Touchscreen GUI row's computer-use pick (Cua, if a multimodal variant is used).
Agrees with index.html's current
claim. DeepSeek V4, Qwen3.6, and Mistral Large 3 are all genuinely conversational,
currently-maintained open-weight models, and independent 2026 benchmarking confirms
the best of them still sit a notch behind top closed frontier models on the hardest
reasoning tasks, exactly as the claim states.
Personal & Field Hardware
Ship terminal / console hardware
index.html currently says: “Framework laptop or desktop —
modular, repairable, upgradeable; still no fixed bridge console.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Framework Laptop 13 Pro / 16 / Desktop | Not fully open — chassis CAD and Expansion Card designs are CC BY 4.0 and EC firmware is open source on GitHub, but mainboard schematics are only partially published and include closed vendor components (Intel ME, etc.) | Modular x86 laptops/desktop where mainboard, keyboard, screen, battery, ports, and (on the 16) GPU module are all user-replaceable with standard screws and no adhesive. | Repairability is real and independently documented, but the “open source” framing needs precision — not OSHWA-certified. | Actively maintained — Laptop 13 Pro launched Apr 22, 2026 with a ground-up redesign | frame.work |
| System76 Lemur Pro (Coreboot-based Open Firmware) | GPL-2.0 (coreboot) + GPL-3.0 (embedded controller) + BSD-2-Clause-Patent (edk2); Intel CSME/FSP/microcode remain proprietary blobs | Linux-first laptops (Pop!_OS/Ubuntu) whose boot firmware is open source rather than a closed vendor BIOS blob. | Real, verifiable control over boot/power/thermal behavior; not modular across models the way Framework is. | Actively maintained — new Lemur Pro announced Jul 2026 with Coreboot-based firmware | system76/firmware-open |
| MNT Reform Next | CERN-OHL-2.0-S (hardware), GPL-3.0 (software/firmware), CC-BY-SA 4.0 (docs/artwork) — OSHWA-certified | A genuinely fully-open-hardware laptop: complete schematics, mechanical designs, and firmware published under reciprocal open licenses. | The only laptop with OSHWA certification; a niche, lower-performance ARM machine from a small team, not an x86 workstation replacement. | Actively shipping — second-generation crowdfunding campaign, Jul 30, 2026 ship date | crowdsupply.com/mnt/mnt-reform-next |
Recommendation: Start with Framework if the goal is a practical daily-driver stand-in for a bridge console — it's the literal product named in the claim, x86-performance-competitive, and its repairability is real even though its “openness” is partial. Add System76's open firmware if boot-level transparency matters more than modularity. Reserve MNT Reform Next for readers who want a genuinely 100%-open, OSHWA-certified machine and are willing to trade raw performance and mainstream software compatibility for it.
Plays well with: Primary interface and Core architecture — all three can run the same self-hosted stack referenced elsewhere in this report (a local-LLM backend, Open WebUI, Home Assistant Assist) as a home “ops console.” Also cross-links to Self-repair capability: Framework's published schematics/EC firmware are the same #1 pick there, for a different reason (repairability documentation rather than daily-driver modularity) — a reader who picks Framework for one gets the other for free.
Agrees, with a caveat, with
index.html's current claim. Framework genuinely is
modular/repairable/upgradeable and remains actively developed in 2026, but its
“open source” framing should be tightened: it's open-ish (CAD, EC
firmware, and Expansion Card specs are open; mainboard schematics are only partial),
not a certified open-hardware design the way MNT Reform is.
Personal access device
index.html currently says: “Fairphone — a user-replaceable
battery beats a PADD.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Fairphone 6 | Hardware design not published/open-hardware-certified; GPL-licensed kernel sources published as legally required; ships a standard Android build | Modular, screw-based (T5 Torx only) smartphone with 12 user-replaceable parts — battery, screen, cameras, USB port — shipped with its own screwdriver. | Only “open source” adjacent — publishes GPL-required kernel sources, not full hardware schematics; stock OS is ordinary Android. | Actively maintained — launched 2026, iFixit 10/10 repairability, 5-year warranty | fairphone.com |
| Volla Phone (Quintus / Plinius / X23) | Volla OS is AOSP-based (Apache-2.0 core), developed in the open on GitHub; hardware itself is not open-hardware-certified | German-made de-Googled Android alternative with a removable battery on some models and multi-boot support for Ubuntu Touch. | Less repair-documented than Fairphone, from a smaller company with a slower patch cadence, but the OS itself is open source out of the box. | Actively maintained — multiple current models with regular Volla OS release notes through 2026 | volla.online/en/volla-phone |
| Purism Librem 5 | Hardware schematics/STEP files released under GNU GPLv3+; PureOS is a Debian-based, predominantly free-software Linux distribution | The only one of the three where both hardware design and the entire software stack aim for GPL-level openness, running mainline Linux (Phosh). | Most “actually open source” of the three; uses an aging, underpowered SoC (i.MX8), so performance lags well behind Fairphone or Volla. | Actively maintained — PureOS Crimson released across 2026, PureOS Dawn in development | puri.sm/products/librem-5 |
Recommendation: Fairphone 6 remains the strongest default —
index.html's specific claim about a user-replaceable battery is accurate
today, repairability is independently verified, and performance is
mainstream-competitive, at the cost of running a fairly ordinary (if de-Googleable)
Android build. Choose the Librem 5 only if genuinely open-source software matters more
than raw performance. Volla Phone sits in between: a smaller company with less mature
repair support, but an OS that's open source out of the box.
Plays well with: Personal communicator — /e/OS (that row's recommended pick) runs on Fairphone 6 as Murena's flagship device, so choosing Fairphone here and /e/OS there is the same real-world combination that row's claim describes. The Librem 5 pairs with its own PureOS/Phosh stack instead.
Agrees with index.html's current
claim. Fairphone genuinely offers an independently-verified user-replaceable battery
and is the strongest currently-available repairable-phone pick, though the claim
slightly conflates “open source” with “repairable/ethical.”
Handheld sensor device
index.html currently says: “Open hardware boards + SDR + thermal
cams — more tricorder-like, more assembly required.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| HackRF One + PortaPack (Mayhem firmware) | HackRF hardware designs and firmware published on GitHub under open licenses; community Mayhem firmware is GPL-licensed | Open hardware software-defined radio (1 MHz–6 GHz); with the PortaPack add-on and Mayhem firmware it becomes a genuinely standalone handheld spectrum scanner with its own screen. | Closest real match to a tricorder's “scan for signals” function, though it requires buying/attaching the PortaPack add-on. | Actively maintained — Mayhem nightly builds through Jul 11, 2026 | greatscottgadgets/hackrf |
| Flipper Zero | Firmware source published on GitHub, though not uniformly open — some ST radio-stack components remain proprietary blobs | A pocket multi-tool combining sub-GHz radio, NFC/RFID, infrared, and GPIO in one handheld device with a screen and buttons. | Most “off-the-shelf tricorder” feeling of the three; mid-2026 saw genuine community concern over firmware development slowing, since addressed with a recommitment of resources. | Actively maintained — stable firmware 1.0 since Sep 2024, commits through Jul 2026 | flipperdevices/flipperzero-firmware |
| M5Stack modular sensor ecosystem (Core2/Cardputer + Units) | Hardware schematics and example firmware per module published on GitHub under generally permissive licenses; not a single OSHWA-certified product line | A build-your-own-tricorder ecosystem: a handheld ESP32/microcontroller base plus snap-on sensor Units — thermal imaging (MLX90640), environmental/air-quality (BME688), and more. | Most literal match to “open hardware boards + thermal cams,” but also the most assembly-and-code-required of the three. | Actively sold and documented — current product catalog | docs.m5stack.com/en/products |
Recommendation: If matching the claim exactly (SDR + thermal, DIY assembly) is the goal, M5Stack's modular Units are the most literal fit and cheapest entry point, but expect real soldering/coding/case-design work. HackRF One + PortaPack Mayhem is the better pick if RF-scanning is the priority and a finished, ready-to-use handheld matters more than modularity. Flipper Zero is the best starting point for someone who wants a low-assembly device today, accepting it covers a narrower set of “senses” and carries a small amount of firmware-roadmap uncertainty.
Plays well with:
Ship terminal / console hardware — the
Framework/System76 machines there are the natural flashing/development host for all
three — HackRF/Mayhem firmware builds, Flipper Zero's qFlipper
updater, and M5Stack's Arduino/UIFlow tooling all run from a normal Linux laptop.
Agrees with index.html's current
claim. Real open hardware SDR (HackRF) and thermal-camera modules (M5Stack) exist and
are tricorder-like, but none of the three is a single finished tricorder — all
require meaningfully more assembly/configuration than the show's one-button device.
Personal communicator
index.html currently says: “Fairphone on /e/OS + Signal —
E2E-encrypted comms on hardware you can open with a screwdriver.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Signal | Clients (Android/iOS/Desktop) are AGPLv3; the Signal Protocol library is GPLv3 | End-to-end encrypted messaging/calling with an open, independently audited protocol; both server and client code are open source. | The most credible, actively-maintained E2EE messenger for mainstream daily use; a phone number is still required and the service runs on centralized (if minimal-metadata) infrastructure. | Actively maintained — iOS 8.14 (Jun 4, 2026), Android 8.10.3 (May 19, 2026) | signal.org |
| /e/OS (Murena) | AOSP-based, predominantly open source (Apache-2.0 core plus GPL kernel components) | A de-Googled Android fork with its own privacy-respecting app repository and cloud alternative, sold pre-installed on Fairphone hardware by Murena. | Murena's cloud/workspace services run on the company's own infrastructure, not self-hostable by default. | Actively maintained — /e/OS 4.0 released Jun 2026 | murena.com/e-os-4-0 |
| GrapheneOS | Open source, AOSP-consistent licensing plus GrapheneOS's own components | A security-hardened AOSP fork with a stronger sandboxing/exploit-mitigation track record than /e/OS. | Officially Pixel-only, so it cannot run on the Fairphone this row's claim (and the Personal access device row) recommends — trades away repairable hardware for a harder security posture. | Actively maintained — current release line covers Pixel 6 through Pixel 10/10 Pro | grapheneos.org/releases |
Recommendation: /e/OS + Signal best matches the claim as written — repairable Fairphone hardware plus a de-Googled OS plus E2EE messaging, all currently shipping and maintained. Recommend GrapheneOS + Signal instead only for readers who prioritize hardened security over repairable/ethical hardware. Signal itself is close to non-negotiable either way.
Plays well with: Personal access device — this row is the software/communications half of that row above; /e/OS is literally the OS Murena preinstalls on the Fairphone 6 recommended there, so “Fairphone 6 + /e/OS + Signal” is one coherent real-world stack across both rows. Choosing GrapheneOS here instead pulls a reader toward Pixel hardware, away from that row's Fairphone pick.
Agrees with index.html's current
claim. Fairphone on /e/OS with Signal is a real, currently-shipping,
actively-maintained combination that does deliver genuine E2E-encrypted communication
on repairable hardware, exactly as claimed.
Data Storage & Processing
Storage medium
index.html currently says: “Self-hosted NAS or E2E-encrypted cloud
(Proton Drive) — either way, only you hold the keys.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| TrueNAS Community Edition | Open source (GPL-3.0 Linux kernel + BSD-licensed middleware/GUI); the Enterprise tier is a paid add-on, not required for home use | A free, self-hosted NAS operating system (ZFS-based storage, snapshots, shares, and now LXC-style containers) that runs entirely on hardware you own. | No vendor holds a decryption key; the ZFS layer underneath provides the actual data-integrity guarantees the claim gestures at. | Actively maintained — CORE/SCALE unified into Community Edition; 25.10.4 (Jun 3, 2026), 26-BETA.2 previewing OpenZFS 2.4 | truenas.com/truenas-community-edition |
| Proton Drive | Client apps are open source and independently audited; server-side infrastructure is Proton's own and not self-hostable | Files are encrypted client-side before upload under a “zero-access encryption” design, so Proton itself cannot read them. | Only the client apps are open source and auditable — the server side is proprietary, centrally-hosted infrastructure you're trusting Proton to run correctly. | Actively maintained — 2026 cryptography overhaul, native Linux client in progress | proton.me/security/zero-access-encryption |
| Nextcloud Hub | AGPLv3, no open-core split | A self-hosted alternative to Proton Drive: folder-level, client-side end-to-end encryption plus full file sync/share, calendar, and office-suite features. | Server never sees plaintext for E2EE folders, and you run the server yourself, unlike Proton's proprietary server side. | Actively maintained — Hub 26 “Winter” (Feb 2026); 500,000+ servers reported running it as of 2025 | nextcloud.com/encryption |
Recommendation: Start with TrueNAS Community Edition if the goal is literally “self-hosted NAS” — it's free, open source, ZFS-backed, and its 2026 roadmap keeps it current. Reach for Nextcloud Hub instead of Proton Drive if self-hosting matters more than convenience. Proton Drive remains the right pick for readers who want the claim's specific named product and are comfortable trusting Proton's infrastructure rather than operating their own box.
Plays well with: Processing redundancy — TrueNAS is the natural home for that row's redundancy tooling (it ships OpenZFS directly) and can serve as the storage backend for the Core architecture row's local-LLM inference stack or the Primary interface row's Open WebUI chat/RAG document storage.
Agrees with index.html's current
claim. Self-hosted NAS software (TrueNAS) and Proton Drive's E2E-encrypted cloud are
both real, current, actively-maintained options that put encryption keys in the user's
hands rather than a third party's, exactly as the claim frames the choice.
Core architecture
index.html currently says: “Same transformers, quantized (GGUF)
onto a consumer GPU or unified-memory mini PC at home.” This row covers
local-LLM inference runtimes — the software that loads a quantized
GGUF-style model and serves it — not which model to run; model selection is the
Natural language processing row's job.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| llama.cpp | MIT | The reference C/C++ inference engine that originated the GGUF format itself; loads a quantized model, manages the KV cache, and can expose an OpenAI/Anthropic-compatible HTTP server. | Runs on a single consumer GPU (or CPU-only) with no cloud dependency — prompts, responses, and weights stay on the machine it runs on. | Actively maintained — continuous build-tagged releases (b10075, Jul 20, 2026), 120,898+ stars | ggml-org/llama.cpp |
| Ollama | MIT (a 2025 desktop-app license ambiguity was resolved Nov 2025 — the whole repo now falls under one MIT LICENSE) | A single binary that pulls quantized GGUF models and serves them locally with minimal setup — the most widely-adopted “consumer GPU or unified-memory mini PC” runtime. | Popular specifically on Apple Silicon unified-memory Macs and consumer NVIDIA GPUs; no outstanding licensing concern as of this research date. | Actively maintained — v0.32.1 (Jul 16, 2026); 52M monthly downloads reported Q1 2026 | ollama/ollama |
| vLLM | Apache-2.0 | A higher-throughput serving engine (PagedAttention, continuous batching) aimed at running one model for several concurrent local users/devices; supports GGUF alongside AWQ/GPTQ/FP8. | Narrower “at home” fit than llama.cpp/Ollama — wants a real NVIDIA GPU rather than being CPU/unified-memory-friendly. | Actively maintained — hosted under the PyTorch Foundation; v26.06 (Jul 2026) adds CUDA 13.0 support | vllm-project/vllm |
Recommendation: Start with Ollama for the actual “consumer GPU or unified-memory mini PC at home” case — it's the lowest-friction way to run a quantized GGUF model locally today, and it's cleanly MIT-licensed with no outstanding ambiguity. Drop to bare llama.cpp for tighter control over quantization/build flags. Reach for vLLM only once “one model, one user” stops being the real workload.
Plays well with:
Onboard AI personality — whichever
runtime is picked here becomes the shared local backend for
Primary interface's Open WebUI/oterm/Home
Assistant Assist and Touchscreen GUI's Cua. Ollama
in particular does double duty: the same instance that serves the model here also
holds the household's persona via a Modelfile SYSTEM directive in the
Onboard AI personality row — one install, two jobs, not two unrelated tools.
Agrees with index.html's current
claim. llama.cpp, Ollama, and vLLM are all real, currently-maintained runtimes that do
exactly what the claim describes: take a transformer, quantize it to GGUF, and run it
on a consumer GPU or unified-memory mini PC rather than a hyperscaler cluster.
Processing redundancy
index.html currently says: “Whatever redundancy you build —
RAID and a second box, or it's a single point of failure.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| OpenZFS | CDDL (weak-copyleft, OSI-approved, but GPL-incompatible per the FSF, so it ships as a loadable kernel module on Linux) |
The RAID-Z/mirror layer underneath TrueNAS and most serious homelab NAS
builds: real-time redundancy against 1–3 simultaneous disk failures,
snapshots, and zfs send/receive for replicating a
full pool to a second box.
|
Directly matches both halves of the claim (“RAID and a second box”) in one tool; CDDL's GPL-incompatibility keeps it a separately maintained out-of-tree module. | Actively maintained — 2.4.3 (Jun 12, 2026), stabilized RAID-Z expansion | openzfs.github.io/openzfs-docs |
| SnapRAID | GPL-3.0 | A lighter-weight alternative to ZFS for home media/parity arrays: scheduled (not real-time) parity computed across up to six disks of protection. | Because parity syncs are scheduled rather than continuous, any file written since the last sync is genuinely unprotected — a real gap the claim's “whatever redundancy you build” phrasing implicitly warns about. | Actively maintained — CLI v14.9 (Jul 19, 2026) | amadvance/snapraid |
| restic | BSD-2-Clause | Encrypted (AES-256), deduplicated backups to a second location — SFTP, another server, or S3-compatible object storage. | Covers the “second box” half of the claim for readers who don't want full ZFS replication between two always-on machines — one cron job pushing encrypted snapshots off-site. | Actively maintained — v0.19.0 current as of early 2026 | restic/restic |
Recommendation: If the storage medium is already TrueNAS, OpenZFS is
not a separate install — RAID-Z plus zfs send/receive
to a second TrueNAS box is the most complete real-world match for “RAID and a
second box” in one stack. Choose SnapRAID+mergerfs instead only if the array is
a JBOD of mismatched drive sizes with mostly write-once media. Layer restic on top of
either as the actual off-site “second box” leg regardless of which parity
scheme is chosen.
Plays well with: Storage medium — builds directly on that row's TrueNAS pick (ZFS is TrueNAS's native filesystem) and can back up the same TrueNAS box's config/datasets that host the Core architecture row's model weights and any chat/RAG data from the Primary interface row's Open WebUI.
Agrees with index.html's current
claim. Real, current open-source tools exist for both RAID-style redundancy (OpenZFS,
SnapRAID) and second-box replication (ZFS send/receive, restic), but none of them is
automatic — a reader who does nothing really is left with the single point of
failure the claim warns about.
Compute core hardware
Bonus row, not on the pricing table: Storage medium, Core architecture, and Ship terminal / console hardware between them cover the NAS software, the inference runtime, and the laptop you sit at — but none of them names the actual box that runs TrueNAS and Ollama around the clock. This row exists because the reference stacks below keep saying “the household runs TrueNAS as the box underneath all of this” without ever saying what that box is.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Framework Desktop | CC BY 4.0 (mainboard documentation and printable mechanical parts) — the same partial-openness caveat as the Framework laptop above, not a fully open board | A Mini-ITX desktop built around AMD's Ryzen AI Max+ 395 APU with up to 128GB of unified memory — fast enough to run a 70B-parameter model at 20+ tokens/second on one machine, with no discrete GPU required. | Everything — model weights, NAS data, chat history — stays on hardware in the house; the unified-memory design means there's no separate GPU driver stack phoning home. |
Actively shipping —
FrameworkComputer/Framework-Desktop repo pushed Jul 6, 2026, 308
stars, not archived
|
frame.work/desktop |
| System76 Thelio |
Coreboot + system76/firmware-open (GPL-licensed) — the same
open firmware already used for the Lemur Pro laptop above, now on a desktop
chassis
|
A Linux-first desktop/workstation line (redesigned Apr 2026 as Thelio Mira / Thelio Major) with room for a real discrete NVIDIA or AMD GPU, for readers who want dedicated inference hardware rather than a unified-memory APU. | Open boot firmware plus a real GPU slot means both the software stack and the compute hardware itself are inspectable and swappable, not sealed to one vendor's silicon. | Actively maintained — Thelio Major/Mira redesign shipped Apr 2026 | system76.com/desktops |
| Minisforum MS-02 Ultra | Proprietary BIOS/firmware — the least open of the three, included anyway because it's the pick homelab communities actually reach for | A sub-4-liter mini PC with dual 10GbE, three M.2 NVMe slots, and a PCIe 4.0 slot for a discrete GPU — small enough to run TrueNAS and a passed-through GPU for Ollama in the exact same box the reference stacks describe. | Closed firmware is a real trust gap the other two picks don't have; the trade-off is a single small box that genuinely combines NAS and GPU compute, which neither Framework Desktop nor Thelio does as compactly. | Actively shipping as of 2026 — official successor to the now-dated MS-01 | store.minisforum.com |
Recommendation: Framework Desktop is the most complete match for the “consumer GPU or unified-memory mini PC” framing this whole report is built around — one box, one purchase, no GPU passthrough configuration required, and it's already the same vendor as the laptop pick above. Choose System76 Thelio instead if a discrete GPU with room to upgrade later matters more than compactness. Reach for the Minisforum MS-02 Ultra specifically to combine NAS and GPU inference in one small, cheap box — and go in accepting its firmware isn't open, unlike the other two.
Plays well with: Storage medium and Core architecture — this is the physical hardware TrueNAS and Ollama actually run on, and Processing redundancy's OpenZFS pool lives on its drives too. Distinct from Ship terminal / console hardware's laptops: that row is the machine a person sits at, this row is the machine that just runs, headless, around the clock.
Orchestration & deployment
Bonus row, not on the pricing table: every reference stack below says the household “runs TrueNAS and Ollama and Open WebUI and Keycloak on the same box” — but none of them names what actually makes a dozen services coexist on one machine. Almost everything in this report is normally deployed as a container, and the “all on one box” claim quietly assumes a runtime and, often, a hypervisor underneath it. This row is that missing substrate.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Docker Engine + Compose | Apache-2.0 |
The default self-hosting runtime: one compose.yaml per stack
declares every service, network, and volume, and
docker compose up
brings the whole set up reproducibly. Nearly every project in this report
ships an official Compose file.
|
Runs entirely on your own hardware; images can be pinned by digest and mirrored locally so nothing has to be pulled from a registry at deploy time. | Actively maintained — Compose v5.3.1 (Jul 7, 2026), 37.8k+ stars | docker/compose |
| Podman (+ Quadlet) | Apache-2.0 | A daemonless, rootless-by-default container engine with a Docker-compatible CLI; its Quadlet integration runs each container as a native systemd unit, so restarts and dependencies are managed by the OS rather than a background daemon. | Rootless containers shrink the blast radius of a compromised service — a container escape lands as an unprivileged user, not root. | Actively maintained — v6.0.1 (Jul 8, 2026), 32.3k+ stars | containers/podman |
| Proxmox VE | AGPL-3.0 | A Debian-based bare-metal hypervisor (KVM VMs + LXC containers) that resolves the “one box” tension honestly: TrueNAS runs in a VM with the disk controller passed through to it, while the containerized services run in a separate VM or LXC on the same physical host, each isolated but sharing one machine. | Fully self-hosted; the whole virtualization control plane is open source with no phone-home, though a paid enterprise repo exists for support/stability. | Actively maintained — Proxmox VE 9.2 (May 21, 2026), Debian 13 base | proxmox.com/proxmox-virtual-environment |
Recommendation: Start with Docker Compose — it's what almost
every project in this report documents, and a per-stack compose.yaml is
the lowest-friction way to bring up Open WebUI, Keycloak, Vaultwarden, Nextcloud,
Headscale, Uptime Kuma, and CrowdSec reproducibly. Reach for Podman if rootless
isolation or systemd-native management matters more than ecosystem ubiquity. Add
Proxmox VE underneath both once you actually want TrueNAS and GPU-accelerated
Ollama and a dozen containers on a single machine — virtualizing
TrueNAS (with HBA passthrough) beside a container VM is the real-world shape of the
“one box” every stack below assumes. A lighter alternative is to run
TrueNAS on bare metal and use its own built-in app catalog — a
Docker-Compose-based engine, separate from the LXC-style container instances noted in
the Storage medium row — for the service
layer.
Plays well with: Compute core hardware — this is the layer that actually runs on that box, and it's the unspoken dependency of nearly every software pick in this report: Open WebUI, Keycloak / Vaultwarden, Nextcloud, Headscale, Uptime Kuma, and the reverse proxy below are all normally deployed as containers on top of it.
AI & Autonomy
Onboard AI personality
index.html currently says: “Any persona you like — the system
prompt is yours to edit.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
Ollama (Modelfile SYSTEM directive) |
MIT |
Ollama's Modelfile format lets you bake a persistent SYSTEM
prompt into a named local model variant, or override it per-session at
runtime.
|
Everything — model weights, persona text, conversation — runs and stays on your own machine; no persona data is sent anywhere. | Actively maintained — v0.32.1 (Jul 16, 2026), weekly cadence | ollama/ollama |
| SillyTavern | AGPL-3.0 | A self-hosted chat front end built around character personas: “character cards” bundle a name, avatar, and personality definition, layered with world-info/lorebooks. | Connects to any backend (local Ollama/llama.cpp, or a hosted API key you supply); stored personas/chat logs live in your own data directory. | Actively maintained — v1.18.0 (May 3, 2026), commits through Jul 11, 2026 | SillyTavern/SillyTavern |
| Open WebUI (Workspace “Models”) | “Open WebUI License” (BSD-3-Clause base plus a mandatory branding-retention clause for deployments over 50 users) | The Workspace → Models screen lets you wrap any connected base model with a custom name, avatar, system prompt, knowledge base, and tools, saved as a selectable persona. | Same self-hosted deployment flagged in the Primary interface row for its 2025 branding-clause license change; persona/system-prompt data stays on your own server regardless. | Actively maintained — v0.10.2 (Jul 1, 2026) | docs.openwebui.com/features/workspace/models |
Recommendation: Start with Ollama's Modelfile SYSTEM
directive if you just want one or two fixed personas bound to specific local models
— lowest-overhead option, no licensing caveats. Reach for SillyTavern if you
want to swap between many distinct personas in a single session, accepting AGPL-3.0
copyleft terms if you redistribute a modified build. Open WebUI's Workspace/Models
feature is the middle ground for a household, with the same branding-clause caveat
already noted for the Primary interface row.
Plays well with: Core architecture — all three need a model to actually run, and Ollama is both a candidate here and the natural local-inference backend for the other two. This is the same Ollama instance doing double duty: one install, two jobs — serving the model (Core architecture) and holding the persona (this row) — not two unrelated discoveries of the same tool.
Agrees with index.html's current
claim. Self-hosted tooling genuinely lets you write, edit, and swap any system
prompt/persona you like, with no platform-imposed restriction on content, matching the
“yes” status.
Autonomous decision-making
index.html currently says: “Open agent stacks run locally —
capable, but you're the safety team.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| CrewAI | MIT | A Python framework for orchestrating teams (“crews”) of role-playing autonomous agents that plan, delegate, and execute multi-step tasks, with a separate “Flows” system for deterministic control. | Runs entirely on infrastructure you control against any LLM backend, including fully local models; no built-in approval gate stops a destructive tool call. | Actively maintained — v1.15.5 (Jul 20, 2026), very active release cadence | crewAIInc/crewAI |
| OpenHands | MIT for the core project (a separate enterprise directory has its own license) | A software-engineering agent that runs a plan → code → run-in-sandbox → fix loop against a real terminal, file system, and browser. | Self-hostable with any LLM API key including a local model server; sandboxing limits blast radius, but nothing stops it running destructive commands inside that sandbox. | Actively maintained — cloud-1.47.0 (Jul 21, 2026) | OpenHands/OpenHands |
| AutoGPT |
Split — the original agent (classic/) is MIT; the newer
“AutoGPT Platform” is PolyForm Shield License 1.0.0
(source-available, restricts building a competing product)
|
One of the original “give an LLM a goal and let it plan its own steps” agents, now split between the classic single-agent version and a newer visual, block-based platform. | Both run against your own LLM credentials; the platform's PolyForm Shield terms are a real license caveat worth flagging even though the code remains inspectable and self-hostable. | Actively maintained — platform beta v0.6.68 (Jul 17, 2026), 185k+ stars | Significant-Gravitas/AutoGPT |
Recommendation: Start with CrewAI if the goal is a small, controllable multi-agent workflow — cleanly MIT-licensed, no platform lock-in, and its “Flows” mode keeps a human-in-the-loop checkpoint exactly where this row's caveat says you need one. Reach for OpenHands specifically for coding/dev tasks, and pair it with container-level sandboxing, not credentials wider than the task needs. Treat AutoGPT's classic agent as a historically important but now second-tier option, and note its newer “Platform” half is not MIT. None of the three ship a safety layer beyond basic sandboxing.
Plays well with: Known sentience risk — all three are LLM-agnostic orchestration layers that pair with the local-inference picks from the Core architecture row and can share the same open-weight model chosen for Onboard AI personality. For guardrails against exactly the unsupervised-action risk this claim flags, pair any of the three with the guardrail/red-teaming tooling in the next row.
Agrees with index.html's current
claim. CrewAI, OpenHands, and AutoGPT are all real, current, self-hostable agent
stacks capable of genuine autonomous multi-step action, and none of them include a
built-in safety reviewer: the operator is unambiguously the safety team.
Known sentience risk
index.html currently says: “Same open question — but at least
you can read the weights.”
This row is a reinterpretation, not a literal sentience test: no
open-source tool measures, detects, or rules out machine sentience — that
remains a philosophical and scientific open question with no instrument that resolves
it, in this codebase's fiction or in reality. The three candidates below are the
closest real analog available — open-source tooling that tests whether a model
or agent is behaving unexpectedly or unsafely (guardrail frameworks, vulnerability
scanners, and red-teaming/jailbreak harnesses), reinterpreted onto AI safety and
guardrails tooling rather than onto anything that answers the sentience question
itself.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| NeMo Guardrails (NVIDIA) | Apache-2.0 | A runtime guardrail framework: programmable “rails” (topical, safety, jailbreak-detection, execution rails around tool/agent calls) intercept a conversation or agent action before and after the LLM call. | Self-hosted; enforces rules the operator writes, not an independent judgment about the model's inner state — the category closest to “ongoing supervision of an autonomous system.” | Actively maintained — v0.23.0 (Jul 1, 2026), commits through Jul 21, 2026 | NVIDIA-NeMo/Guardrails |
| garak (NVIDIA) | Apache-2.0 | An LLM “vulnerability scanner”: a CLI tool with 50+ probe modules that throw known failure-inducing inputs at a model or agent (jailbreaks, prompt injection, data leakage, an “Agent-breaker” probe for agent tools) and reports which probes succeeded. | Offline/pre-deployment testing for unexpected or unsafe behavior, not a measurement of anything resembling awareness or experience. | Actively maintained — v0.15.1 (Jun 5, 2026), 8.5k+ stars | NVIDIA/garak |
| PyRIT (Microsoft) | MIT | An automation framework built by Microsoft's AI Red Team for orchestrating adversarial-prompt campaigns against a target model or agent, scoring responses and logging what got past defenses. |
Tests for exploitable, unsafe, or policy-violating behavior under adversarial
pressure; no mechanism for and makes no claim about assessing sentience or
inner experience. Now at microsoft/PyRIT — the old
Azure/PyRIT location is archived.
|
Actively maintained — v0.14.0 (Jun 5, 2026), commits through Jul 21, 2026 | microsoft/PyRIT |
Recommendation: Closest real practice is guarding against unexpected/unsafe autonomous behavior — not measuring sentience, which no tool in this space claims or attempts to do. If running any of the agent stacks from the Autonomous decision-making row, start with NeMo Guardrails as the runtime layer, then use garak and/or PyRIT before deployment to probe for jailbreaks and prompt-injection weaknesses the guardrails might miss. All three are current, actively-maintained, permissively-licensed projects — but this row is a reinterpretation, not a real answer to “is it sentient”: that question has no open-source instrument, full stop.
Plays well with: Autonomous decision-making — directly complements that row's candidates (CrewAI, OpenHands, AutoGPT): NeMo Guardrails wraps around any of them as a runtime policy layer, while garak and PyRIT are used to red-team the underlying model before it's given agentic tool access. All three are model-agnostic and can point at the same local open-weight model chosen elsewhere in this group.
Disagrees with index.html's current
claim, taken literally. The line plays along with the bit (“read the
weights” as a stand-in for insight into sentience), which is fair satire, but
taken literally it overstates what's real: no open-source tool, weight-readable or
not, tests for or resolves the sentience question. The genuinely real practice
available today is behavioral guardrails and red-teaming — a different (and
answerable) problem than the one the row's label names.
Simulation & Holography
Holodeck / holo-environments
index.html currently says: “Not available — SteamVR on Linux
exists, still no photons with mass.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Monado | Boost Software License 1.0 | Open-source implementation of the Khronos OpenXR standard for GNU/Linux (with Android and Windows support) — the compositor/runtime layer that lets an application talk to VR/AR hardware without a proprietary driver stack. | Runs entirely on hardware and software you control — no telemetry-collecting vendor runtime required to get an OpenXR app on screen. | Actively maintained — latest stable 25.1.0 (Dec 9, 2025), in-progress “vNEXT” entries dated as recent as Jul 21, 2026 | gitlab.freedesktop.org/monado/monado |
| WiVRn | GPL-3.0 | Wirelessly streams a PC-rendered OpenXR/SteamVR-compatible scene to a standalone Android headset (Quest 1–3S, Pico 4, Vive Focus/XR Elite and others), built on top of Monado. | All rendering, compositing, and networking run on hardware you own, with no cloud relay. | Actively maintained — latest release v26.6.2 (Jul 14, 2026), commits as recent as Jul 21, 2026 | WiVRn/WiVRn |
| Hubs (Hubs Foundation, formerly Mozilla Hubs) | MPL-2.0 | Self-hostable, browser-based (WebXR) multi-user virtual space platform: invite others into a 3D room, walk around, bring in web content, and talk over spatialized voice, with the companion Spoke editor for building custom scenes. | The closest open-source analog to the shared, persistent, walk-in environment half of a holodeck, but flat WebXR content in a rendered scene, not a compositor-and-hardware runtime. | Actively maintained by the community-run Hubs Foundation after Mozilla ended its own hosted service May 31, 2024 — latest production release prod-2026-03-11, commits as recent as Jul 8, 2026 | Hubs-Foundation/hubs |
Recommendation: There is no real candidate that rebuts “no photons with mass” — that stays true. For the closest practical open stack for room-scale shared VR today: start with Monado as the runtime layer (it's now a shared foundation several commercial headset vendors build on), add WiVRn if the headset is a standalone Android device that needs to talk to a Linux PC wirelessly, and use Hubs for the actual shared/social/persistent-space experience once hardware and runtime are sorted.
Plays well with: Monado and WiVRn are complementary layers (WiVRn is built on Monado), not competitors — pick both if the headset is a standalone Quest/Pico-class device. For local AI-driven characters populating a Hubs space, pair with Holographic crew — the persona/memory tooling in the next row.
Agrees with index.html's current
claim. The verdict that full sensory, forcefield-assisted holodeck matter is
“not available” remains accurate; SteamVR-on-Linux (and its genuinely open
alternatives Monado/WiVRn) get you shared immersive VR, never tangible photons.
Holographic crew
index.html currently says: “Self-hosted personas persist exactly as
long as your backups do.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Letta (formerly MemGPT) | Apache-2.0 | Self-hostable framework/server for “stateful” LLM agents whose identity is a persistent object: core memory blocks (persona + human facts) plus an archival memory the agent can search, stored in a database you run (Postgres or SQLite). | Kill the process, restart it, and the persona resumes exactly where it left off — because “the persona” is rows in your database. | Actively maintained — latest release 0.16.8 (May 14, 2026), commits as recent as Jul 3, 2026 | letta-ai/letta |
| Mem0 | Apache-2.0 | A memory layer you attach to an existing agent/chat stack: extracts durable facts and preferences from conversations, stores them in a vector/graph store of your choosing (self-hosted Qdrant, Neo4j, or others). | Lower-level than Letta — a memory API to bolt onto whatever agent runtime you already have; continuity is entirely a function of backing up that store. | Actively maintained — latest release cli-node-v0.2.11 (Jul 13, 2026), commits as recent as Jul 21, 2026, 61k+ GitHub stars | mem0ai/mem0 |
| Graphiti | Apache-2.0 | Self-hosted temporal knowledge-graph engine for agent memory: facts are stored as graph edges with validity time ranges against a database you run (Neo4j or FalkorDB), so an agent can reason about what was true when. | The most structurally sophisticated of the three for a persona that needs to track evolving relationships and history, at the cost of running and backing up a real graph database yourself. |
Actively maintained — latest release v0.29.2 (Jun 8, 2026), commits as
recent as Jul 20, 2026, 29k+ GitHub stars. Note: the separate
getzep/zep repo is not this candidate — it now ships only
Zep Cloud example code; Graphiti is the actual self-hostable open-source
engine.
|
getzep/graphiti |
Recommendation: Start with Letta if the goal is one persistent named persona with a simple, inspectable memory model — it's a complete self-hosted agent server, and “restart and it remembers” is the most direct real-world match to the claim. Reach for Mem0 if there's already an agent/chat stack in place and only a memory layer is needed on top. Choose Graphiti specifically when the persona needs to track changing facts over time, but budget for running and backing up a real graph database. All three make the caveat literal: the persona is data, and it is exactly as durable as the database backups protecting it.
Plays well with: Onboard AI personality (Ollama Modelfiles, SillyTavern, Open WebUI) to give a persona both a personality/voice and a durable memory, and with the local-inference runtimes from Primary interface / Core architecture (Ollama, llama.cpp, vLLM) as the model actually doing the talking.
Agrees with index.html's current
claim. Letta, Mem0, and Graphiti are all real, currently-maintained, self-hostable
projects whose entire value proposition is that a persona's continuity is stored data;
if you don't back that data up, the persona is gone, exactly as the row states.
Security & Access Control
Authorization method
index.html currently says: “Passkeys, FIDO2 hardware keys,
Bitwarden / Proton Pass — auditable end to end.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Vaultwarden | AGPL-3.0 | Unofficial, Rust-rewritten, self-hostable server implementation of the Bitwarden API — official Bitwarden apps/extensions point at your own instance instead of Bitwarden's cloud; also supports WebAuthn/FIDO2 hardware keys as a two-factor login method. | Vault data lives entirely on your own server. Caveat: passwordless login to the vault itself via passkey is not yet implemented server-side (PR #5929 was still open/unmerged as of Jul 21, 2026). | Actively maintained — latest release v1.36.0 (May 3, 2026), commits as recent as Jul 20, 2026, 64k+ GitHub stars | dani-garcia/vaultwarden |
| KeePassXC | GPL-2.0-or-later (dual GPL-2.0/GPL-3.0 per COPYING) |
Fully offline, local-first password database with a browser-extension bridge
storing/autofilling FIDO2 passkeys directly inside the encrypted
.kdbx file; supports YubiKey/OnlyKey hardware keys for
database-unlock.
|
No cloud sync of any kind unless you add your own — the most “auditable end to end” of the three in the strict sense. | Actively maintained — latest release 2.7.12 (Mar 10, 2026), commits as recent as Jul 11, 2026, 28k+ GitHub stars | keepassxreboot/keepassxc |
| Keycloak | Apache-2.0 | Self-hosted identity and access management (IAM) server — become your own OAuth2/OIDC/SAML provider for every other self-hosted app, with a built-in WebAuthn engine supporting passkeys as both first-factor and second-factor. | Central, inspectable audit logs of every authorization event across a whole self-hosted stack — a different kind of “auditable end to end” than a password manager provides. | Actively maintained — latest release 26.7.0 (Jul 9, 2026), commits as recent as Jul 21, 2026, 35k+ GitHub stars | keycloak/keycloak |
Recommendation: Start with Vaultwarden — it's the lowest-friction option and covers “Bitwarden” directly, with the one honest caveat that logging into the vault itself via passkey is still an open PR, not shipped. Reach for KeePassXC instead if “auditable end to end” needs to mean literally zero network dependency. Add Keycloak on top of either once there's more than one self-hosted service to protect — the closest real analog to a ship-wide command-code system.
Plays well with: Vaultwarden and KeePassXC are both password/passkey stores, not identity providers — either can hold the credentials a person uses to reach a Keycloak-protected login screen, and Keycloak in turn can be the OIDC provider in front of self-hosted apps like Primary interface's Open WebUI. All three are independent of model/inference choice.
Agrees with index.html's current
claim. Passkeys, FIDO2 hardware keys, and self-hosted Bitwarden-compatible vaults are
real, current, and (with a self-hosted server) genuinely auditable end to end; the one
nuance is that this is strongest for KeePassXC (no server at all) and weakest for
Vaultwarden's own login flow specifically.
Hostile takeover incidents (logged)
index.html currently says: “Same prompt-injection problem, and
you're your own security team — but the attack surface is inspectable.”
Reinterpreted row: there is no real-world “hostile takeover
incident log” analogous to a starship being boarded. The honest real-world
analog is home-lab/network-layer intrusion detection and hardening — the
firewall, IDS/IPS, and log-based threat-detection tooling a self-hoster actually runs
to notice and stop unauthorized access to their own infrastructure. The candidates
below are evaluated against that real practice, not a literal takeover log.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| OPNsense | BSD-2-Clause | Full self-hosted firewall/router OS (hardened, actively-developed FreeBSD-based fork of the pfSense lineage) run as the edge device in front of a home network; can host Suricata as an in-line IDS/IPS plugin directly. | One codebase under one open license with no free/paid feature split — a single auditable choke point for inbound/outbound traffic. | Actively maintained — twice-yearly major-release cadence, current series 26.7 with point release 26.7.1 | opnsense/core |
| Suricata | GPL-2.0 | Network intrusion detection/prevention engine (IDS/IPS) inspecting live traffic against signature rulesets (e.g. community Emerging Threats), logging matches or actively dropping flagged packets in inline IPS mode. | Every rule match is a plain, greppable log line — the actual “inspectable attack surface” a self-hoster gets in place of a fictional takeover log. | Actively maintained by the nonprofit OISF — latest release suricata-8.0.6 (Jul 7, 2026), commits as recent as Jul 10, 2026 | OISF/suricata |
| CrowdSec | MIT | Log-based threat-detection engine (a modernized, crowdsourced answer to fail2ban) that tails service logs, matches behavioral “scenarios” to spot brute-force/scan/exploit patterns, and hands off enforcement to pluggable “bouncers.” | Opt-in community blocklist (10M+ contributed malicious IPs as of mid-2026) — about as close as the real world gets to a shared “hostile takeover” log. | Actively maintained — latest release v1.7.8 (May 11, 2026), commits as recent as Jul 21, 2026, 14k+ GitHub stars | crowdsecurity/crowdsec |
Recommendation: Layer all three rather than picking one: OPNsense as the perimeter firewall, Suricata (bundled or standalone) watching the wire for known attack signatures, and CrowdSec tailing application/service logs to catch brute-force and scan behavior a signature-based IDS alone would miss. None of these produce anything like a “confirmed boarding” count — what a self-hoster actually gets is a stream of blocked-IP and rule-match log entries they have to review themselves.
Plays well with: CrowdSec and Suricata both benefit from being fed logs/traffic from whatever else is self-hosted elsewhere in this project (reverse proxies, SSH daemons, the local-LLM web UIs from Primary interface), and both can run natively on or alongside an OPNsense box. None of the three are specific to AI/LLM tooling.
Disagrees with index.html's current
claim, taken literally. The claim is about AI agent security, and there is no real
“hostile takeover incident log” to compare it against for a self-hosted
setup, fictional or otherwise. The genuinely real practice available today is
network/log-based intrusion detection and hardening (OPNsense, Suricata, CrowdSec)
— a different, narrower, and answerable problem than “has my system been
taken over,” but the self-hoster genuinely is their own security team, and the
tooling above is what makes the attack surface inspectable rather than a black box.
Secure device networking
Bonus row, not on the pricing table: Authorization method covers who's allowed in, and Hostile takeover incidents covers watching the perimeter for attackers — neither answers how the Fairphone in your pocket actually reaches the TrueNAS/Ollama box at home once you've left the building. Personal communicator's Signal pick encrypts chat, not this. This row is that missing transport layer.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Headscale | BSD-3-Clause | A self-hosted, open-source reimplementation of Tailscale's coordination server — the official Tailscale client (which uses WireGuard as its underlying data-plane protocol) on every device connects to a control plane you run yourself instead of Tailscale's cloud, forming a private mesh network with MagicDNS, subnet routing, and exit nodes. Plain WireGuard clients don't speak the coordination protocol and can't connect to a Headscale server directly. | The actual encrypted traffic between devices is always WireGuard, point-to-point; self-hosting the coordination server too means no third party ever brokers peer discovery for this household's devices. | Actively maintained — v0.29.2 (Jul 1, 2026), repo pushed same-day as this research (Jul 21, 2026), 41.9k+ stars | juanfont/headscale |
| Tailscale | Client is BSD-3-Clause and open source; the hosted coordination server itself is closed, proprietary SaaS | The zero-config on-ramp to the same WireGuard-based mesh — install on every device, sign in, and it just connects. Tailscale's own servers handle peer discovery and NAT traversal, and a direct connection is the normal case; when NAT traversal fails, traffic falls back to Tailscale's DERP relay servers — still end-to-end WireGuard-encrypted, so DERP relays ciphertext it can't read, but it is a third party in the path in that fallback case. | Genuinely end-to-end encrypted device-to-device, but peer discovery trusts Tailscale's infrastructure — the exact trade-off Headscale exists to remove. | Actively maintained — client v1.98.9 (Jul 20, 2026), repo pushed Jul 21, 2026, 5M+ active devices reported in 2026 | tailscale.com/opensource |
| WireGuard (plain, no coordination server) | GPL-2.0 (wireguard-tools) |
The kernel-level protocol Headscale and Tailscale both build on, used directly — hand-configured peers and keys, no control-plane software at all, the minimum possible trusted-third-party surface. | Nothing to self-host and nothing to trust beyond the devices themselves, but no NAT traversal or MagicDNS convenience either — every peer and IP is manually managed. |
Actively maintained — wireguard-tools repo pushed May 6,
2026
|
WireGuard/wireguard-tools |
Recommendation: Start with Headscale — it gets Tailscale's actual day-to-day convenience (MagicDNS, exit nodes, works through most NATs) while keeping the one piece that matters for this project's whole premise, the coordination server, on hardware in the house. Tailscale itself is the right call only for readers who've decided the peer-discovery trust trade-off is acceptable in exchange for zero maintenance. Drop to plain WireGuard only if the household is small and static enough that manual peer configuration isn't a burden.
Plays well with: Compute core hardware — Headscale's coordination server is one more service that runs on the same box as TrueNAS and Ollama, and once it's up, every device on the mesh (the Fairphone, the Framework laptop) can reach Open WebUI/oterm and Nextcloud/TrueNAS exactly as if it were on the home LAN, from anywhere.
Reverse proxy & TLS
Bonus row, not on the pricing table: Authorization method puts Keycloak “in front of Open WebUI and any other dashboard,” and Secure device networking gets your devices onto the same mesh — but nothing in either row actually terminates HTTPS, routes a hostname to the right container, or presents a single trusted certificate. Every web UI in this report is served over plain HTTP by default. This row is the layer that fixes that.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Caddy | Apache-2.0 | A reverse proxy that provisions and renews TLS certificates automatically (Let's Encrypt / ZeroSSL or an internal CA) with a two-line config per site — the lowest-effort way to put valid HTTPS in front of every self-hosted service. | Certificates and keys stay on your own host; with an internal CA it can issue trusted certs for services that never touch the public internet at all. | Actively maintained — v2.11.4 (Jun 3, 2026), 74.2k+ stars | caddyserver/caddy |
| Traefik | MIT | A container-native reverse proxy that discovers services from Docker/Compose labels and reconfigures itself live — new containers are routed and issued TLS certificates automatically, without editing a central config file. | Same self-hosted TLS termination as Caddy; the dynamic model fits a fleet of containers that come and go rather than a fixed handful of sites. | Actively maintained — v3.7.8 (Jul 15, 2026), 64k+ stars | traefik/traefik |
| Nginx Proxy Manager | MIT | A web-GUI wrapper around nginx + Let's Encrypt: add a proxy host, pick a certificate, and toggle access rules from a browser instead of a config file — the friendliest on-ramp for someone new to reverse proxying. | Self-hosted; the trade-off for the GUI is a heavier, database-backed stack than Caddy's single binary, and a slower release cadence. | Actively maintained — v2.15.1 (Jun 3, 2026), 33.6k+ stars | NginxProxyManager/nginx-proxy-manager |
Recommendation: Start with Caddy — automatic HTTPS with a near-trivial config is exactly what a home stack wants, and it removes the single most common reason self-hosters skip TLS entirely. Choose Traefik instead if the deployment is many short-lived containers and label-driven auto-discovery saves real toil. Nginx Proxy Manager is the right pick only if a browser GUI matters more than a version-controllable text config. Whichever you pick, note that Keycloak only gates apps that speak OIDC natively — for the ones that don't, add a forward-auth layer (Authelia, licensed Apache-2.0, or oauth2-proxy) at the proxy so the SSO front door actually covers them.
Plays well with: Secure device networking and Authorization method — behind Headscale, the reverse proxy is the one service every request lands on first, so it's the natural place to enforce TLS and hang forward-auth off Keycloak. It fronts every browser-facing pick in this report: Open WebUI, Nextcloud, and Uptime Kuma. It is itself deployed via Orchestration & deployment.
DNS & network-level filtering
Bonus row, not on the pricing table: Secure device networking's Headscale gives you MagicDNS across the mesh, but that only names devices on the tailnet. Nothing in the report resolves names for the home LAN, blocks ads and tracker/telemetry domains network-wide, or lets you avoid handing every DNS query to a public upstream resolver. This row is that piece.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Pi-hole | EUPL-1.2 |
A network-wide DNS sinkhole: every device's DNS points at it,
ad/tracker/malware domains are answered with nothing, and everything else is
forwarded — plus local DNS records so nas.home resolves on
the LAN.
|
Query logging is local and optional, and blocking telemetry domains at the DNS layer stops a lot of passive tracking before it leaves the network. | Actively maintained — v6.4.3 (Jul 6, 2026), 60k+ stars | pi-hole/pi-hole |
| AdGuard Home | GPL-3.0 | A single-binary equivalent to Pi-hole with encrypted upstream resolution (DoH/DoT/DoQ) and per-client rules built in, configured entirely from its own web UI. | Built-in encrypted-upstream support means outbound DNS itself can be private, not just filtered; all logs and config stay on your host. | Actively maintained — v0.107.78 (Jul 13, 2026), 35.6k+ stars | AdguardTeam/AdGuardHome |
| Unbound | BSD-3-Clause | A validating, recursive resolver: instead of forwarding to Google/Cloudflare, it resolves queries from the root servers itself, so no third-party resolver ever sees your full query stream. | The most private posture of the three — run it behind Pi-hole/AdGuard Home and no external resolver is trusted at all, at the cost of slightly slower cold-cache lookups. | Actively maintained by NLnet Labs — 1.25.1 (May 20, 2026) | NLnetLabs/unbound |
Recommendation: Start with Pi-hole — it's the ubiquitous choice, covers network-wide blocking and local LAN records in one place, and has the deepest community documentation. Choose AdGuard Home instead if you want encrypted upstream resolution and per-client policies without bolting on extra pieces. Add Unbound behind either one when “only you hold the keys” should extend to DNS too: a Pi-hole + Unbound pair depends on no public resolver at all.
Plays well with: Secure device networking — Headscale's MagicDNS handles names on the mesh while this handles the LAN and egress filtering, and the two compose cleanly (point the tailnet's global nameserver at Pi-hole). It also complements Hostile takeover incidents: DNS-level blocklists cut off command-and-control and telemetry domains that packet-inspecting IDS/IPS would only see after the connection opens. Deployed via Orchestration & deployment.
Reliability & Support
Self-repair capability
index.html currently says: “The system can't fix itself, but you
can — schematics, parts, and source are all published.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Framework Computer (Laptop 13 / Laptop 16) |
Hardware design files released openly per-repo (FrameworkComputer/Framework-Laptop-13
= CC-BY-4.0; the real EmbeddedController firmware branches carry a
BSD-3-Clause-style “Chromium OS Authors” license)
|
A laptop vendor built around modularity: standard screws, swappable expansion cards, and mainboard schematics published publicly. Every FRU (battery, screen, mainboard, keyboard) is sold directly at transparent prices with a free step-by-step repair guide. | The closest real match to “schematics, parts, and source are all published” for a piece of hardware you'd actually buy today. | Actively maintained — EmbeddedController pushed Jun 25, 2026, Framework-Laptop-13 repo pushed Jul 14, 2026, Laptop 13 Pro launched Apr 22, 2026 | github.com/FrameworkComputer |
| iFixit | Guide/wiki content CC BY-NC-SA 3.0 | The reference repair-documentation resource: free, crowd-editable teardown and repair guides for essentially any consumer device, plus a parts marketplace and community answers forum. | The “source are all published” analog for devices that don't ship their own official schematics — someone in the community has usually reverse-engineered and documented the repair path anyway. | Actively operating — July 2026-dated editorial content live, 160,922+ free guides, 246,412+ community-contributed solutions | ifixit.com |
| PINE64 | Schematics released openly per device (PDF/KiCad on the docs wiki) | A community-driven hardware maker (PinePhone, PineTime, PineBook, dev boards) that publishes full schematics and encourages third-party modification and repair, with community chat bridged across Discord/IRC/Matrix/Telegram. | Openness is if anything more total than Framework (schematics for niche devices few vendors would ever publish), but device support cadence is slower and repair falls almost entirely to the community. | Active open-hardware community — GitHub org repos pushed within the research window, community blog's most recent post May 18, 2026 | pine64.org |
Recommendation: Start with Framework if buying new: it's the only one of the three that is itself a vendor selling the exact parts and schematics the claim describes, at real consumer prices, with an official repair guide for every part. Keep iFixit as the go-to for anything you already own that wasn't designed this way. Treat PINE64 as the “as-open-as-it-gets” option for readers who want hardware with zero vendor lock-in and are willing to trade some polish and support responsiveness for it.
Plays well with: Ship terminal / console hardware — both rows independently rank Framework Computer's Laptop 13/16/Desktop line as their #1 pick, for two different reasons (that row: modular/repairable daily driver; this row: schematics/parts/EC-firmware openly published). A reader who picks Framework for one gets the other for free. PINE64 also overlaps with Handheld sensor device — a repairable body is only half the story if the internals (SBCs, displays, batteries) aren't also documented. iFixit's documentation is generic reference material that applies regardless of which hardware picks a reader makes elsewhere in this report.
Agrees with index.html's current
claim. The caveat framing is accurate: none of these projects make hardware
self-repairing or self-diagnosing, they simply guarantee that a human doing the repair
has schematics, parts, and documented procedure, which is exactly what the claim says.
Uptime (malfunction-free episodes)
index.html currently says: “Your homelab, your SLA — exactly
as good as your backups.” Reinterpreted row: there is no
real-world “malfunction-free episode” percentage for a self-hosted stack.
The honest real-world analog is the self-healing/monitoring practice a self-hoster
actually runs to keep uptime high and notice failures fast — status/uptime
monitoring, heartbeat/dead-man's-switch checks for scheduled jobs, and
auto-restart/auto-remediation tooling for containers. The candidates below are
evaluated against that practice, not a literal malfunction-free-episode count.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Uptime Kuma | MIT | Self-hosted status-page and uptime monitor: pings HTTP(S)/TCP/DNS/Docker- container targets on an interval, shows a public or private status page, and fires notifications (email, ntfy, Discord, etc.) on downtime. | The direct open-source analog to a commercial “SLA” page — the most widely deployed tool for the “notice it broke” half of self-hosted reliability. | Actively maintained — latest release v2.4.0 (May 31, 2026), 89,354+ GitHub stars, repo pushed Jul 21, 2026 | louislam/uptime-kuma |
| Healthchecks.io (self-hosted) | BSD-3-Clause | Dead-man's-switch / heartbeat monitor for scheduled jobs (cron, systemd timers, backup scripts): each job pings a unique URL on success, and Healthchecks.io alerts you when a ping is late or missing. | Covers “did last night's backup job actually run” — directly relevant given the claim's own “exactly as good as your backups” framing. | Actively maintained — latest tag v4.3, repo pushed Jul 21, 2026 | healthchecks/healthchecks |
| nicholas-fedor/watchtower (community fork of Watchtower) | Apache-2.0 | Automatically watches running Docker containers for new image versions and redeploys them, which combined with a container's own restart/healthcheck policy gets close to an auto-remediation pattern. |
The original containrrr/watchtower was archived by its maintainer
Dec 17, 2025 and is unmaintained; this fork is the actively-maintained,
drop-in-compatible replacement the self-hosting community migrated to.
|
Actively maintained — latest release v1.19.0 (Jun 30, 2026), repo pushed Jul 21, 2026, 4,071+ stars | nicholas-fedor/watchtower |
Recommendation: Run Uptime Kuma first — it's the lowest-effort,
highest-visibility piece and covers the “is anything down right now”
question the claim gestures at. Add Healthchecks.io specifically to watch backup/cron
jobs, since silent backup failure is the actual risk the claim calls out and a
service-uptime monitor alone won't catch it. Treat nicholas-fedor/watchtower as
optional and lower-priority — if adopting it, use the fork, not the archived
containrrr/watchtower.
Plays well with: All three assume something is already self-hosted to monitor — they pair with whichever storage/processing stack a reader runs from Storage medium and the AI/model-serving stack from Core architecture. Healthchecks.io in particular is only useful once a reader has scheduled backup jobs to watch, so it depends on a real backup routine existing first.
Agrees, with reinterpretation, with
index.html's current claim. There's no real percentage to compare against
a fictional malfunction-free-episode figure, but the claim's underlying point
(“your homelab, your SLA — exactly as good as your backups”) is
accurate: a self-hoster's real uptime is a direct function of the monitoring and
backup discipline they build themselves, not a vendor guarantee.
Support channel
index.html currently says: “You are the chief engineer
— plus forums, Matrix rooms, and GitHub issues.”
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| r/selfhosted (Reddit) | N/A — community forum | The largest general-purpose self-hosting community: troubleshooting threads, software recommendations, and “what would you run for X” discussions, with heavy day-to-day traffic. | The direct real-world equivalent of “you are the chief engineer” — no vendor support line, but a large peer community to ask instead. | Active — ~804,000 members, +243k members in the past year (+43.4%) | reddit.com/r/selfhosted |
| Home Assistant Community Forum | N/A — Discourse-based support forum | A large, project-specific Discourse forum for Home Assistant users covering integrations, automations, and hardware troubleshooting, with well over 100,000 topics accumulated across categories. | Representative of the “official-adjacent forum” pattern many self-hosted projects rely on instead of paid support. | Active — confirmed live topic activity on the research date itself | community.home-assistant.io |
| LinuxServer.io Discord | N/A — chat-based support community | The primary live-chat support channel for LinuxServer.io's widely-used Docker container images (Sonarr, Radarr, Plex-adjacent tooling, etc.), with dedicated per-app support channels. | Chosen over LinuxServer.io's own Discourse forum specifically because the forum shows no recent activity while the Discord and the underlying project both do. | Active — ~41,463 members, ~7,011 online (Dec-2025 tracker snapshot, corroborated by the LinuxServer.io GitHub org remaining highly active in 2026) | discord.com/invite/linuxserver |
Recommendation: Start with r/selfhosted for general “what should I run” and troubleshooting questions — it has the widest reach and fastest response for common problems. Use a project-specific forum like Home Assistant's Discourse once you've committed to a specific piece of software and need deep, searchable history on that project's quirks. Reach for a Discord like LinuxServer.io's when you need real-time back-and-forth on a live problem — but verify the specific community you land in is still the active one for that project.
Plays well with: These are general-purpose human support channels that apply regardless of which specific software picks a reader makes across the other seven groups in this report — r/selfhosted and Home Assistant's forum in particular will have existing threads on almost any project named elsewhere in this research (Uptime Kuma, Open WebUI, Immich, etc.), so they're a first stop for troubleshooting any of this project's other recommendations.
Agrees with index.html's current
claim. “You are the chief engineer — plus forums, Matrix rooms, and GitHub
issues” is an accurate summary of self-hosted support reality: there's no vendor
on-call engineer, but large, currently-active peer communities genuinely substitute
for one, which is exactly what the claim says.
Observability — metrics & logs
Bonus row, not on the pricing table: Uptime's Uptime Kuma answers “is it up?” — but not “why is inference slow tonight?”, “is the ZFS pool filling up?”, or “what did the firewall actually block?” Also, OPNsense, Suricata, and CrowdSec emit a stream of security logs that, as that row admits, a self-hoster “has to review themselves” — with nothing aggregating or correlating them. This row is the metrics-and-logs layer that closes both gaps.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Netdata | GPL-3.0-or-later | Zero-configuration, per-second metrics for a node the moment it's installed: CPU, memory, disk, network, and auto-detected apps (Docker, ZFS, Nginx) on a live dashboard, with alerting built in. | Can run fully self-hosted with its cloud features disabled, so all telemetry stays on the box — the lowest-effort way to get real visibility. | Actively maintained — v2.10.4 (Jul 15, 2026), 79.7k+ stars | netdata/netdata |
| Prometheus + Grafana | Apache-2.0 (Prometheus) / AGPL-3.0 (Grafana) | The standard metrics stack: Prometheus scrapes and stores time-series from every service's exporter, Grafana renders dashboards and fires alerts — real retention, history, and cross-service correlation, not just a live view. | Entirely self-hosted; both the metrics database and the dashboards live on your own infrastructure with no external dependency. | Actively maintained — Prometheus v3.13.1 (Jul 10, 2026), Grafana v13.1.1 (Jul 21, 2026) | prometheus/prometheus |
| Wazuh | GPL-2.0 | A self-hosted SIEM/XDR platform that ingests, parses, and correlates logs from hosts and security tools (Suricata, CrowdSec, SSH, the firewall) into searchable alerts — the actual answer to “something needs to read these security logs.” | Runs on your own hardware; turns the raw log stream the Hostile-takeover row leaves the operator to eyeball into correlated, rule-scored events. | Actively maintained — v4.14.6 (Jul 3, 2026), 16.2k+ stars | wazuh/wazuh |
Recommendation: Start with Netdata — it's the highest insight-per-minute-of-setup of anything here, and on a single-box homelab it may be all the metrics you need. Graduate to Prometheus + Grafana once you want retention, historical dashboards, and unified alerting across several machines (add Grafana Loki, AGPL-3.0, for logs into the same Grafana). Add Wazuh specifically for the security-log half of the problem: it's the SIEM that turns Suricata/CrowdSec/OPNsense's review-it-yourself log stream into correlated, searchable alerts.
Plays well with: Uptime — Uptime Kuma answers up/down, this answers why and since when. Wazuh in particular is the missing correlation layer over Hostile takeover incidents's logs, and Netdata's ZFS and Docker collectors watch exactly the TrueNAS pool and container runtime that everything else in this report runs on.
Power & UPS
Bonus row, not on the pricing table: this whole report's premise is that your data lives on hardware you own — and a ZFS pool that loses power mid-write, with no clean shutdown, is exactly how you lose the data the “only you hold the keys” theme is built to protect. Nothing anywhere else in the report handles graceful shutdown on power loss. This row is that safeguard.
| Project | License | What it does | Privacy stance | Status | Source |
|---|---|---|---|---|---|
| Network UPS Tools (NUT) | GPL-2.0-or-later | The multi-vendor standard: one machine talks to the UPS over USB/serial/SNMP and shares its status over the network, so every box on the shelf shuts down cleanly when the battery runs low — not just the one the UPS is plugged into. | Fully local; the entire power-monitoring loop runs on your own network with no vendor cloud in the path. | Actively maintained — v2.8.5 (Apr 3, 2026) | networkupstools/nut |
| apcupsd | GPL-2.0 | A simpler, single-daemon monitor focused on APC (and some compatible) units — less flexible than NUT for mixed or networked setups, but easy to point at one directly-attached APC UPS. | Local-only, like NUT. Caveat: development is effectively frozen — the last stable release (3.14.14) dates to 2016, so treat it as stable-but-unmaintained rather than actively developed. | Stable but dormant — last release 3.14.14 (2016) | sourceforge.net/projects/apcupsd |
| NUT, as bundled in TrueNAS / Home Assistant | GPL-2.0-or-later (same NUT) | Not a separate project: both this report's recommended NAS (TrueNAS) and Home Assistant ship NUT integrations, so on the stacks below this is usually a service to enable and a client to point at it, not a new install. | Same all-local posture as standalone NUT; the value is that the box you already run is both the UPS master and the thing most worth protecting. | Ships with TrueNAS Community Edition and Home Assistant — tracks their release cadence | truenas.com/docs |
Recommendation: Use NUT — one UPS signalling every box on the network to shut down cleanly is exactly the coordination a multi-machine homelab needs, and it's the only option here that isn't vendor-locked or dormant. Reach for apcupsd only for a single directly-attached APC unit where its simpler setup outweighs its stalled development. In practice, if you took this report's TrueNAS pick, NUT is already there — enable its UPS service and this row is mostly done.
Plays well with: Compute core hardware and Storage medium — it's what protects the ZFS pool and any in-flight writes on the always-on box, and it turns a yanked-power event (the classic cause of a failed pool import) into a non-event. It's the physical-world complement to Processing redundancy: RAID and backups protect against disk failure, a UPS protects against the power failure that can cause it.
Reference Stacks & Compatibility Matrix
Stack 1: Home Assistant-centric smart home
The hub is Home Assistant Core with the Assist voice pipeline (Primary interface): wake-word detection, faster-whisper speech-to-text, the Assist conversation agent,
and Piper text-to-speech, wired together over the local network via the open
Wyoming protocol. The actual smart-home devices reach Home Assistant
over open local protocols rather than a vendor cloud: Zigbee bulbs
and sensors via a coordinator and Zigbee2MQTT (or the built-in ZHA integration),
Matter-over-Thread devices via a Thread border router, and DIY
ESP32/sensor nodes over MQTT — so the “ambient
computer” has a nervous system, not just a voice. Assist's conversation agent
calls out to a local model server — Ollama (Core architecture) — over its OpenAI-compatible HTTP API, serving
Qwen3.6-27B (Natural language processing) as
the default self-hostable, single-consumer-GPU model. That same Ollama instance holds
the household's Onboard AI personality (Onboard AI personality) via a Modelfile SYSTEM directive, so the voice assistant, the persona,
and the model are one running process, not three. Open WebUI layers
on top as the shared browser front end for family members (also
Primary interface), inheriting the same backend.
For “hands doing things, not just talking,” CrewAI (Autonomous decision-making) orchestrates multi-step home-automation tasks against the same local model, wrapped
in NeMo Guardrails (Known sentience risk / guardrails) as the runtime policy layer — since nothing in CrewAI's open core stops it
from calling a destructive tool, guardrails are the operator-supplied safety net the
row's own honest framing calls for. whisper.cpp + Argos Translate (Universal translator) hangs off the same Wyoming/local-network pattern for translating incoming speech
before Assist ever sees it. The household runs
TrueNAS Community Edition (Storage medium) on top of a Framework Desktop (Compute core hardware) as the box underneath all of this — HA's config, Open WebUI's chat/RAG
storage, and Ollama's model weights all live on the same ZFS-backed volume, on the
same physical machine — and Keycloak (Authorization method) sits in front of Open WebUI and any other self-hosted dashboard as a single
WebAuthn/FIDO2 SSO login, rather than a separate password per app. Underneath all of
it, every service here is a container brought up by
Docker Compose (Orchestration & deployment), fronted by Caddy (Reverse proxy & TLS) so each dashboard is reached over real HTTPS rather than plain HTTP, with
Pi-hole (DNS & network-level filtering)
serving LAN names and blocking tracker domains, and a NUT-managed UPS
(Power & UPS) standing by to shut the box down
cleanly if the power drops. Netdata (Observability) gives per-second visibility into the host, while Uptime Kuma (Uptime) pings HA's own health endpoint and the Ollama server; when something breaks, the
fallback is r/selfhosted and the
Home Assistant Community Forum
(Support channel).
Stack 2: Mobile / daily-driver privacy
The phone is a Fairphone 6 (Personal access device) running /e/OS (Personal communicator) — the same hardware/software pairing both rows independently converge on, since /e/OS is Murena's stock build for that device. Messaging and calls run over Signal, whose AGPLv3/GPLv3 client and protocol keep both the transport and the crypto auditable end to end — the Signal Protocol's double-ratchet key exchange is the actual “E2E-encrypted” mechanism the pricing table's claim gestures at. Credentials for everything else — Wi-Fi, self-hosted service logins, any passkeys the phone holds for third-party sites — live in Vaultwarden (Authorization method), an unofficial Rust reimplementation of the Bitwarden API that the phone's Bitwarden app talks to over the household's own server instead of Bitwarden's cloud; WebAuthn/FIDO2 hardware keys back up the vault unlock itself. Files sync to Nextcloud Hub's folder-level end-to-end encryption (Storage medium) — chosen over Proton Drive here specifically because Nextcloud's server is one you run, keeping the “only you hold the keys” property intact for the mobile-daily-driver use case rather than trusting Proton's (open-client, closed-server) infrastructure. Reaching any of this — Vaultwarden, Nextcloud, Open WebUI — from outside the house runs over Headscale (Secure device networking): the phone joins the same self-hosted WireGuard mesh as every other device in this project, so “self-hosted” doesn't quietly become “only reachable on the home Wi-Fi.” On that mesh every request first lands on the household's Caddy reverse proxy (Reverse proxy & TLS), so the phone always talks HTTPS to a valid certificate rather than dismissing a self-signed warning, and the phone's DNS points at Pi-hole (DNS & network-level filtering), so ad and tracker domains are sinkholed network-wide — on the home Wi-Fi and, via the tailnet's global nameserver, when the phone is out in the world too. A Framework Laptop (Ship terminal / console hardware) is the pairing/flashing workstation for the phone — ADB, /e/OS updates, and Vaultwarden's desktop client all run from it — and its own repairability (Self-repair capability) mirrors the phone's user-replaceable-battery ethos. When something needs fixing or explaining, the fallback is the same r/selfhosted/Matrix-room community (Support channel) as Stack 1.
Stack 3: Self-hosted AI & local-LLM
The model layer is Qwen3.6-27B (Natural language processing), a 27B-parameter dense multimodal model chosen specifically because it fits on one
consumer GPU and its multimodal support covers the vision-agent use case below without
a second model. It's served by Ollama (Core architecture) as a GGUF-quantized local endpoint speaking an OpenAI-compatible HTTP API —
the same endpoint every other tool in this stack points at, so there is one model
server, not several. That same Ollama instance carries the household's persona via a
Modelfile SYSTEM directive (Onboard AI personality) — the identical mechanism Stack 1 uses, reused rather than reinvented, since
it's the same Ollama install either way. The day-to-day human interface to it is
oterm (Primary interface), a
terminal client built specifically to talk to Ollama and other OpenAI-compatible local
servers with no browser or web server required, matching this stack's no-GUI-overhead
ethos better than Open WebUI's browser front end does. All of it — the model
weights, oterm's local SQLite chat history, and Letta's memory database (below)
— lives on TrueNAS Community Edition (Storage medium) running on the same Framework Desktop (Compute core hardware) as Stack 1, whose OpenZFS layer (Processing redundancy, below) actually protects it — one physical machine, shared by both stacks,
not a separate box per use case. Every piece of that service set — Ollama,
oterm, the agent stacks below, and Letta's Postgres — is brought up by
Docker Compose or, for OpenHands' agent sandbox specifically,
rootless Podman (Orchestration & deployment), on a box a NUT-managed UPS (Power & UPS) can shut down cleanly before a power cut corrupts a mid-write ZFS pool, with
Netdata or a Prometheus + Grafana stack (Observability) watching GPU load and token throughput so “why is inference slow
tonight?” has an answer. CrewAI and
OpenHands (Autonomous decision-making) orchestrate agentic work — CrewAI for multi-step planning/delegation,
OpenHands specifically for real terminal/file/browser tasks — both LLM-agnostic
and both pointed at the local Ollama endpoint rather than a hosted API key. Because
neither ships a safety reviewer, NeMo Guardrails wraps the runtime as
a policy layer (blocking unsafe tool calls before they execute), while
garak and PyRIT (Known sentience risk / adjacent-real-practice row) are run offline beforehand to probe the model/agent combination for jailbreaks and
prompt-injection weaknesses the guardrails might miss. For an agent that also needs to
see and drive a screen — the Touchscreen GUI row's actual computer-use
use case (Touchscreen GUI) —
Cua provides the sandboxed virtual-desktop layer, and it's
Qwen3.6-27B's own multimodal capability (not a separate model) that gives Cua the
vision it needs. Persona continuity across restarts is handled by
Letta (Holographic crew): its
Postgres/SQLite-backed core-memory blocks are literally what makes “the
persona” survive a process restart, exactly matching the pricing table's
“persists exactly as long as your backups do” framing — which is
also why OpenZFS snapshots plus restic off-site
backups (Processing redundancy) matter here
specifically: they're what makes that survival real rather than aspirational. Though
it sits outside this stack's home-network/local-LLM focus, this same Letta-backed
persona can be given a body: see the standalone
Holodeck / holo-environments pairing below for readers who
want that persona actually populating a shared VR space.
Stack 4: Field hardware, network hardening & reliability
This stack covers the rows the first three don't reach: physical field equipment,
home-network defense, and the operational discipline that keeps any of the above
running. The field kit is built around M5Stack's modular ESP32 sensor
“Units” (thermal, environmental) for the most literal “open hardware
boards + thermal cams” match, or
HackRF One + PortaPack Mayhem for RF-scanning priority (Handheld sensor device) — both flashed and developed from the same Framework laptop
named in Stack 2 (Ship terminal / console hardware).
For sky/space work, Stellarium renders real Hipparcos/Gaia
star-survey data and ships a NavStars plugin of the 57 traditional
celestial-navigation stars, with KStars's INDI-protocol backend added
when the goal is actually pointing a telescope rather than just viewing a chart (Stellar cartography). Perimeter defense is OPNsense as the edge firewall/router,
running Suricata in-line as IDS/IPS against known attack signatures,
with CrowdSec tailing service logs (SSH, reverse proxies) and sharing
its 10M+-IP community blocklist (Hostile takeover incidents) — three layers feeding a stream of inspectable log lines rather than a
fictional boarding count. A fourth, cheaper layer sits in front of all of it:
Pi-hole with Unbound behind it (DNS & network-level filtering) resolves the whole network's queries recursively — no public upstream
resolver trusted — and sinkholes command-and-control and telemetry domains at
the DNS layer, before a connection the packet-inspecting IDS would only catch
mid-flight ever opens. Stack 2's Headscale mesh (Secure device networking) sits behind this same OPNsense edge — OPNsense's firewall rules still gate
which sources can even reach the coordination server's port, and CrowdSec can watch
Headscale's own application logs for abuse, but the WireGuard tunnel itself is
encrypted, so Suricata's signature-based IDS/IPS cannot inspect traffic once it's
inside that tunnel. Uptime Kuma watches service availability and
Healthchecks.io watches whether scheduled backup jobs actually ran
(Uptime) — watching, not owning, Stacks 1 and 3's own
Storage medium and Processing redundancy picks (TrueNAS, OpenZFS, restic), since
neither protects anyone who silently stopped running them, and Stack 4 doesn't
introduce a separate storage or redundancy architecture of its own to replace them.
The logs those three security layers emit don't review themselves:
Wazuh (Observability) ingests
OPNsense, Suricata, and CrowdSec output into one correlated, searchable SIEM —
the “something has to actually read these” piece the Hostile-takeover row
leaves to the operator — with Netdata or
Prometheus + Grafana watching host and service metrics alongside it.
A NUT-managed UPS (Power & UPS)
signals every box on the network to shut down cleanly on power loss, the
physical-world complement to Stacks 1/3's OpenZFS-and-restic discipline, and the whole
assembly rides on Proxmox VE (Orchestration & deployment) as the hypervisor beneath the shared box — and the reverse proxy CrowdSec is
already tailing is the Caddy/Traefik layer from the
security group. When self-repair is needed, Framework's published
schematics/EC firmware and iFixit's crowd-documented repair guides
(Self-repair capability) cover,
respectively, the report's own hardware picks and everything else a household owns.
r/selfhosted, project-specific Discourse forums, and Matrix/Discord
channels (Support channel) are the shared fallback
across every stack in this report, not unique to this one.
Holodeck / holo-environments (Monado + WiVRn + Hubs) doesn't fit cleanly into any of the four stacks above as a home-network, mobile-privacy, or local-LLM component — it's a standalone XR/VR runtime stack in its own right. Rather than force it into one of the four named stacks with a stretched justification, it's presented here as an independent, self-contained pairing: Monado + WiVRn for the runtime, and Hubs for the shared-space content layer — cross-linked from Stack 3's Holographic crew entry (Letta) for readers who want an AI persona actually populating a shared VR space.
Compatibility matrix
| Pricing-table row | Stack 1: Home Assistant smart home | Stack 2: Mobile / daily-driver privacy | Stack 3: Self-hosted AI & local-LLM | Stack 4: Field hardware, network & reliability |
|---|---|---|---|---|
| Primary interface | Home Assistant Assist + Open WebUI | — | oterm (terminal access to same model) | — |
| Touchscreen GUI | — | — | Cua (computer-use agent, driven by Qwen3.6-27B's multimodal capability) | — |
| Natural language processing | Qwen3.6-27B (served via Ollama) | — | Qwen3.6-27B | — |
| Ship terminal / console hardware | — | Framework Laptop (phone pairing/flashing host) | — | Framework Laptop (field-device flashing host) |
| Personal access device | — | Fairphone 6 | — | — |
| Handheld sensor device | — | — | — | M5Stack Units / HackRF One + PortaPack Mayhem |
| Personal communicator | — | /e/OS + Signal | — | — |
| Storage medium | TrueNAS Community Edition | Nextcloud Hub (E2EE folder sync) | TrueNAS (model weights, oterm chat history, Letta's memory DB) | — (monitors Stack 1/3's TrueNAS; not Stack 4's own pick) |
| Compute core hardware (bonus row) | Framework Desktop (shared with Stack 3) | — | Framework Desktop (shared with Stack 1) | — |
| Core architecture | Ollama | — | Ollama | — |
| Processing redundancy | — | — | OpenZFS snapshots + restic (backing Letta's memory DB) | — (monitors Stack 3's OpenZFS/restic; not Stack 4's own pick) |
| Onboard AI personality | Ollama Modelfile SYSTEM directive |
— |
Ollama Modelfile SYSTEM directive (same instance as Core
architecture)
|
— |
| Autonomous decision-making | CrewAI | — | CrewAI / OpenHands | — |
| Known sentience risk | NeMo Guardrails | — | NeMo Guardrails + garak/PyRIT | — |
| Holodeck / holo-environments | — | — | — | — |
| Holographic crew | — | — | Letta | — |
| Authorization method | Keycloak (SSO front door) | Vaultwarden | — | — |
| Hostile takeover incidents (logged) | — | — | — | OPNsense + Suricata + CrowdSec |
| Secure device networking (bonus row) | — | Headscale (phone reaches home services remotely) | — | Headscale coordination server, behind OPNsense |
| Universal translator | whisper.cpp + Argos Translate | — | — | — |
| Stellar cartography | — | — | — | Stellarium + KStars |
| Self-repair capability | — | Framework Laptop repairability | — | Framework + iFixit |
| Uptime (malfunction-free episodes) | Uptime Kuma | — | — | Uptime Kuma + Healthchecks.io |
| Support channel | r/selfhosted + HA Community Forum | r/selfhosted | — | r/selfhosted + project Discourse/Discord |
| Orchestration & deployment (infra bonus row) | Docker Compose | — | Docker Compose / Podman (shared box) | Proxmox VE (host for the shared box) |
| Reverse proxy & TLS (infra bonus row) | Caddy (fronts Open WebUI + dashboards) | Caddy (household proxy, reached over the mesh) | — (oterm is terminal-only, no browser front end) | Caddy/Traefik (Stack 1's shared proxy; CrowdSec tails its logs) |
| DNS & network-level filtering (infra bonus row) | Pi-hole (LAN DNS + blocking) | Pi-hole (phone DNS, on- and off-LAN via the tailnet) | — | Pi-hole + Unbound (network-wide) |
| Observability — metrics & logs (infra bonus row) | Netdata + Uptime Kuma | — | Netdata / Prometheus + Grafana | Wazuh SIEM + Netdata / Prometheus + Grafana |
| Power & UPS (infra bonus row) | NUT (TrueNAS UPS service) | — | NUT (same box, protects ZFS pool) | NUT (network-wide clean shutdown) |