What the work is made with, grouped by purpose, each with a reason.
12 entries across 6 purposes
Researching
Sourcebot — Code search across a whole set of repositories at once. I read unfamiliar code far more than I write new code, and I merged a case-sensitivity fix into it for GitLab topics.
DeepEval — Evaluation harness for LLM output. Reading how other people score model behaviour is the fastest way to find out what your own numbers are not measuring; I have contributed to it.
Thinking
Claude Code — Where I work through a change before committing to it. Most of my writing about agent systems started as something I watched go wrong in an actual session.
Codex — Kept deliberately separate from the model that wrote the patch. A second prompt is not an independent review, and using a different family is the cheapest way to reduce one coupling.
Prototyping
FastAPI — The fastest way from an idea to an endpoint somebody else can call. Munshot, the medical retrieval service and ClarityEngine all started as one file here.
Pydantic — Types at the boundary, enforced at runtime. It turns a provider's schema drift into a typed error at the edge instead of an unexplained failure deep inside a graph.
Building
LangGraph — State machines for agents that have to survive a bad tool call. The reasoning engines at Munshot and RealAIzation are both graphs, with recovery inside the graph rather than wrapped around it.
MCP — One tool contract in front of many providers, so adding a data source is a server change rather than a graph change. I built an MCP-compliant tool server at Munshot and have merged a fix into mcp-use.
Measuring
OpenTelemetry — Tracing across the whole request path rather than logs per service. The medical retrieval deployment ran on it, and it is the difference between knowing a p99 and asserting one.
TraceRoot — Observability aimed at agent runs specifically. I merged a fix into it; a run that reports success after a fallback rescued it is the failure mode most dashboards miss.
Shipping
Kubernetes — Where the medical retrieval service ran in production, with Redis in front and a managed vector store behind it. Boring on purpose.
RabbitMQ — Durable queues, dead-letter handling and per-queue back-pressure. Moving Hey Amara's agent work onto a broker is the change that shaped everything after it.