Open source · MIT · v0.9.0
The in-browser AI agent SDK.
Drop a <script> tag. Linda 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.
Works with Anthropic, OpenAI, Groq, OpenRouter, and local Ollama. Framework-agnostic. ~35 KB gzipped.
- ~35 KB gzipped core
- 5 LLM providers
- 19 hook events
- 8 built-in skills
- MIT licensed
<script src="https://unpkg.com/@linda/script/dist/linda.js"></script>
<form
data-linda
data-linda-config="/configs/signup.json"
data-linda-provider="anthropic"
data-linda-model="claude-sonnet-4-6"
data-linda-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
Nine primitives, one tiny runtime.
Linda 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 →Tool-loop agent
tree · read · write · ls · grep · complete. A real agent loop, not a single-shot chat.
Learn more →19 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 Linda 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.
linda.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 Linda.
Eight canonical shapes, all running in production patterns.
Providers
Bring your own model.
Linda is provider-agnostic. Same code, swap the transport.
How Linda compares
The closest things, and how Linda differs.
From the blog
Linda dispatches.
Why we built Linda: 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.
supportingBrowser-side PDF Q&A without uploading the file
Why we stopped uploading PDFs to servers for AI processing, what the privacy story looks like when files stay in the browser, and how Linda's parsers do it in 1 KB of glue + lazy WASM.
Ship an agent-driven flow this afternoon.
Install Linda, paste a config, and your form turns into an agent that fills its own inputs.