ls -la ~/lab
Lab
A journal, not a polished portfolio. For every project: the idea, how it actually works, and how it went — wrong decisions included. # 21 alive + 3 explorations

Relation F1 at 0.38: when the lesson wasn't the model, but the data
Technical diary of a fine-tuning: LoRA on a 27B model to extract knowledge graphs from messy documents. The turning point wasn't a bigger model…

Six LLMs on a private IRC channel, and the only op is a human
Technical diary: several heterogeneous LLMs, each on an isolated box, coordinated over a private IRC channel. Coordination isn't in the prompt, it's in IRC: modes…

foldcrumbs: agent memory with grep, not a vector DB
Technical diary of foldcrumbs: persistent memory for coding agents built on grep instead of a vector DB. Zero dependencies, one stdlib MCP server, and a…

22 minutes to build a WordPress site, two days to make it not look ugly
Technical diary of a 9-agent Claude web agency: from brief to live Divi 5 site in ~22 minutes on bare-metal k8s. The lesson: automating the plumbing is…

The IT department that argues with itself: three layers and a human in the loop
An IT department made of AI agents — NOC, SOC, SRE, Architecture Board — that watch a k8s cluster, rebut each other and prepare decisions for a…

2194 claims, all stuck at 0.30: teaching a graph what matters
I built a multi-agent pipeline that monitors YouTube, Discord and RSS and spits out an Italian digest on WhatsApp. Everything worked except the one thing that…
The avatar that talks before it moves its lips
Diary of a real-time conversational AI avatar: STT, LLM, TTS and lip-sync on GPU. The hard decision was decoupling audio from video.

The AI's advice doesn't count: what counts is the guardrail that rejects it
How I moved a small mail cluster from DMARC p=none to real enforcement without burning legitimate mail: a readiness score, a wave-based rollout, and an advisor…

The 59%: why I stopped letting the LLM do everything
Diary of a multi-agent scaffold on Agno: three layers directive/orchestration/execution, natural-language SOPs on top, deterministic Python underneath…

The Wait that never returned: why I ditched n8n for a 3×3 grid
From an n8n workflow with infinite polling to a multi-agent system for producing reels: the 3×3 grid method for character consistency, and the timeouts that were missing.

A wrong character flooded the birch: diary of an autonomous irrigation system
A technical diary of an autonomous irrigation system: a FAO-56 agronomic model, an AI agent that reviews the plan every night, and a proprietary protocol decoded…

Kochab: building trust into code — the star that never deletes
Technical diary of Kochab: an outbound-only agent in Go, a security audit mapped to CIS/NIST, Ed25519-signed tasks, and one rule — it never deletes — guaranteed…

NPMShield: I designed a 7-database empire, an agent razed it to the ground
How I sketched out an anti-malware platform for npm in Claude Code — sandbox, AI, 7 databases — and how an adversarial review cut it down to a CLI and…

Openbricks: when the governance plan collapsed on contact with reality
Technical diary of Openbricks: an open-source lakehouse on bare-metal OpenShift via GitOps. The 'Ranger unifies Trino and Spark' plan collapsed — here's how…

Pragma, twice: I threw out six agents and two databases, and gained a feature that weighs 1
I rebuilt a WhatsApp project-management assistant for the public sector from scratch: from six agents and three databases to just one. A diary on which complexity…

I was about to buy a GPU. I priced the entire rental market and changed my mind.
Technical journal: I priced the entire cloud GPU market (RunPod, Vast.ai, Lambda, Modal) to figure out when renting beats buying. The headline price…

The spam that passed DMARC: when authenticating doesn't mean trusting
I migrated a self-hosted mail server from scratch with Postfix, Dovecot and Rspamd. The hardest lesson wasn't TLS or DKIM: it was a whitelist that gave -7 to anyone…

A silent rename, half the apps at 404: home-made RunPod on two H200s
I rebuilt the RunPod + Weights & Biases experience for a small team on two H200s, on top of Slurm. Then a model rename broke everything silently.

Spectra: 29 agents that argue, and Python gates you can't talk your way past
Technical journal of Spectra: 29 AI security agents orchestrated with a step-file architecture, an adversarial War Room, and deterministic Python gates that…

The bot judged itself against my staff for three months. It never spoke to a single guest.
I built a 3-agent LLM tribunal to pit a WhatsApp concierge against the real staff. It measured for three months without ever going live. Then I…

I froze an entire wiki into a Docker bundle — and a URL inside SQLite nearly ruined everything
How I made an entire OpenWebUI knowledge base portable: a self-contained bundle, pre-computed vectors, an OpenAPI tool server, and the port-pinning that holds it…
## explorations
# projects by others I studied or contributed to
256 experts, 512 lines: I stuffed a 744B model into an engine written for a different one
Exploring DwarfStar, the C inference engine for DeepSeek V4, I ran GLM-5.2 (744B) on 2× H200 — and discovered how many constants were hardwired to the…

LLM Wiki: when a one-page prompt becomes a hundred-thousand-line app
An exploration of nashsu/llm_wiki: how an abstract Karpathy pattern for LLM-maintained wikis becomes an 87-module Tauri desktop app, between graphs, ingest…

MiroFish: I gave 80 chapters to a thousand agents to see how they'd finish the novel
An exploration of MiroFish, an open-source swarm intelligence engine: a thousand agents tweeting the future. How the OASIS + GraphRAG + Zep loop works, and what…