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.