I build tools I wanted and couldn't find, and then find out why nobody built them. Lately that means agent plumbing, developer tooling, and running models on the laptop in front of me.
Note
The recurring bug in my personality: I can't use an abstraction for long without rebuilding it. The state library, the web framework, the inference path, the agent loop. I'm not against abstractions. I just like knowing what they're abstracting.
A macOS clipboard manager with on-device semantic search. Every copy gets embedded, so "that curl command from Tuesday" is a real query.
Rust Tauri ONNX Homebrew
|
Monitoring for cron jobs and AI agents. It tells you the 3 a.m. job died, ideally before your users notice.
monitoring cron agents
|
A reactive, proxy-based state store with normalization built in. The entire API is two hooks, because that's all state needs.
TypeScript Proxy monorepo
|
A multi-agent dispatcher: ten agents with their own personas and model routing. Naming them was the easy part.
agents LLM routing
|
A Chrome extension that drafts replies on X. Suggest-only by design, so a human still owns the take.
Chrome MV3 LLMs
|
A web app in Rust with none of the framework magic, built to find out what the magic was actually doing.
Rust HTTP from scratch
|
+ an agent harness loop from scratch. no SDK, no framework, just the loop
+ Yank's internals, rewritten by hand down to the embedding pipeline
+ Postgres internals, more than is socially acceptable
+ writing it all up at blog.piyushpradhan.spaceTypeScript and Rust most days, ONNX Runtime when a model needs to run locally, and Go when I want things boring in a good way.
| 🏍️ | Riding a Triumph Speed 400 and cutting motovlogs for Untethered |
| 🥊 | Training MMA, a structured way of learning humility |
| ☕ | V60 pour-overs. I will talk grind size if provoked |
| 🏎️ | Assetto Corsa, on a keyboard until the wheel arrives |
| ⌨️ | Mechanical keyboards, football, anime |
If you scrolled this far, you're either curious or procrastinating. Either way, say hi.



