// this is not a resume. you asked for one. this is what you get instead.

BEN WELLER

Software architect. 20+ years. Still writes code.
location: Austin, TX
mesh handle: OWL1
domain: b7r.dev
stack: Go, Node, Redis, Postgres, Vim, bash, and whatever the problem demands
philosophy: single binaries, trust boundaries, software that works when the internet doesn't

001 — Emberplane

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.

ember CLI

v0.1.0 · Active

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.

Arbor

v0.1.0 · Active

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.

Lattice

v0.1.0 · Development

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.

Console

hearth.emberplane.com

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.

ember-task

Native iOS · Swift/SwiftUI

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.

Monitoring

Active

Service visibility dashboard. Tool usage analytics with time-series history, metrics collection across the whole ecosystem. Go backend, Chart.js frontend.

┌─────────────────────────────────────────┐ │ Console · hearth.emberplane.com │ │ Trust Boundary · Auth · RBAC │ │ Admission Control · Sessions │ └────────┬─────────────┬─────────────┬────┘ │ │ │ ┌──────┴──────┐ ┌───┴─────┐ ┌────┴────┐ │ ember CLI │ │ Arbor │ │ Lattice │ │ MCP/Query │ │ Watcher │ │ pgvect. │ │ Tasks │ │ Deltas │ │ Nodes │ │ Sparks │ │ Bursts │ │ Links │ └──────┬──────┘ └─────────┘ └─────────┘ │ ┌──────┴──────┐ │ ember-task │ │ iOS app │ └─────────────┘ nothing writes to Lattice except Console. ember, Arbor, and ember-task all go through the trust boundary.
Trust boundaries are load-bearing walls. Don't remove them because the sprint board says so.
MCP is disposable. If it crashes, nothing of value is lost. That's a feature.
Memory writes are transactional at session close. Partial writes don't happen. Neither does corruption.
Privacy by design. User data belongs to users. This isn't negotiable.
· · · · ·

002 — Technical Identity

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.

Go Node.js Redis PostgreSQL SQLite MCP Protocol gRPC / Protobuf Docker SSE / WebSocket Vector Embeddings JWT / Auth Swift / SwiftUI LoRa / Meshtastic pgvector Vim bash
· · · · ·

003 — The Other Stuff

The things a resume would never mention but a recruiter should probably know about.

· · · · ·

004 — How I Work

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.