Utsav Khairnar

Bangalore, IN

Engineering intern at Alma, working on making computer use a reality. I like building harnesses, the scaffolding that turns a model into something you can trust, and lately I’ve been falling down the GPU-kernel rabbit hole. Mostly I just like a good problem. Away from the screen I read a lot and draw now and then.

“There is neither happiness nor misery in the world; there is only the comparison of one state with another, nothing more. He who has felt the deepest grief is best able to experience supreme happiness. We must have felt what it is to die, Morrel, that we may appreciate the enjoyments of life. Live, then, and be happy, and never forget that until the day when God shall deign to reveal the future to man, all human wisdom is contained in these two words, ‘Wait and hope.’”

— Alexandre Dumas, The Count of Monte Cristo

Work

AlmaJune 2026 – present

I work on multi-agent harnesses for pure computer use that is cheap, robust and reliable. I’ve learnt a lot about how harnesses should be designed, how to handle context cleverly, and how to choose between open-source and frontier models based on where each one works best. I’ve met some really great people here, and it’s my first hands-on look at how a startup works. A few things I worked on:

Memory that lasts a whole project

Fig. 1

context fixed belief state act app verify disk ledger append if proven update 1 500 120 rewind: load, not replay grows every step

A real job in Blender or AutoCAD runs to hundreds of steps, far more than a model can hold. I built a memory that stays small: the agent works from a short picture of where things stand, keeps everything it has verified, and can go back to any point without redoing the work.

Knowing why a run failed

Fig. 2

Macs day file uploader counts, error words words, if consented store $ trace one command per shortcut failed runs one run run 4f2a file expense, 11.6 s model call step Verdictstep_failed 0 2 4 6 8 10 12 s turn 1 open app turn 2 click Send turn 3 upload file timeout

Every run leaves a trace of each step and model call, with a plain reason when it stops. One command opens any run, from any machine, at the step that broke. What people say stays on their Mac unless they opt in.

along the way...

  • took ownership of 14 automated workflows, like saving or visualising content with a single trigger word.
  • designed robust CLIs for various apps for v0 of the agent.
  • built demos to turn the tech into a product.
  • made the agent’s decision layer faster by capping its token usage, with no loss in accuracy.
  • shipped the command-line version of the beta.

Reliance IndustriesDec 2025 – Mar 2026

  • Built the document-parsing microservice behind an internal letter-of-credit tool.
  • Cut it from 72 s to 23 s a document, across 3,000+ documents a day for 230 sales executives.
  • Trained a model to forecast salt production yield across six regions, 27% more accurate than the old baseline.

BrydgeworkApr – May 2026

Freelance. Co-built a donation platform for 4,000 monthly users and ran its deployment.

Projects

carmenGPU kernels

  • A model writes Metal kernels for Apple Silicon, but never grades its own work.
  • A judge tests each one on hundreds of inputs, including some the model never sees, and only then times it.
  • The survivors fused 8 MLX kernels into 2 per layer of Qwen 2.5, decoding 3% faster with identical output.
  • The judge caught all 75 bugs I planted; a one-shape check caught 40.

Fig. 4Seven gates, one secret

Carmy the LLM static compile no-tolerance visible battery fresh fuzz hidden draw timing the judge real model never shown fail: where and why winner Qwen 0.5B 8 kernels → 2 decode 1.03× 75 planted bugs one-shape check 35 slip through carmen’s judge all 75 caught
The model writes kernels but never grades them. Failures go back with where and why; the hidden draw is never shown to it.

FlowGapvoice agents

  • A voice agent can only handle what someone wrote a node for.
  • FlowGap reads its call transcripts and finds what callers actually wanted.
  • It drafts the nodes the flow is missing.
  • In 298 real calls, 49% asked for something the flow couldn’t handle.

Fig. 5Where calls leak

298 calls, embedded declared flow no node 13 calls Classify intent Book appointment Reschedule / cancel Insurance / TPA Billing & payment Clinic info Prescription refill Lab reports drafted node
Intents clustered from 298 calls, matched to the flow’s nodes. The cluster with no match becomes a drafted node.

Smaller things

Writing

All writing →

Publications

Education

Reading