Gauntlet AI · 2026
Clinical Copilot
A conversational AI agent for physicians, embedded inside OpenEMR
Demos · 2 clips
- Role
- Solo builder: architecture, agents, deployment
- Timeline
- 2 weeks (Gauntlet AI, Weeks 1–2)
- Stack
The problem
Physicians spend a large share of every visit digging through the EHR instead of talking to the patient. OpenEMR is powerful but dense. Finding a medication history, recent labs, or a prior note means clicking through nested menus. The brief: put a trustworthy conversational agent inside the chart itself.
The approach
I embedded a multi-agent supervisor directly into the OpenEMR clinician UI. The supervisor routes physician questions to specialized agents that read the patient's chart through OpenEMR's data layer, with every model interaction traced in Langfuse for observability. The agent answers in context. The physician never leaves the chart, and every response is grounded in that patient's actual record.
The hard parts
Working inside a 20-year-old PHP codebase
OpenEMR is a sprawling legacy system. Rather than fork it destructively, I integrated the copilot as an embedded surface with a clean HTTPS contract, keeping the upstream system intact and the agent independently deployable.
Patient-data trust boundaries
A clinical agent must only see the chart it is opened against. Session-scoped access and server-side patient context, never client-supplied identifiers, kept cross-patient leakage structurally impossible rather than merely discouraged.
Deploying real infrastructure
This isn't a localhost demo. The full stack (OpenEMR, agent API, Langfuse tracing) runs on a public VPS behind TLS, with synthetic patient data, so anyone can log in and use it.
The live interface
Where it landed
A live, publicly accessible deployment with a working conversational agent inside the chart, and the foundation that Week 3's Clinical Adversary platform was later pointed at as a red-team target.
Next project
Clinical Adversary