Open source · MIT · v0.9.0
The in-browser AI agent SDK.
Drop a <script> tag. Dornick reads your live page as
a virtual filesystem, calls real tools, runs skills, hands off between
sub-agents, and fills your form's <input> fields in
real time — all without a server.
And it's the only runtime that speaks both sides of WebMCP — it calls your page's tools, publishes its own back, and ships the polyfill. Anthropic, OpenAI, Groq, OpenRouter, and local Ollama. Framework-agnostic. ~38 KB gzipped.
- ~38 KB gzipped core
- 5 LLM providers
- 22 hook events
- 8 built-in skills
- WebMCP both sides
<script src="https://unpkg.com/@dornick/script/dist/dornick.js"></script>
<form
data-dornick
data-dornick-config="/configs/signup.json"
data-dornick-provider="anthropic"
data-dornick-model="claude-sonnet-4-6"
data-dornick-key="sk-ant-..."
>
<input name="email" />
<input name="company" />
<input name="team_size" />
</form>name="email", name="company" in the form behind this chat.
What's in the box
Everything in the box, one tiny runtime.
Dornick exposes the same agent shapes you'd build internally — VFS, tool loop, hooks, skills, multi-agent, MCP — but packaged into a browser SDK you can drop into any page.
Virtual filesystem
The LLM sees /page, /conversation, /user, /skills, /host as readable files — not a giant prompt blob.
Learn more →WebMCP, both sides
Calls your page's document.modelContext tools, publishes its own back, ships the polyfill. Nobody else does both.
Learn more →Tool-loop agent
tree · read · write · ls · grep · complete. A real agent loop, not a single-shot chat.
Learn more →22 lifecycle hooks
Veto + transform pipeline. Programmatic or declarative JSON. Webhooks too.
Learn more →8 built-in skills
resume-intake, kyc-id-check, payment, signature, consent, wizard, booking, address.
Learn more →Multi-agent handoffs
Exit-intent triggers a rescue specialist. Topic-switch hands off to an expert agent.
Learn more →MCP client & server
Mount remote MCP servers under /host. Expose your page as an MCP server to Claude Desktop.
Learn more →Browser-side file parsing
PDF, DOCX, XLSX, ZIP, OCR, Whisper — all in-browser. The file never leaves the page.
Learn more →5 LLM providers
Anthropic, OpenAI, Groq, OpenRouter, Ollama. fetch-only, no axios, BYOK or proxy.
Learn more →Shadow-DOM chat UI
Style-isolated chat overlay that won't fight your CSS. Framework-agnostic.
Learn more →The signature abstraction
A workspace, not a prompt.
Modern LLMs are trained on filesystem-shaped workflows. So Dornick gives the
model a workspace — /page for the live DOM,
/conversation for the message log, /user for
dropped files, /skills for installed capabilities, and
/host for anything you mount.
The model reads what it needs, when it needs it. Writes to
/page/form/fields/<name>.json are intercepted and
fill your form's <input> in real time. No prompt-stuffing,
no token bloat, no state plumbing.
dornick.vfs.tree("/") / ├── /page # live DOM snapshot │ ├── dom.html │ ├── url.txt │ └── form/ │ └── fields/ │ ├── email.json │ └── company.json ├── /conversation # full message log │ ├── messages.jsonl │ └── state.json ├── /user # files the user drops in │ └── files/ │ └── f_a1b2c3/ │ ├── info.md │ └── parsed/ │ └── text.md ├── /skills # composable capability bundles │ └── installed/ │ ├── resume-intake/ │ │ ├── SKILL.md │ │ └── schema.json │ └── kyc-id-check/ │ └── SKILL.md ├── /host # your data, mounted by you │ └── crm/ │ └── accounts.json ├── /config ├── /scratchpad └── /tools
Use cases
What teams ship with Dornick.
Eight canonical shapes, all running in production patterns.
Providers
Bring your own model.
Dornick is provider-agnostic. Same code, swap the transport.
How Dornick compares
The closest things, and how Dornick differs.
From the blog
Dornick dispatches.
WebMCP has two sides, and everyone is building one
WebMCP is shipping in Chrome and default-on at Shopify. But every implementation so far picks a side — publish tools, or consume them. Here's why both matters, and what it takes.
narrativeWhy we built Dornick: forms aren't the bottleneck, agents are
We started with a server-side conversational form filler. We ripped it all out and rebuilt as a browser-first agent SDK. The pivot, the bet, and where AI actually lives on the web.
cornerstoneThe agent VFS pattern: give the LLM a workspace, not a prompt
Why putting everything in the system prompt is the wrong abstraction for modern agents, and how a virtual filesystem solves the problems prompt-stuffing creates. Architectural deep-dive.
Explore Dornick
Every section, one hop away.
The whole site, mapped. Jump straight into the primitives, the demos you can run with your own key, the head-to-head comparisons, or the blog.
Features
The seven primitives that make Dornick an agent, not a chatbot widget.
Explore features →Use cases
Eight canonical shapes teams ship with Dornick in production.
Browse use cases →Live demos
Five BYOK demos — signup, copilot, PDF Q&A, table extract, checkout rescue.
Run the demos →Compare
Dornick vs CopilotKit, Stagehand, Typeform, Vercel AI SDK, and PageAgent.
See comparisons →Providers
Anthropic, OpenAI, Groq, OpenRouter, Ollama — one agent loop, swap the model.
View providers →Blog
Deep-dives on building in-browser AI agents — VFS, handoffs, MCP, and more.
Read the blog →Ship an agent-driven flow this afternoon.
Install Dornick, paste a config, and your form turns into an agent that fills its own inputs.