Projects
Tools that explore, demonstrate, and solve real problems in AI engineering
Some of this is open source, some is source available, and some is private. Every project below carries a label saying which, because a page that quietly blurs the difference is not worth reading. Where the work builds on somebody else's ideas, that's marked too, and I go out of my way to get the credit right.
The main work
Where most of the time goesSysCorpus Active
AI can now write software faster than people can comprehend it. Comprehension is the new bottleneck, and most tools that claim to solve it make it worse, because they fill the gap with confident prose. A map that lies is worse than no map. So SysCorpus is built on one rule: the map never says more than it can prove.
It scans a codebase, extracts every component, relationship, and metric, and renders the whole thing as an interactive architecture diagram you can drill into all the way down to a single function. Everything on that first screen comes from deterministic analysis of the code, no AI required. VS Code, roughly 15,000 files and 5 million lines, maps in about three minutes.
What makes it different
A coverage ledger. Every file is accounted for: parsed, skipped for a stated reason, or inside a pruned directory that says so. The viewer shows it as a badge. Silence about a file is structurally impossible.
Three layers that argue with each other. The deterministic pass is fast. The AI enrichment pass is skeptical, and every claim it makes has to cite evidence a validator can check: a file, a line, a symbol, an edge. A claim that cannot cite does not ship. Then a third pass audits both. On a recent VS Code run the deterministic layer misread the Copilot extension as a Next.js desktop app, the enrichment layer refused to repeat it and filed the gap instead, and the adjudication layer corrected the record to "VS Code Extension API," citing the absence of a Next config, routes, and endpoints. The map now carries the corrected identity with a provenance marker.
Eight lenses, and a lens only appears if the data can answer it. Structure, Inventory, Flow, Activity, Capability, Data, Rules, and Design. A project with no detected business rules does not get a Rules lens showing an empty panel. That's the coverage principle applied to navigation: offer nothing you cannot substantiate.
The Design lens has no overall score. It shows where the structure is under stress and what a change would break, in plain language first with the canonical term riding alongside. But every finding is a tension, not a verdict. A cycle in a deliberately co-released cluster may be perfectly fine, and I decline to grade what I can only measure.
Two front doors, one set of facts. An ai.json file and a set of MCP tools serve the same map to agents, term-first, while the human interface leads with plain language. The numbers agree by construction.
On the two names. Solution Explorer is the tool: the codebase, the CLI, the packages. SysCorpus is the name the work goes public under, a maintained corpus of well-known systems mapped by the tool and refreshed on a schedule, with every refresh feeding fixes back into the analyzer.
Source available Licensed FSL-1.1-ALv2. The source is public and readable, and it converts to Apache 2.0 on schedule. It is not open source today, and I would rather say that than blur it.
UnaMentis Beta
Open-source voice AI learning platform, and the origin project that started this journey. Provider-agnostic architecture lets you swap STT, TTS, and LLM freely: 9 speech-to-text providers, 8 text-to-speech providers, and 5 LLM providers. iOS and web. Learning through natural conversation, anywhere.
UnaMentis was born from a conviction that AI should adapt to human learners, not the reverse. When the voice interfaces to major AI models stopped meeting my needs for in-depth, hands-free learning conversations, I started building my own solution. Within a week, I realized it was heading somewhere with real value.
The goal is not to give you answers. It is to build genuine understanding: sessions that run 60 to 90 minutes or more, that ask you to explain concepts back in your own words, and that revisit what you learned last week to check whether you actually kept it.
Open source MIT licensed, and it is entirely my own design.
The Agent Ecosystem Active
Four devices, a MacBook Pro, a Mac Studio, an iPhone and an iPad, operating as one system. The AI part is not a feature of this setup, it is the reason the setup exists. The Mac Studio was bought to be an always-on host for agent work. The rules about deletion, autonomy, and handoff exist because agents act on this machine unattended. Every piece of it was built to answer a question about AI work: what is it doing, what did it cost, what did it find, and what needs a human.
It is used every single day, not staged for later.
The pieces
A findings queue. Automated checks find things constantly. Rather than interrupting me or losing the finding, each one becomes a queue item that waits. I triage when I choose, and a maintenance agent then executes the decisions I made. Anything genuinely urgent skips the queue and goes to my phone.
A dashboard. What is running, what it spent, what it found, which machines are reachable, which services are up.
A physical control deck. A dashboard in a browser tab is not the same as something sitting on the desk that catches your eye when an agent needs you. Ten LCD keys, four push-click knobs, and an 800 by 112 pixel touch strip addressed as a single canvas rather than four separate windows. It is AI-first: agents talk to the deck through a local JSON API, so it is an input and output device for them as well as for me.
Getting the hardware right meant trusting nothing. There was no authoritative spec for either device I used. The vendor publishes an SDK, and its own device identification tables turned out to be wrong for both units. The community reference project most people would reach for had a load-bearing bug: it classified touch-strip taps as encoder presses, which I only caught by capturing real input events live with my hand on the device. So I identified the hardware by firmware generation string instead of any vendor ID table, cross-referenced three independent community sources against each other and against the vendor's own code, and graded every claim by how it was obtained: measured from the device, measured from firmware, vendor-documented, or just a community claim. Nothing counted as settled until the hardware itself confirmed it.
A watch app, called Crowsnest. The lookout's perch above the deck. Working with agentic systems should not require sitting at a desk, and an idea should be engageable in the time it takes to raise a wrist. The complication is the front door, showing weekly usage as a gauge. Tapping it opens five screens: Glance, Usage, Alerts, Findings, and Queue, with approvals surfaced wherever something is waiting.
One rule holds it together. Anything built for the deck must be reflected in the dashboard. Anything built for the dashboard need not reach the deck. The deck is space-constrained and selective by design, so the dashboard is a strict superset. The deck says look at this, and the dashboard says here is the whole thing.
Private These repos hold operational detail about my own machines, so they stay closed. Happy to walk anyone through the architecture.
Also built
Finished work, smaller pagesExpat Intel Live
Country comparison for people planning a move abroad. Over 50 metrics covering visas, cost of living, taxes, healthcare, safety, climate, and quality of life, assembled from a dozen free and open data sources into one searchable, filterable dashboard.
It has a source validator that checks every external API is healthy, and a public status page that says which of them are working right now rather than quietly serving stale numbers. Built from scratch, entirely my own.
Private repo, live product
Pocket TTS for iOS Stable
Ported Kyutai's Pocket TTS, a 117M parameter model, from Python and PyTorch to Rust and Candle for native on-device inference on iPhone. Solved 14 major technical challenges across 5 specialized AI agents, achieving near-identical waveform output to the original.
Open source
UnaMentis Peers In progress
A peer and representation engine for UnaMentis: persistent learner memory, theory of mind between learners, and self-organizing groups, running the identical model on a phone in SQLite and on the server in Postgres.
The core idea is that a group is just a kind of peer, so groups of groups need no special case. Observations are an append-only log, and a representation is computed at query time rather than stored as a blob that can go stale.
Open source, coming Still needs real work before it is fit to release, but it will be, like the rest of UnaMentis.
OpenClaw Managed Cluster Stable
A complete deployment package that turns OpenClaw from a powerful but unsafe-by-default local agent into something an operator can run safely at any scale. Infrastructure as code, a management web app, and an observability stack, with zero credentials on the agent VMs and private inference as a first-class target.
Zero-trust remote access through Cloudflare Tunnel with no inbound ports, four layers of secret defense with runtime injection so no API key touches disk, a dedicated VLAN, and strict inter-VM firewall rules.
Private I have not touched it in a while, but the work in it stands.
Agent Vision Team Stable
Multi-agent collaborative intelligence with governance, born from the challenges of building UnaMentis. Uses Claude Code hooks for automatic architectural enforcement across 6 specialized subagents, solving the drift problem in multi-agent systems. A lot of what I learned here fed straight into everything I have built since.
Open source
Knowledge Distillation Framework Active
Knowledge distillation into a dimensional world model. That subtitle is the whole proposal in one line, and it is meant literally. Independent work exploring an understanding-based approach to machine intelligence. Covers distillation versus compression, dimensional world models, structural integration, and grounding. Published as both a framework and a Substack article.
Published, writing only
Smaller things
Side projects, tools, and one gameTouchGuard Open source
A very small Mac utility that disables the trackpad while you type, so the cursor stops jumping mid-sentence. Solves exactly one annoying problem.
Want the detail?
There's an AI assistant on this site that knows all of this in depth, including the parts that did not work. Ask it anything, or email me.