Admin API and Network Scanner Hardening ○
Network scanner hardening, OpenClaw vault guardrails, Argovox governance review, bug-sweep follow-up, AI Brain docs, and admin API hardening improved ArgoBox’s control-plane boundaries.
"Document Everything."
Dev Logs, Personal Ramblings, and the raw reality of the lab.
⚠️ Raw Output
$ pstree -p journal
journal | ├── 2026 │ \u2502 │ ├── 04 │ ├── 03 │ ├── 02 │ └── 01 ├── 2025 │ \u2502 │ ├── 12 │ ├── 11 │ ├── 10 │ ├── 09 │ ├── 08 │ ├── 06 │ ├── 04 │ └── 03 ├── 2024 │ \u2502 │ ├── 11 │ └── 05 └── 2023 \u2502 ├── 12 ├── 09 └── 08
Network scanner hardening, OpenClaw vault guardrails, Argovox governance review, bug-sweep follow-up, AI Brain docs, and admin API hardening improved ArgoBox’s control-plane boundaries.
Orchestration cleanup, Cortex governance, LLM routing, MCP compatibility review, and session backfill work improved the operating model around ArgoBox’s AI-assisted development system.
ArgoSec creation and cleanup, seedbox installer work, control-plane presets, ArgoBox OS completion, module-fix waves, Forge Pipeline, and multi-agent coordination shaped the next platform layer.
A comprehensive ArgoBox security review produced a prioritized remediation plan for secret handling, API boundaries, container posture, repository hygiene, and follow-up verification.
A documentation accuracy review tightened ArgoBox’s memory files by checking technical claims against source files, manifests, bug trackers, and build configuration.
ArgoVox packaging, Argonarrate sample workflows, firewall module revamp, module recovery, Docs Hub hardening, and OpenClaw update guardrails improved both product capability and operational discipline.
ArgoVox, Innovation Scout, content architecture, firewall follow-up, AI music lab, member login, and mobile OS/admin work pushed ArgoBox toward a broader product platform.
ArgoBox OS deployed to CF Pages with a KDE Plasma-like interface, 31 container apps, a user management API, and 24 of 27 tunnel routes validated on the first deployment pass.
User-system auditing, menu/search improvements, performance monitoring, CF Pages build analysis, blog review, and Tailscale recovery work tightened ArgoBox operations.
A 21-hour R&D session advanced ArgoBeat's generative music engine with FM synthesis, entrainment modulation, sample planning, and a clearer path from procedural sound design toward polished focus audio.
Learning Hub implementation, styling, music-player planning, and Knowledge RAG page work expanded the public education and ArgoBox OS content surface.
Architecture page work, legal RAG launch notes, graph rendering fixes, and SSR content recovery improved ArgoBox’s public narrative and scalable content architecture.
Ollama management fixes, OpenClaw channel cleanup, sandbox migration, dashboard widgets, and forkability checks helped stabilize the product’s demo and admin surfaces.
Core Web Vitals review, RAG cleanup, and Bogart/MasaiMara infrastructure work improved the presentation and reliability of ArgoBox’s operational dashboards.
Visitor analytics, API management, and RAG dashboard work improved the admin experience with better visibility, safer sidecar routing, and clearer operational controls.
ArgoBox added a dual-endpoint tunnel architecture for local AI access and advanced the Security Scanner design with AI-assisted triage and safer remediation workflows.
OPNsense firewall controls and Ollama Cloudflare Pages integration moved ArgoBox closer to a secure operator console for infrastructure and local AI workflows.
I have an AI agent running 24/7 on my homelab. It checks 55 monitors, audits security configs, tests playground health, and reports to Telegram. Here's what it actually does when I'm asleep and how the operating model keeps improving.
March 9, 2026. A 28KB Bash recovery workflow with 8 phases, 5 log files, and zero interactivity moved into deployment planning while two ArgoBox modules were extracted and the RAG embedding pipeline was restarted.
A focused ArgoBox security pass tightened API responses, status codes, input bounds, and RAG pipeline behavior while adding reusable response helpers for consistent route handling.
Fixed documentation page contrast so text is actually readable on mobile. Audited all 28 ArgoBox modules and resolved orphaned pages. Two small tasks that freed up cognitive space for the next thing.
Spent a Saturday evening tuning the physics engine for the blog knowledge graph. Added viewport bounds clamping and settle detection to Tendril. Made the graph stop bouncing around when you're trying to read it.
A live validation pass strengthened the job automation external ATS flow, added an identity ground truth system for the site, and improved the admin area for mobile use.
Extracted job automation into a standalone package, built a module system for ArgoBox, and created user settings infrastructure. One day of intentional architecture that enables future features without breaking the present.
Extracted a job automation system into a standalone Python package. Multi-platform (LinkedIn + Indeed), evidence capture for compliance, modular architecture. When your internal tool is good enough to use yourself, it's good enough to open source.
Built a dynamic homelab dashboard and started on job automation in a single day. One session debugging infrastructure APIs and proxy routes. Another session laying foundations for a system that applies to 50 jobs while you sleep.
A Cloudflare Pages compatibility change caused Astro SSR pages to serialize incorrectly. The fix was isolating the response-body mismatch and bridging Astro's output to a Workers-compatible stream.
Switched the Ollama and RAG playground pages from interactive simulators to real ephemeral lab containers. Learning by doing, not by watching.
Optimized the admin dashboard for mobile, built a PWA, and shipped Argonaut—a self-hosted AI agent platform with hybrid RAG, personality profiles, and daemon architecture.
A 5-hour sprint fixing 41 issues: accessibility, performance, responsive design, fonts, animations, and vault integration. The site went from 7/10 to award-ready.
A 12.5-hour stabilization sprint resolved 25+ build-swarm issues across 4 components and deployed the stabilization build across the fleet before sunrise.
Deployed Prometheus, Grafana, Loki, cAdvisor, Smokeping, Healthchecks, and Promtail to Altair-Link. Also, nodejs decided it needed to compile.
7 hours diagnosing why 5 drones sat idle while 149 packages needed building. Package-tree mismatch, corrupt binpkgs, and a fresh start.
I finally cracked why my knowledge graph felt dead. Variable edge lengths. Spines and bridges. The Obsidian feel, achieved at last.
Obsidian was crashing every time it tried to index my vault. Turns out I had 81MB of conversation archives in there. The indexer was not amused.
The knowledge graph was fragile. Remote dependencies kept breaking. Today I ripped it all out and built @argobox/tendril-graph locally. It works now.
A 7-hour build-swarm debugging session added transfer timeouts, corrected SSH transport options, narrowed uploads to the intended package artifact, and produced a CLI tool for safer fleet operations.
Power surge aftermath turns into a deep dive through WiFi networks, mystery TP-Links, subnet shenanigans, user account hardening, and a RustDesk reinstall. The full Sirius-Station session.
The knowledge graph is no longer just an ArgoBox feature. Today I extracted it into its own library. MIT license. Free forever.
Drones were hoarding 5GB of binary packages because the cleanup code was looking for directories that don't exist anymore. Three hours to fix what should have been obvious.
The printer was on the same physical network. CUPS could see it via mDNS, but packets were not routing. A power event had moved it back to an old static subnet while the rest of the LAN used the newer address plan.
Plasma frozen. Three plasmashell processes. Three weather widgets. One evening of debugging that ended with a better reset script.
A build-swarm validation pass tightened binary handoff semantics, corrected thread-state handling, and updated a container runtime path that was still carrying assumptions from an older architecture.
A systematic audit and reorganization of the AudioBooks share flattened a legacy nested directory structure, verified 3.5TB of data, and restored a clean Audiobookshelf container path.
Diagnosed a continuous reboot loop caused by rapid pod restarts, CNI churn, and Ubuntu's default panic reboot behavior, then stabilized the host for deeper inspection.
When Alpha-Centauri started rebooting every 90 seconds, I was convinced my build swarm code had achieved sentience and was trying to escape. Spoiler: it was innocent.
A NAS maintenance pass resolved log retention pressure, rclone mount noise, and an Audiobookshelf path issue that caused oversized transcode jobs.
Four HGST drives. One aging Synology. USB docks that struggled under sustained recovery load. The week between Christmas and New Year's became a crash course in mdadm, LVM, Btrfs, and choosing the right hardware path for data recovery.
A Home Manager shell integration changed the login environment enough to break graphical session startup. The fix was tracing the startup path and separating package management from display-manager assumptions.
ERROR: could not find extent tree. Seven words that meant my Btrfs filesystem had lost track of which blocks were in use. Recovery time.
Home Manager and nix-env conflicted. The solution was to remove all nix-env packages. Including Home Manager. Which was installed via nix-env.
Synology NAS RAID degraded. One drive failed. The replacement wouldn't integrate. 86 messages across two days to figure out why - and it wasn't the drive's fault.
Customizing Waybar for Hyprland. Modules, colors, spacing, hover effects - 244 messages to get a status bar that looks exactly right. Sometimes the details matter more than the function.
Steam wanted user namespaces. Gentoo said 'what namespaces?' Turns out when you compile your own kernel, you have to actually enable the features your software needs.
Gentoo wouldn't boot to GUI. KDE Plasma broken. SDDM wouldn't start. 322 messages, multiple recovery attempts, and the realization that Ctrl+Alt+F2 is the most important shortcut in Linux.
Dracut complained about missing /dev/nbd0p3. The VM's XML had PCI slots at 0. And GRUB had the root device listed twice. Three problems. One boot failure.
After rebooting from Windows back into openSUSE, two monitors were no longer detected. The fix involved removing an old NVIDIA driver, installing the correct driver series, and adding the missing kernel module package.
Deleted a corrupted GRUB. Now /etc/grub.d/ was empty. os-prober couldn't see Windows or CachyOS. NVIDIA parameters were wrong. Found the working config in a backup file I didn't know existed.
LibreWolf through a VPN namespace. Worked perfectly — on the second launch. First try always failed. Turned out the fix that was supposed to help made everything worse.
88 reboots in 3 weeks. Every login was a coin flip. Turned out PCIe Gen4 and my aging motherboard were having a disagreement about timing. Fixed it, then immediately broke my right monitor.
Lost network connectivity. NAS mounts died. Network came back. Mounts didn't. Device busy, no such file, stale handles everywhere. Found duplicates in fstab and a legacy SMB dialect.
My daughter's phone was redirecting speedtest.net to bbump-me-push.com. Then to Etsy affiliate links. Antivirus found nothing. Play Protect found nothing. Turned out to be a game that modified the APN settings.
Installed Linux next to Windows. Now Windows thinks it's seven hours earlier. Every time. Turns out Windows and Linux disagree on what 'time' even means at the hardware level.
Dual-booted EndeavourOS next to Windows. Now my clock is wrong. Mountain Time, but off by an hour. Turns out Windows and Linux disagree about what time the hardware clock should store.
ASUS board with a 4790K. Wireless keyboard. Four monitors connected to a 4070 Ti. I was mashing F2 and Delete for ten minutes. Turns out I was probably getting into BIOS the whole time.
A managed work phone needed isolation from the personal network. I set up a quarantine VLAN on the MikroTik, added a dedicated WAP, and traced a wrong-network DHCP result back to the wrong SSID.
Astro build failing on Cloudflare Pages with 'panic: html: bad parser state: originalIM was set twice'. Spent an hour debugging SVG components. The real issue? Using 'latest' for dependencies.
12:20 AM. Staring at my blog. Something's missing. I want it to feel like my Obsidian vault. Time to build a knowledge graph.
Obsidian running in a K3s pod via XPRA worked internally, then needed tunnel and WebSocket configuration updates before it could be reached through the browser path.
cattle-system and cert-manager stuck in 'Terminating' for 15 days. Force deletes did nothing. JSON patches did nothing. Turns out you can't delete a namespace when the API server still thinks a stale custom resource exists.
After a DSM update and SMB reinstall, several Synology packages reported storage-abnormality errors. I stayed on read-only diagnostics until the issue was narrowed to package metadata rather than the data volume.
Fresh Proxmox install over an old one. 'Failed to start Import ZFS pool' on every boot. No pools listed. But there was a pool - it just wouldn't admit it.
Plex on one machine. Media on the NAS. Same network. But the library was empty. The files existed. The shares were mounted. Plex just... couldn't see them.
Installing tmux on a Synology NAS. Should be simple. Except DSM isn't standard Linux, and package managers don't exist. Enter Entware and 34 messages of troubleshooting.
Daily notes should exist whether I'm at the computer or not. A bash script, a cron job, and the obsidian:// URI scheme. Now the vault maintains itself.
52 messages to write one Dataview query. Pulling text from specific subheadings, across dated folders, displaying in chronological order. When the query finally worked, it felt like magic.
Work notes, personal journal, letters to my daughter, technical documentation - all in one Obsidian vault. Time to create structure without losing connections.
Setting up Obsidian journaling templates. 176 messages to get daily notes, templater, and dataview working together. The result: a second brain that actually thinks.
My employer wanted me to pentest a client from my home IP. Without a signed scope of work. This conversation might have saved my career.
126 messages to get VNC working on Debian. Residual configs from failed attempts, conflicting packages, systemd units that wouldn't die. Sometimes you have to burn it all down and start fresh.
Researching honeypot options for the home lab. Kippo, Cowrie, Dionaea, Honeyd - each one a different trap for a different kind of attacker. The question: which one catches the most interesting flies?
August 2023. I wanted to access my Synology from work. The question: VPN or expose it to the internet? The answer involved pfSense firewall rules, port restrictions, and learning why 'just forward port 445' is a terrible idea.
ArgoBox didn't start in 2023. It started around 2011 as a seedbox - ruTorrent, Plex, bare metal scripts. Then ESXi. Then distributed. Then unified. August 2023 was just when I started documenting the journey.