πŸͺ¨ VOICE MODE IS LIVE β€” full spoken conversation, ~1.5s to first reply, real barge-in
Vibe using β€” not vibe coding

Don't learn the software.
Just tell it what you want.

Cairn is an agentic AI copilot that lives inside your product and actually gets things done for your customer β€” planning the steps, clicking, filling, navigating, or talking, then checking its own work β€” while they just describe what they want.

16
fixed verbs β€” never a raw click it invented
~1.5s
to first spoken reply, streamed
MIT
open source, live on npm today
any
framework β€” Next.js, or any other

How it works

Three real steps. Nothing improvised.

The agent never guesses at a UI it's never seen β€” every step below works from a real, verified map of your app.

01 β€” one command

Point it at your app

Reads your real source (or crawls a running app for any other framework), maps what's actually clickable, and wires the widget into your layout automatically.

bash
# run this inside your app
npx @cairnvibe/indexer setup

βœ“ detected Next.js (App Router)
βœ“ installed @cairnvibe/core, indexer, sdk
βœ“ wired <CairnCopilot/> into app/layout.tsx
βœ“ manifest built β€” 14 pages, 52 elements mapped
02 β€” deterministic

It learns what your app can actually do

Real data shapes, real business rules, real handler functions β€” not guesses from button labels. A live scan also catches anything rendered dynamically.

ui-manifest.json
/invoices
  Invoice { status: "Paid" | "Overdue" | "Archived" }
  archiveInvoice(id) β†’ handled by app/api/invoices/[id]/route.ts
  pattern: table-crud β€” matched, playbook attached

/board
  pattern: kanban β€” matched, playbook attached
03 β€” live

A customer talks, the agent acts

One of 16 verbs, re-validated server-side every single time β€” it can only take an action you registered, and it never invents a click.

customer talking to the agent
you "archive the invoice for Acme Co"
β†’ read   invoice-table  β†’ found INV-2201
β†’ do     archiveInvoice(INV-2201)  β†’ status: Archived

agent "Archived Acme Co's invoice."

Live in your app

Your customer sees a normal app. Then it just does things.

The exact widget, the exact conversation shape β€” a real element gets highlighted before anything happens, and the confirmation names what actually changed.

yourapp.com/invoices
Home   Invoices   Sessions   Board   Agents
ClientAmountStatus
Acme Co.$1,200.00Overdue
Globex Inc.$450.00
Initech$980.00
archive the invoice for Acme Co
do β†’ archiveInvoiceArchived Acme Co's invoice.
Ask Cairn a question…

How the agent works

Plans the steps. Acts. Checks its own work.

A goal that needs more than one step runs through a real Planner β†’ Executor β†’ Critic loop β€” a genuinely separate pass verifies each real result before continuing, replanning, or stopping.

agent trace β€” realtime & typed, identical
you "find the invoice for Acme Co and archive it"

planner 1. find Acme Co's invoice   2. archive it
step 1  β†’ read invoice-table β†’ found INV-2201
critic βœ“ task 1 complete β€” advancing
step 2  β†’ do archiveInvoice(INV-2201) β†’ status: Archived
critic βœ“ task 2 complete β€” done

agent "Archived Acme Co's invoice."
explain highlight open navigate tour do click fill read call_tool drag select key scroll wait_for batch

Voice mode

Not a mic button bolted on. A real conversation.

A persistent WebSocket, not a buffered clip β€” streaming starts in ~1–1.5s instead of a 5–10s wait. Talk over it mid-sentence and it stops immediately.

● Listening…

"…and can you read me back what's overdue this month?"

barge-in ready tours narrated live memory across turns Deepgram STT/TTS

What's actually running underneath

Not a demo trick. A real system.

Any framework, any stack

React via <Copilot/>, or drop <cairn-widget> into Vue, Angular, Svelte, or a plain static page β€” same widget, zero dependencies.

Works on apps you didn't write

Point cairn build at a running URL instead of source and it crawls the rendered page with a headless browser β€” any framework's output.

Learns your platform as it goes

Every task that genuinely completes can leave behind a small, verified Skill β€” a real fact about how your app works, never user data β€” reused next time.

Real, tiered memory

An explicit remember, a searchable turn history, and long-term facts recalled only when relevant β€” a real SQLite store, not just what fits in one request.

Capability tiers

explain / guide / act caps what the agent is allowed to do, independent of which actions your app has registered β€” dial it per customer, per plan.

Session-aware key rotation

A confirmed-dead API key is excluded for the rest of the process's life; a rate limit retries on a different configured key automatically β€” real reliability, not a single point of failure.

Install

One command. It asks, it doesn't demand.

Works end to end on any framework, live-verified β€” Next.js gets the deeper, AST-based source analysis, and everything else gets the same real runtime via a headless-browser crawl instead of a source read.

bash
# run this inside your existing app
npx @cairnvibe/indexer setup

# installs the packages, asks a couple of skippable questions β€”
# which LLM provider and key, whether you want voice β€” wires the
# widget into your real layout file, and builds once. Every future
# `npm run build` regenerates the manifest on its own.

Works with

React Next.js Vue Angular Svelte Plain HTML Anthropic Groq Deepgram

CLI reference

Eight commands, that's the whole surface.

CommandWhat it does
cairn setup [dir]The one-command path β€” installs, asks skippable questions, wires the widget into your real layout, builds once, sets up auto-rebuild.
cairn init <dir>The manual version of the same scaffolding β€” no prompts, no installs, no file edits beyond new files.
cairn scan <dir>L1 only β€” deterministic, no LLM call, no API key needed.
cairn build <dir>Full pipeline against Next.js source β€” writes ui-manifest.json.
cairn build <url>Crawl mode β€” points at a running app instead of source, works on any framework.
cairn diff <a> <b>What changed between two manifests β€” useful in CI to catch silent drift.
cairn docs <dir>Reads an existing manifest and writes a human-readable CAIRN_DOCS.md.
cairn webmcp <dir>Reads a manifest, generates a component that registers your already-traced actions as WebMCP tools for any MCP-compatible agent.

Vibe using

Stop building onboarding flows. Let people say what they want.