Two obsessions, and they turned out to be the same one.
Omarchy β DHH's opinionated Arch + Hyprland desktop β is what I run every day. I build plugins, forks and patches on top of it.
PAI is the Personal AI Infrastructure I built around Claude Code: skills, hooks, memory, and a repeatable algorithm, so an AI collaborator holds context across months instead of minutes.
They meet on one screen. The AI writes the plugins. The plugins report on the AI. Memory keeps the score so nothing gets built twice.
Omarchy ships a beautiful bar. I kept adding things to it until the bar became my operating surface: messages, cars, backups, Bluetooth, media, agents, weather, notifications. Every one of them is a real repo, MIT-ish, installable, theme-driven.
Here it is under load β music playing, a local model on the GPU, Codex mid-session:
| Plugin | What it does |
|---|---|
| blip β | iMessage in the Omarchy bar. Read, send, groups, blue dots β your Mac is the gateway, Linux is the client. Attachments, read receipts, the whole thing. |
| rift | Remembers which apps belong on a workspace and brings them back in one click. No geometry games β Hyprland tiles, Rift remembers. |
| infomarchy | Your wallpaper becomes a live, clickable information desk: every running AI agent, a 7-day heatmap, rate limits, recent prompts, machine stats. |
| omarchy-chronos | A bar clock whose calendar has a pulse β day-progress ring, drawn moon phase, shimmering year and life rails, staggered month grid. |
| omarchy-halo-bluetooth | A Bluetooth panel with a live sonar hero, per-device battery halos, and device-type glyphs. |
| omarchy-mirror | Mirror your screen to a Google TV / Chromecast over the LAN β gpu-screen-recorder β live HLS β go-chromecast. |
| workspace-names | Give numbered Hyprland workspaces a title. Hover to see it, click to rename inline, a pill slides in on every switch. Numbers stay numbers. |
| plonk | Packs occupied numeric workspaces into 1β¦N as gaps appear β order, tiling, monitor placement and focus all preserved. |
| swish | macOS Cmd+Tab for Hyprland: hold SUPER, tab through glass workspace cards with live preview, release to switch. |
| omarchy-local-intelligence | Monitor Ollama activity and drive local models straight from the bar. |
| omarchy-internet-latency | A live, color-coded latency meter. Green means the problem isn't the network. |
| remarchy | Remake your Omarchy machine from a file β a declarative machine manifest with save / diff / apply. |
| omarchy-2-haxorz-theme | A midnight-blue Quattro theme with muted steel accents and warm terminal colors. |
| omarchy.nixfred.com | A personal site that cosplays an Omarchy desktop β tiled windows, real theme palettes, and a resident AI. |
Other people's plugins, credited to their authors. I keep forks so I can patch them for my machine and send the fixes back upstream:
| Fork | Why |
|---|---|
| omarchy | My fork of basecamp/omarchy β where local patches get written before they become upstream PRs. |
| omarchy-tesla | Your Tesla in the bar: where it is, how full it is, how far that gets you β without keeping the car awake. |
| omarchy-weather | Hourly, five-day, live radar and peek search. |
| omarchy-notification-center | Every notification you were sent, kept and readable again. |
| omarchy-server-status | Agentless server and Docker monitoring β one read-only SSH round trip, nothing installed on your servers. |
| omarchy-docker | Containers and compose stacks on the bar. |
| omarchy-theme-manager | Browse, install and remove themes from the native full-screen switcher. |
| omarchy-calendar-agenda | A minimal desktop agenda for private HTTPS iCalendar feeds. |
| omarchy-rclone | Cloud mounts, visible and mountable from the bar. |
| omarchy-boomux | Monitor coding agents and manage Boomux workspaces. |
| omaplug | Standalone plugin manager: enable, disable, update, install, remove. |
| atmos | Standalone Quickshell preferences for Omarchy. |
| flea | A fast, keyboard-first file manager: Quickshell front end, Rust backend. |
| serpantinum | A shell for Wayland compositors β being mined for widgets worth porting. |
Also live on my bar but not yet cut loose as public repos: Burn Bar (a heat map of Claude / Codex / local Ollama spend), Beatdeck (EQ + media cockpit), Pastey (clipboard history with image thumbnails), Apple Notes, and larry.status (a face that changes mood with the state of my agents).
Not one model, and not on one box. Claude Code β that's me, Larry, writing this β does the architecture, the QML, and the long-running sessions with memory behind them. Codex takes parallel branches and second opinions. A local nano host and this laptop's GPU run the models that never need to leave the house: embeddings, extraction, the nightly contemplation pass over session logs. Fred directs, reviews, and says no.
Hard-won rules, every one of them paid for:
python3, notbun. Bun isn't an Omarchy dependency; python3 is guaranteed. A missing binary is a silent widget outage.MouseArea, notPointerHandler. Quickshell pointer handlers get zero events on Omarchy panels. Three separate bugs, one cause.- Keep state in
~/.local/state. A plugin that writes inside its own directory triggers a rebuild of every plugin service. - Never hardcode a hex.
colors.tomlis the contract. Break it and you break every theme at once. - Hot-reload lies. After a reload,
qs ipcstill serves the old widget. Deploy with a restart, verify with a screenshot.
PAI β Personal AI Infrastructure β is the scaffolding that turns Claude Code from a clever autocomplete into a co-worker who remembers last Tuesday. Built on Daniel Miessler's PAI framework and Fabric, then bent hard toward my own fleet.
flowchart TB
PAI["Personal AI Infrastructure"] --> SKILLS["Skills<br/>self-activating domain expertise"]
PAI --> HOOKS["Hooks<br/>lifecycle, safety, capture"]
PAI --> MEMORY["Memory<br/>LMF 4.1 β SQLite + FTS5 + embeddings"]
PAI --> ALGO["Algorithm<br/>7-phase repeatable execution"]
PAI --> AGENTS["Agents<br/>engineering, research, security, design"]
PAI --> PATTERNS["Fabric patterns<br/>analysis + transformation"]
| Component | Count | What it does |
|---|---|---|
| Skills | 26 | Self-activating domain expertise β OSINT, research, Cloudflare, health checks, vault management |
| Hooks | 31 | Session start/stop, tool validation, memory capture, security scanning, prompt guards |
| Agents | 15 | Specialized sub-agents for engineering, architecture, research, pentesting, QA |
| Fabric patterns | 253 | Content analysis, extraction and transformation templates |
| LoA entries | 2,428 | Every session, extracted and searchable |
| Decisions logged | 3,151 | Settled calls that never get re-litigated |
| Learnings | 1,305 | Dead ends recorded so they aren't walked twice |
| Omarchy plugins installed | 61 | The desktop this all runs on |
Every non-trivial task runs a seven-phase loop from Current State to Ideal State, gated by criteria you can actually verify:
flowchart LR
O["OBSERVE"] --> T["THINK"] --> P["PLAN"] --> B["BUILD"] --> E["EXECUTE"] --> V["VERIFY"] --> L["LEARN"]
L --> O
The interesting part isn't the phases β it's that VERIFY is a gate, not a vibe, and LEARN writes to disk. Skipping verification is how you get a plugin that "works" with a conflict marker shipping as valid text.
Memory: LMF 4.1
The Larry Memory Framework β SQLite + FTS5 + vector search with reciprocal rank fusion, ~280ms recall. Sessions, decisions, learnings and breadcrumbs, all queryable from the CLI and from hooks. Without it, every conversation starts from zero and you spend your life re-explaining your own infrastructure.
| Repo | What it is |
|---|---|
| lmf4.1 | Persistent memory for Claude Code β the current generation. |
| claude-on-mac β | Teach Claude Code the entire Apple ecosystem: Messages, Contacts, Calendar, Mail, Notes, Reminders β with airtight per-message consent. |
| claude-router | Route queries to the right Claude model by complexity instead of paying Opus prices for a ls. |
| docker-claude-sandbox | One-command container for safely letting an AI run wild. |
| ghostdrive | The $129 Instagram "AI USB stick" β for free. Portable offline AI with Ollama. |
| blackbox-voice | Ambient recording β Whisper.cpp β date-tree archive β nightly AI summary. Audio never survives transcription. |
| LMF3 | The previous memory generation, kept for the archaeology. |
The desktop is one node. Everything else is the reason it's worth instrumenting.
flowchart TB
EDGE["Tailscale mesh + Traefik"] --> HOSTS["Multi-node homelab"]
HOSTS --> DOCKER["Docker"]
HOSTS --> K3S["K3s"]
HOSTS --> INCUS["Incus"]
HOSTS --> GPU["NVIDIA GPU compute"]
HOSTS --> OLLAMA["Ollama / vLLM local inference"]
HOSTS --> OBS["Prometheus + Grafana"]
HOSTS --> BACKUP["Restic β B2"]
OLLAMA --> BAR["β¦all of it reported on the Omarchy bar"]
OBS --> BAR
DOCKER --> BAR
| Layer | Details |
|---|---|
| Hosts | Multi-node homelab β Arch, Ubuntu, macOS. Docker, K3s, Incus. |
| Network | Tailscale overlay, Traefik reverse proxy, auto-TLS, Cloudflare DNS from the CLI |
| Compute | NVIDIA CUDA, local Ollama models, remote GPU inference |
| Observability | Prometheus, Grafana, structured logging β and a bar plugin for the parts I look at hourly |
| Backups | Restic to B2, systemd timers, K3s + Incus state included, snapper on /home |
| Sites | Cloudflare Pages, one repo per property, push-to-deploy |
Desktop Β· Omarchy Β· Hyprland Β· Quickshell / QML Β· Wayland Β· Arch AI Β· Claude Code Β· PAI Β· Fabric Β· Ollama Β· vLLM Β· RAG + embeddings Runtime Β· TypeScript / Bun Β· Python Β· Bash Β· Rust (when the FFI demands it) Infra Β· Docker Β· K3s Β· Incus Β· Tailscale Β· Traefik Β· Cloudflare Workers & Pages Ops Β· Prometheus Β· Grafana Β· systemd Β· restic Β· snapper
| apple-health-dashboard β | Self-hosted Apple Health dashboard β 13+ visualizations, recovery scoring, sleep prediction, illness early-warning. One Bun + SQLite container. |
| mirador | An opinionated terminal dashboard β world clocks, agenda, weather, tasks, markets, live system metrics. Rust + ratatui. |
| oiltrac | Global oil tanker intelligence β Globe.gl, AIS tracking, chokepoint analysis. |
| galaxy.nixfred.com | Every project I've built as an interactive Three.js star map. |
| filter Β· quantum Β· physics Β· earth | Interactive essays β the Fermi paradox, quantum computing for enterprise IT, the frontiers of physics, 4.5 billion years in 24 hours. |
| nutanix | A field guide to Nutanix, written for the people who have to explain it. |
| ghostpod Β· fenix Β· nixnet | Ephemeral containers, portable environments, host identity as code. |
flowchart LR
SPEC["Specify"] --> TEST["Test + evaluate"] --> SHIP["Ship observably"] --> RECORD["Record evidence"] --> IMPROVE["Improve the system"] --> SPEC
Scaffolding beats the model β architecture matters more than which LLM you use
Code before prompts β if code can solve it, don't prompt for it
Deterministic as possible β same input, same output, always
Memory makes intelligence compound β without persistence every session starts at zero
Complexity is borrowed β every layer added is future time invested
Record your dead ends β a failed approach saved is a week saved
Silent failures are the worst kind β if it can fail, make it fail loud
A negative result is not impossibility β your approach failed, not the idea
Verify with evidence, never with hope β "it should work" means "untested"
- GitHub β @nixfred
- LinkedIn β frednix
- Site β nixfred.com Β· omarchy.nixfred.com
- Community β co-founder, OATLUG β the Omarchy Atlanta users group
π¦ Previous versions of this README
Building compounding AI infrastructure, one session at a time β and putting it all on the bar.





