Blog

Design patterns, formal methods, and the computer science theory behind our tools. We ground agentic software engineering with scaffolding from CS theory to create more reliable and deterministic outputs.

architecturecorrectness

Building L1 Tools for L4 Agents

When agents need a visual interface, the most important design decision is where to draw the boundary between deterministic rendering and agentic composition.

correctnessformal methodsagentic engineering

The Verification Gap

As code moves from deterministic to agentic, the gap between what we can specify and what we can verify widens at every level. Five levels of code, five verification paradigms, and the case for formal methods in an agentic world.

correctnessformal methods

AI Coding + Grounding and Formal Methods = Agentic Software Engineering

Formal specifications improve code reliability, but the cost of writing them kept them out of most projects. AI removes the time penalty. We're testing whether the payoff is as significant as we think.

architecturecomposition

Composable Tools: Integration Without Coupling

Our tools discover and enrich each other through filesystem conventions and shell hooks — six integration layers from sentinel checks to agent orchestration, with no shared code required for the first four.

developer experienceMCP

Dev/Prod Namespace Isolation for Claude Code Plugins

Developing a Claude Code plugin while your users have it installed means running both versions simultaneously. Here's how we isolate dev from prod.

correctnessaccountabilityagentic engineering

The Accountability Gap

When a human writes code, someone is accountable. When an LLM writes code, the terms of service say nobody is. Verification was always important — now it is load-bearing.

coordinationcontextcommunication

The Six Problems of Agentic Engineering

When engineering teams adopt AI agents, six distinct coordination problems emerge. Each operates at a different layer and timescale. No single tool solves all six — and that's healthy.

architecturecomposition

Choosing the Right Projection

The library-vs-service debate is old. What's new is that agents, apps, and humans all need to reach the same capability. Here's how we decide which integration point to use when.

communicationcoordinationMCP

MCP Patterns: Push Notifications in a Protocol Without Push

MCP has no push notification mechanism. We built six interlocking patterns to solve display, notification, broadcast, and process coordination for MCP-based tools.

architecturecomposition

Universal Access to Capability

We tried building every tool as a Python library with thin projection layers — CLI, MCP, and REST from one codebase. Here's what we learned.

developer experienceMCP

The Installation Problem for MCP Tools

Installing an MCP tool touches PyPI, marketplace caches, and host configuration. One command per use case, backed by six patterns refined through a marketplace migration.

contextarchitectureagentic engineering

Design Decision Logs When AI Is Your Co-Author

AI assistants re-propose rejected approaches because context is ephemeral. Design decision logs — adapted from Michael Nygard's ADRs — are one way to solve this while the ecosystem builds better solutions.