Blog
Building in public. Shipping small.
The Brain series
The Brain v1.0 is Released
Five weeks of build-in-public, scope locked, shipped. Open-source, self-hosted workflow orchestrator with Python-defined workflows, four step types (shell, LLM, Memory Vault, MCP), four trigger types (manual, cron, webhook, file), Postgres-backed run history, multi-arch Docker, MIT.
The Brain Talks to Everything Now
The Brain's fourth milestone is shipped. MCP tool calling as a workflow step type over stdio, per-step LLM provider overrides, the derive-your-own-image pattern, and the first real end-to-end composition of The Brain with Memory Vault.
The Brain Reacts Now
The Brain's third milestone is shipped. HMAC-authenticated webhook triggers, a separate file watcher daemon with debounce, a {trigger.X} placeholder family for inbound payload access. The four classical trigger types — manual, cron, webhook, file — complete.
The Brain Runs on a Schedule Now
The Brain's second milestone is shipped. Cron schedules, a long-running scheduler daemon, workflows that read the previous run, and an opt-in HTTP endpoint. The milestone where The Brain becomes worth running unattended.
I Built the Memory, Now I'm Building the Brain
I shipped Memory Vault three weeks ago. Now I'm building the layer above it. The Brain is a workflow orchestrator for the ecosystem — and the bare runner is already running.
Memory Vault series
Memory Vault v1.0 is Released
Seven weeks of build-in-public, scope locked, shipped. Open-source, self-hosted AI memory with hybrid search, MCP, knowledge graph, and local LLM chat — Postgres + pgvector, MIT, one-command Docker.
Memory Vault Has a Knowledge Graph
Milestone 7: building a knowledge graph without an LLM. spaCy NER + Postgres + co-occurrence, force-directed Cytoscape visualization. 80% of the way for 0% of the LLM cost.
Memory Vault Has a Dashboard
Milestone 6: a four-page web dashboard — Search, Browse, Ingest, Stats. Token-gated, baked into the same Docker image as the API. One command, one port.
Memory Vault Has a REST API
Milestone 5: every MCP tool is now an HTTP endpoint. Bearer auth, rate limiting, OpenAPI docs. Integrate AI memory into any app, any language.
Give Claude a Long-Term Memory
Milestone 4: MCP integration — four tools that let Claude store and retrieve memories mid-conversation. Connect Memory Vault in two minutes.
Memory Vault Now Runs With One Command
Milestone 3: PostgreSQL + pgvector + hybrid search + embeddings, all running with a single docker compose up. Here's what happens under the hood and the decisions I made.
How Hybrid Search Works — Building the Engine Behind Memory Vault
Pure vector search wasn't enough. Here's how combining semantic similarity, keyword matching, and Reciprocal Rank Fusion built the search engine behind Memory Vault.
I'm Building an Open-Source AI Memory System
Every conversation with an AI starts from zero. I got tired of that. So I built a solution, used it daily for months, and now I'm open-sourcing it.
Database toolkit for .NET
Why I Built a Change Script Generator
Six tools. 75 days. While working full-time. This is the last one — the tool that completes the toolkit.
Why I Built a Schema Drift Detector
The DBA added a column on Tuesday. The developer deployed on Friday. The code didn't know. Nobody found out until a customer did.
Why I Built a Schema Documentation Generator
"Where are the database docs?" "Just... look at the tables in SSMS." Every team. Every project. Every time.
Why I Built an NHibernate XML to Fluent Converter
80 mapping files. All XML. The team decided to migrate to Fluent. Nobody volunteered. Here's the tool I wish I'd had.
Why I Built a SQL to C# POCO Generator
Quick — what's the C# type for UNIQUEIDENTIFIER? You know it. You still look it up. Every time.
Why I Built an NHibernate Code Generator
I've written the same three NHibernate files more times than I can count. Same structure, different names. So I automated it.