# Linda > Linda is the open-source TypeScript SDK for building AI agents that run inside the browser. The model reads your live page as a virtual filesystem, calls real tools, streams responses, runs skills, hands off between sub-agents, and renders a Shadow-DOM chat UI — no server runtime required. Linda lets you drop a script tag (or import the SDK) and turn any web page into a venue for a real AI agent: it sees the live DOM as a virtual filesystem, calls real tools, runs skills, hands off between sub-agents, and renders a Shadow-DOM chat UI — all without a server runtime. ## Get started - [Install](https://linda.neullabs.com/install) — script tag, npm, or React in three modes - [How it works](https://linda.neullabs.com/how-it-works) — six primitives in 1500 words - [Why Linda](https://linda.neullabs.com/why-linda) — the architectural bet - [Demos](https://linda.neullabs.com/demos) — five live BYOK demos: signup form, page companion, PDF Q&A, table extraction, multi-agent rescue - [FAQ](https://linda.neullabs.com/faq) — twelve questions, plain answers - [Pricing](https://linda.neullabs.com/pricing) — free, MIT, BYOK - [Security](https://linda.neullabs.com/security) — privacy, BYOK, capability gates ## Features - [Virtual filesystem](https://linda.neullabs.com/features/vfs) — the signature abstraction - [Hooks](https://linda.neullabs.com/features/hooks) — 19 lifecycle events - [Skills](https://linda.neullabs.com/features/skills) — 8 built-in capability bundles - [Multi-agent](https://linda.neullabs.com/features/multi-agent) — handoffs + triggers - [MCP](https://linda.neullabs.com/features/mcp) — client + server - [Parsers](https://linda.neullabs.com/features/parsers) — browser-side file parsing ## Providers - [Anthropic Claude](https://linda.neullabs.com/providers/anthropic) (default) - [OpenAI](https://linda.neullabs.com/providers/openai) - [Groq](https://linda.neullabs.com/providers/groq) - [OpenRouter](https://linda.neullabs.com/providers/openrouter) - [Ollama (local)](https://linda.neullabs.com/providers/ollama) ## Use cases - [Checkout rescue with multi-agent handoff](https://linda.neullabs.com/use-cases/checkout-rescue) — A stalled checkout triggers an exit-intent rescue agent with a different persona, empowered to offer a small discount and instructed to keep the conversation short. The user sees one chat. - [Extract any table → CSV](https://linda.neullabs.com/use-cases/extract-anywhere) — Point Linda at any HTML table — your CRM, an admin grid, a wiki, a third-party SaaS — and have it return clean CSV. Universal table extractor via the linda.extract() primitive. - [In-page copilot for your app](https://linda.neullabs.com/use-cases/in-page-copilot) — An AI agent that reads your live DOM and answers questions about whatever the user is looking at. No state-plumbing, no useCopilotReadable, no glue code — Linda reads /page/dom.html natively. - [Expose your page as an MCP server](https://linda.neullabs.com/use-cases/mcp-server) — Turn Linda into an MCP server so Claude Desktop, Cursor, or Continue can read your page directly. Your VFS and primitives become resources and tools the external agent can call. - [Client-side PDF Q&A](https://linda.neullabs.com/use-cases/pdf-qna) — User drags a PDF, asks questions, gets answers — all in the browser. No upload. No server. No 700 MB Docker image for pdf-processing. Compliance and privacy teams love it. - [Drop a resume, auto-fill the application](https://linda.neullabs.com/use-cases/resume-autofill) — User drops a PDF or DOCX resume. Linda parses it client-side, runs the resume-intake skill, and fills the application form's name, email, experience, education, and skills fields automatically. - [Script-tag signup forms](https://linda.neullabs.com/use-cases/script-tag-signup) — Replace a long signup form with a conversational AI agent in 10 seconds. Drop the script tag, mark up your form with data-linda, and the agent fills the inputs as the user types. - [Browser extension with per-origin agents](https://linda.neullabs.com/use-cases/browser-extension) — Manifest V3 reference scaffold. One extension, a different Linda agent per SaaS — Zendesk, Salesforce, HubSpot, GitHub. Same-origin DOM access, content script injection. ## How Linda compares - [vs CopilotKit](https://linda.neullabs.com/compare/copilotkit) — CopilotKit gives you React components for AI copilots; Linda gives you a browser agent that reads your live DOM. Same neighborhood, different bets. Here's when each wins. - [vs PageAgent](https://linda.neullabs.com/compare/pageagent) — PageAgent and Linda both put an agent on the page. The difference is abstractions: Linda exposes a VFS, hooks, skills, and multi-agent; PageAgent is leaner but less primitive-rich. - [vs Stagehand](https://linda.neullabs.com/compare/stagehand) — Stagehand automates a browser from the server with act/extract/observe primitives. Linda is the same primitives, on the user's browser, with their consent. Different problems. - [vs Typeform](https://linda.neullabs.com/compare/typeform) — Typeform is a hosted form-builder SaaS. Linda is an in-page agent SDK that drops into your own pages. Comparing them is comparing a SaaS to a runtime — but they solve the same problem. - [vs Vercel AI SDK](https://linda.neullabs.com/compare/vercel-ai-sdk) — Vercel AI SDK is plumbing for streaming LLM responses in Next.js. Linda is an agent runtime for your page. They're complementary — many Linda apps use the Vercel AI SDK underneath for the proxy. ## Articles - [Why we built Linda: forms aren't the bottleneck, agents are](https://linda.neullabs.com/blog/why-we-built-linda) — 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. - [The agent VFS pattern: give the LLM a workspace, not a prompt](https://linda.neullabs.com/blog/agent-vfs-pattern) — 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. - [Browser-side PDF Q&A without uploading the file](https://linda.neullabs.com/blog/browser-side-pdf-qna) — 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. - [Multi-agent handoffs: rescuing a stalled checkout](https://linda.neullabs.com/blog/multi-agent-checkout-rescue) — How to build a save-the-sale agent that swaps personas mid-flow on exit intent. The patterns, the triggers, the anti-patterns. Worked example with code. - [Linda vs CopilotKit vs Stagehand — picking your in-browser agent stack](https://linda.neullabs.com/blog/in-browser-agent-stack) — An honest decision matrix for three popular in-browser AI agent libraries. Different problems, different trade-offs, different bets — and what to pick by use case. - [Building a Chrome extension with per-origin AI agents](https://linda.neullabs.com/blog/chrome-extension-per-origin-agents) — One Manifest V3 extension, a different Linda agent on every SaaS — Zendesk, Salesforce, HubSpot, GitHub. The scaffold, the patterns, what passes Chrome Web Store review, and what doesn't. - [Streaming Claude responses over a 1 KB Node proxy](https://linda.neullabs.com/blog/streaming-llm-proxy) — Why we ship @linda/server — a minimal SSE proxy that hides your API key without becoming a backend. The streaming-from-zero pattern, the trade-offs, and when it's actually necessary. - [Turning your page into an MCP server for Claude Desktop](https://linda.neullabs.com/blog/your-page-as-mcp-server) — Expose your live browser tab as a Model Context Protocol server so Claude Desktop, Cursor, or Continue can read it directly. The pattern, the code, and the surprisingly useful workflows it unlocks. - [Shadow DOM, agent chat, and not fighting your CSS](https://linda.neullabs.com/blog/llms-shouldnt-fight-css) — Why Linda renders the chat UI into a Shadow DOM, how it stays style-isolated against arbitrary host CSS, and the surprising number of edge cases that this design solves for free. ## Raw markdown Every blog post is available as raw markdown for AI ingestion at `https://linda.neullabs.com/raw/.md`. Example: - https://linda.neullabs.com/raw/why-we-built-linda.md - https://linda.neullabs.com/raw/agent-vfs-pattern.md - https://linda.neullabs.com/raw/browser-side-pdf-qna.md ## Reference - Open-source repo: https://github.com/neul-labs/linda - Technical docs: https://docs.neullabs.com/linda - npm @linda/core: https://www.npmjs.com/package/@linda/core - License: MIT - Authored by: Dipankar Sarkar, Neul Labs ## Full content For one-fetch ingestion of all canonical content: https://linda.neullabs.com/llms-full.txt