Emberplane is a multi-service ecosystem for AI-powered code intelligence. It started as an MCP server and grew into a CLI, a workspace daemon, a semantic memory layer, a trust boundary console, a native iOS app, and a monitoring dashboard. All Go on the backend. All talking through enforced trust boundaries.
This isn't a chatbot with file access. It's a distributed system with real architectural opinions about where data lives, who touches it, and what happens when things go sideways.
The command line. Query, search, synthesize across your codebase. Manage tasks and sparks (quick captures that promote into real work). Workspace init, git ops, AST indexing, runbooks. Also speaks MCP for editor integration.
Workspace watcher daemon. Tracks file deltas, detects coding bursts, manages checkpoints, parses code in the background. The local intelligence that feeds the rest of the system without you thinking about it.
Semantic memory persistence backed by pgvector. Stores meaning as graph nodes with vector embeddings, link management, enrichment pipeline. The thing that makes sessions remember what happened last time.
Trust boundary and policy enforcement. JWT auth, admission control, session lifecycle, multi-tenant RBAC. The only service allowed to write to Lattice. Everything else asks permission.
Native iPhone app for tasks and sparks. Dark-mode only. No webview, no React Native. Constrained on purpose: login, view tasks, capture sparks, promote sparks to tasks by picking a project.
Service visibility dashboard. Tool usage analytics with time-series history, metrics collection across the whole ecosystem. Go backend, Chart.js frontend.
Twenty-plus years of building things, starting before the frameworks existed. Still prefers a terminal to a GUI and Vim to everything else. The kind of developer who reads RFCs recreationally and thinks semantic versioning is a social contract.
The resume version of this section would list companies and dates. The real version is: I've built systems that handle millions of requests, debugged production at 3am more times than I'd like, and shipped code in languages that don't exist anymore. Right now I'm building what I think AI-assisted development tooling should actually look like. Opinionated. Willing to tell the LLM no.
The things a resume would never mention but a recruiter should probably know about.
I build things that have opinions. Software should know what it is, enforce its own boundaries, and degrade gracefully when the world gets weird. I'd rather ship a single binary that does one thing well than a Kubernetes cluster that does everything badly.
I write prose as well as code. Documentation is how you prove you understand what you built. If you can't explain the architecture in plain English, you don't have an architecture. You have an accident.
I use AI tools extensively. I also tell them no. The judgment call about when to accept the suggestion and when to override it is the actual skill. The models are a power tool, and knowing when to put it down is what keeps your fingers attached.