Constraint-Driven Design
Hard constraints don't limit architecture—they clarify it. Start with the constraint that scares you.
The best architectural decisions I've made started with a constraint that felt impossible. Not a preference, not a goal—a hard line that couldn't be crossed.
Constraints force clarity
Read more
When I built Hive, the constraint was clear: manage multiple Docker Swarm clusters without ever exposing their APIs externally. No inbound firewall rules. No VPNs. No exceptions.
That constraint killed the obvious approach (direct API calls) and forced something better: an agent architecture where connections are outbound-only, jobs are cryptographically signed, and a compromised control plane can't directly touch running containers.
The architecture didn't emerge despite the constraint. It emerged because of it.
Three constraints that shaped three platforms
Hive: "Multi-cluster management without exposing Docker APIs" → Agent architecture with outbound-only connections. Blast radius limited by design.
Boditree: "Zero-knowledge encryption—server never sees plaintext" → Client-side encryption with device-owned keys. Privacy isn't a policy; it's a mathematical guarantee.
Locactus: "You don't scroll, you walk" → Boom moments (contextual notifications) over feeds. The app disappears until it matters.
The question to ask
Before sketching boxes and arrows, ask: "What's the constraint that would make this trivial approach impossible?"
If you don't have one, you probably haven't understood the problem deeply enough. Find the constraint. Let it force the architecture.