Projects
These are the tools I built after working around the same problems stopped being sensible.
CDX
Product design and Rust engineering
A conversation ID is not much help when the thread lives in one of many working directories. CDX indexes the local thread store, lets you search or filter it, and hands the selected conversation back to the native Codex resume command.
Spawned subagents stay hidden until they are useful, and the interface adjusts its columns and density instead of wasting a wide terminal or crushing a narrow one.
- Local-only conversation index
- Safe native resume handoff
Rust, Ratatui, SQLite
Stackctl
Product design and Rust engineering
One daemon reconciles strict project files into Linux containers and owns the shared infrastructure, local HTTPS, credentials, and lifecycle state around them.
Setup validates the machine before changing it. Doctor, status, logs, and URL commands expose what the daemon is doing when the happy path stops being happy.
Version 8 deliberately refuses to guess how an older installation should be migrated or adopted. A clean boundary is less convenient than a half-correct migration, but it is also much easier to trust.
Rust, Docker Engine API
Go Queue
API, reliability, and operations design
Workers share lifecycle, retry, observability, and management contracts across in-memory work, Redis, Valkey, NATS, NSQ, and RabbitMQ. Delivery and settlement remain backend-specific because hiding those differences is how a convenient abstraction becomes a production bug.
- Durable stream backends
- Explicit settlement and redelivery
- Backend-neutral management API
Go, Redis, Valkey, NATS, NSQ, RabbitMQ
Go Analysis
Static-analysis and policy design
The suite checks context propagation, HTTP and lifecycle ownership, secure migrations, typed secrets, repository boundaries, and shared mutable state.
Rules start as advice. They become blocking only after corpus evidence shows they are precise enough, because a noisy policy check quickly becomes a check everybody ignores.
- Strict, versioned configuration
- Text, JSON, and SARIF reports
Go, go/analysis, SARIF
Coding Standard
PHP tooling and architecture rules
The shared presets keep naming, file structure, PHPDoc, PHPUnit, and modern-language conventions consistent without copying the same configuration into every repository.
Custom fixers cover architectural decisions that a generic formatter cannot express, while older behavior remains available as an explicit compatibility choice instead of a silent default.
- Custom architecture fixers
- PHPDoc, PHPUnit, and Rector presets
PHP, PHP-CS-Fixer, Rector
RPC
Protocol and Laravel integration design
Strict validation, resource transformation, batch requests, notifications, generated OpenRPC descriptions, and typed clients belong to one protocol boundary instead of being rebuilt around every endpoint.
- JSON-RPC 2.0 and XML-RPC
- OpenRPC discovery
- Laravel servers and Saloon clients
PHP, Laravel, OpenRPC