I build reliable agent systems and the software around them.
Systems engineer building agent runtimes, privacy-first applications, and production AI tooling.
Rust, Python, TypeScript, Cloudflare, SQLite, and MCP. I care about measurable behavior, safe defaults, and small systems that are easy to reason about.
01 / Principles
Make the important path obvious. Reduce surface area before adding features.
Treat privacy, account boundaries, and operational evidence as product requirements.
Build agent systems as composable protocols, not opaque demos.
02 / Selected Work
Crafted Systems.
Plugin-driven execution with protocol-aware messaging.
Lightweight, modular AI agent runtime in Rust with MCP plugins, MuninnDB memory, and A2A protocol support.
Systems-level security primitives packaged for real apps.
Cross-platform encrypted vault in Rust with XChaCha20-Poly1305, FFI bindings, and CI/CD pipelines.
Retrieval-first memory infrastructure without cloud lock-in.
Privacy-first MCP server for team memory with FastMCP, SQLite FTS5, and local vector search.
Operational UX with workflow-heavy product surfaces.
Full-stack CRM with Kanban workflows built on Next.js, TanStack, Prisma, and Google OAuth.
Interactive guides
More like a technical workbench than a post archive.
Focused labs with runnable examples, validation notes, and concrete tradeoffs. Less essay archive, more technical interview workbench.
type GuideLab = {
goal: "senior-engineer ramp-up";
includes: ["mental model", "pitfalls", "checks"];
output: "interview-ready understanding";
};
run(lab).verify().ship();Selected writing
Three technical essays worth reading.
The archive is intentionally reduced here. These pieces show systems thinking, agent architecture, and pragmatic implementation detail.
Your Code Knowledge Graph Needs Four Layers, Not One
Memory should be a graph. The graph should be four layers. The middle one carries navigation. The top one turns navigation into action.
Your MCP Setup Is Burning 90% of Its Context Window. Here's the Fix.
Every MCP tool you connect loads its full schema upfront, before you type a word. Anthropic's deferred loading fixes this.
Shipping A2A Protocol Support in Rust: 7 Gotchas Nobody Warns You About
What I learned adding Agent-to-Agent protocol support to an open-source agent framework.
04 / About
The Workshop.
I build agent runtimes, privacy-first applications, and production AI tooling. My work sits between systems engineering and product delivery: tool loops, retrieval, encrypted storage, CI, and deployable user interfaces.
I am strongest where architecture needs to become working software. I like small protocols, clear boundaries, local-first data, and validation that proves the system behaves as intended.
Core stack
Rust, Python, TypeScript, Cloudflare Workers, Next.js, SQLite, Prisma, MCP, A2A.
Technical snapshot
- Languages
- Rust, Python, TypeScript
- Systems
- MCP, A2A, Workers, SQLite FTS5
- Product
- Next.js, Prisma, OAuth, CI/CD