Linda is an open-source TypeScript SDK for building AI agents that run inside the browser. The model gets a virtual filesystem view of your page, calls real tools (read, write, ls, grep, complete), runs skills, hands off between sub-agents, and renders a Shadow-DOM chat UI — all without a server runtime.
Engineers shipping in-page AI experiences: founders replacing long signup forms, product engineers adding copilots to existing apps, platform engineers bolting AI onto legacy admin tools, growth engineers running behavioral triggers (exit-intent, hesitation), infra engineers wanting a tested browser agent runtime that's not locked to one provider.
A chatbot widget is a stateless UI calling an API. Linda is a full agent loop: the model plans, reads files, writes files (which fill your form), runs capability-gated skills, and can hand off to specialist sub-agents. The UX is conversation; the substrate is an agent.
Concretely: when the model decides the user said 'priya@acme.io', it doesn't tell the UI to update a label — it writes
{ "value": "priya@acme.io" }to/page/form/fields/email.json. Linda intercepts that write and dispatches a realinputevent on your<input name="email">. Your existing form validation, React state, jQuery handlers — all of it just works.No. Linda runs entirely in the browser with BYOK (bring your own API key). If you don't want your key in the browser, drop in
@linda/server— a 1 KB Node proxy that streams responses over SSE without exposing the key.Anthropic Claude (Sonnet 4.6, Opus 4.7), OpenAI GPT (4o, 5), Groq (Llama, Qwen — fast), OpenRouter (anything), Ollama (local). Plus any OpenAI-compatible endpoint via
baseUrloverride.Roughly 35 KB gzipped for
@linda/core+ VFS + hooks. The all-in-one script-tag UMD is ~34 KB gzipped. Parsers (PDF, OCR, etc.) are opt-in companion packages that lazy-load their heavy deps only when used — so the OCR parser doesn't cost you 10 MB unless someone actually drops an image.Yes — and it's better than most cloud-side AI tools. Linda runs in the browser. Files (PDFs, images, audio) are parsed client-side via
@linda/parsers-*and only the chunks the user is happy to share go to the LLM. The provider sees what your prompts send; you control that. See /security for details.Yes. The core SDK is framework-agnostic. The chat UI is rendered into a Shadow DOM, so it can't fight your CSS. There's a React wrapper (
@linda/react) for ergonomics, but the script-tag UMD has no framework dependency at all.Browse /use-cases — eight canonical shapes, each linking to a runnable example in the GitHub repo. The simplest is script-tag-signup: a single HTML file, a
<script>tag, and a form.Yes.
@linda/extensionis a Manifest V3 reference scaffold. Useful for adding per-origin AI agents to SaaS tools you don't own (e.g. a Linda agent in your CRM tab that reads the page and answers questions). See the use case.Yes.
LindaMcpServerexposes the VFS + primitives over Model Context Protocol. Point Claude Desktop or Cursor at it and they can read/page,/conversation, and call your tools. See /features/mcp.Linda is v0.9, approaching v1.0. v1.0 will freeze the public API and ship as a stable release. The internals (VFS, tool loop, hooks, transports) have been stable for months; we're polishing comparison pages and one or two skills before cutting v1.
github.com/neul-labs/linda. MIT licensed.
Still curious?
The docs cover every primitive, every skill, every provider.