Vibe using, not vibe coding

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

Cairn is an AI agent that lives inside your product and actually uses it for your customer: clicking the real buttons, filling the real forms, running the real flow, while they just say what they want.

app.yourproduct.com/invoices

Invoices

5 of 128 shown · sorted by date
IDCustomerStatusAmount
INV-2198Northwind Traders$1,240Archive
INV-2201Acme CoOverdue$3,870Archive
INV-2204Globex$920Archive
INV-2207InitechOverdue$2,150Archive
INV-2211Umbrella Ltd$4,600Archive
Cairn● listening
find the invoice for Acme Co and archive it
planner1. find invoice 2. archive it
step 1read invoice-table ✓
step 2do archiveInvoice ✓
critic✓ task complete
Archived Acme Co's invoice.
Say it or type it
16fixed verbs, never a click it invented
~1.5sto first spoken reply, streamed
MITopen source, live on npm
Anyframework, Next.js goes deeper

The problem

Every new tool starts with a manual.

Where is the button? What is it called? Which order do I click? Learning software is the tax on using it. Cairn removes the tax.

Without Cairn

Every feature is a button someone has to find.

Dozens of controls, hidden menus and settings named by engineers. Customers guess, give up, or file a ticket.

“Where is the archive setting?”
Watch the 12-minute onboarding tutorial
Open a support ticket and wait a day
Say it instead

Now they just say what they want.

Out loud or typed, in their own words. No menu names to remember and no order of clicks to learn.

archive the invoice for Acme Co
add Sam to the teamexport last month's reportmark Globex as paidshow me overdue invoices

Any request, in plain language.

With Cairn

Cairn does the clicking, then checks its work.

It plans the steps, uses your app's own actions, and verifies the result before it tells the customer it is done.

Found INV-2201 in the invoice table
Ran the app's own archive action
Checked the status changed to Archived
Done. In seconds, with no manual.

How it works

Three real steps. Nothing improvised.

The agent never guesses at a UI it has not seen. Every step works from a verified map of your app.

Pick a step to see it

Step 1 · Point it at your app

One command, inside your app

It installs the packages, asks which model you want, and wires everything in. There is nothing to configure by hand.

# run this inside your app
npx @cairnvibe/indexer setup
✓ detected Next.js (App Router)
✓ installed core, indexer, sdk
✓ wired <CairnCopilot/> into layout
✓ manifest built · 14 pages, 52 elements

What's running underneath

Not a demo trick. A real system.

An agent loop, real voice, memory that persists, and hard limits on what it may do. Hover or tap a card to pull it forward.

Plans, acts and checksA planner splits the request into steps, the agent runs each with one of 16 fixed verbs, and a critic verifies every one.explainreaddoclickfillnavigatetour
Real, tiered memoryTurn history, an explicit remember, and long-term facts recalled only when relevant, in a real SQLite store.turn historyremember(…)long-term factsSQLite
Plans, acts and checksA planner splits the request into steps, the agent runs each with one of 16 fixed verbs, and a critic verifies every one.explainreaddoclickfillnavigatetour
Real, tiered memoryTurn history, an explicit remember, and long-term facts recalled only when relevant, in a real SQLite store.turn historyremember(…)long-term factsSQLite
Plans, acts and checksA planner splits the request into steps, the agent runs each with one of 16 fixed verbs, and a critic verifies every one.explainreaddoclickfillnavigatetour
Real, tiered memoryTurn history, an explicit remember, and long-term facts recalled only when relevant, in a real SQLite store.turn historyremember(…)long-term factsSQLite
Real voice modeA persistent WebSocket: streaming starts in about 1.5s, and talking over it stops it immediately.
Learns as it goesA completed task can leave behind a small, verified Skill: a fact about your app, never user data.// skill saved
archive-invoice
✓ verified · reused next time
Real voice modeA persistent WebSocket: streaming starts in about 1.5s, and talking over it stops it immediately.
Learns as it goesA completed task can leave behind a small, verified Skill: a fact about your app, never user data.// skill saved
archive-invoice
✓ verified · reused next time
Real voice modeA persistent WebSocket: streaming starts in about 1.5s, and talking over it stops it immediately.
Learns as it goesA completed task can leave behind a small, verified Skill: a fact about your app, never user data.// skill saved
archive-invoice
✓ verified · reused next time
Any framework, any stack<Copilot/> for React, <cairn-widget> for everything else.ReactNext.jsVueAngularSveltePlain HTML
Works on apps you didn't writePoint cairn build at a live URL and a headless browser maps it.$ cairn build https://app.com
✓ 14 pages · 52 elements
Any framework, any stack<Copilot/> for React, <cairn-widget> for everything else.ReactNext.jsVueAngularSveltePlain HTML
Works on apps you didn't writePoint cairn build at a live URL and a headless browser maps it.$ cairn build https://app.com
✓ 14 pages · 52 elements
Any framework, any stack<Copilot/> for React, <cairn-widget> for everything else.ReactNext.jsVueAngularSveltePlain HTML
Works on apps you didn't writePoint cairn build at a live URL and a headless browser maps it.$ cairn build https://app.com
✓ 14 pages · 52 elements
Safe by designIt can only take actions you registered, checked on the server against a fixed schema.do archiveInvoice(id) ✓ registered
do deleteAllUsers() ✗ blocked
eval("…") ✗ never allowed
Key rotationA confirmed-dead API key is excluded for the process's life; a rate limit retries on another key.key-1 ✗ dead · excluded
key-2 ✓ active
key-3 standby
Safe by designIt can only take actions you registered, checked on the server against a fixed schema.do archiveInvoice(id) ✓ registered
do deleteAllUsers() ✗ blocked
eval("…") ✗ never allowed
Key rotationA confirmed-dead API key is excluded for the process's life; a rate limit retries on another key.key-1 ✗ dead · excluded
key-2 ✓ active
key-3 standby
Safe by designIt can only take actions you registered, checked on the server against a fixed schema.do archiveInvoice(id) ✓ registered
do deleteAllUsers() ✗ blocked
eval("…") ✗ never allowed
Key rotationA confirmed-dead API key is excluded for the process's life; a rate limit retries on another key.key-1 ✗ dead · excluded
key-2 ✓ active
key-3 standby
Capability tiersCap what the agent may do, independent of which actions you have registered.explainguideact
Ten commands, that's itSet up, scan, build, diff and document your app from one small CLI.cairn setupcairn buildcairn scancairn diffcairn docs
Capability tiersCap what the agent may do, independent of which actions you have registered.explainguideact
Ten commands, that's itSet up, scan, build, diff and document your app from one small CLI.cairn setupcairn buildcairn scancairn diffcairn docs
Capability tiersCap what the agent may do, independent of which actions you have registered.explainguideact
Ten commands, that's itSet up, scan, build, diff and document your app from one small CLI.cairn setupcairn buildcairn scancairn diffcairn docs

Install

One command. Five things happen for you.

bash
# inside an existing Next.js app
$ npx @cairnvibe/indexer setup

✓ Installed @cairnvibe/core, indexer, sdk
✓ Provider: Anthropic · key saved (masked)
✓ Wired CairnCopilot into app/layout.tsx
✓ Added transpilePackages to next.config
✓ Manifest built · 14 pages, 52 elements

Run your app. The copilot is live.

Click the folder to close it. Drag the notes around, or click one.

1
Installs the packagescore, indexer and sdk, with a real retry prompt if it fails.

For your customers

They don't learn your product. They describe what they want and watch it happen.

For you, the builder

Every user gets a product expert without you writing an onboarding flow. Point Cairn at your source once.

For your peace of mind

The agent can only take actions you registered, checked server-side. It can never invent a click or run arbitrary code.

FAQ

Questions, answered

What does “vibe using” mean?

Vibe coding is describing the app you want built. Vibe using is describing what you want done, in software you have never opened before. You say it, and an agent does it with the app's real buttons.

Can it do anything in my app?

No, and that is the point. It can only take actions you registered, and each one is checked on the server against a fixed schema of 16 verbs. It can never invent a click or run arbitrary code.

Which frameworks does it support?

Any. Next.js gets the deepest analysis because Cairn reads the source. Every other framework is mapped by crawling the running app. The widget is <Copilot/> for React or <cairn-widget> for Vue, Angular, Svelte and plain HTML.

Which AI models and voice does it use?

You choose the provider: Anthropic, Groq or Gemini. Voice runs on Deepgram speech-to-text and text-to-speech over a persistent connection.

Is it open source?

Yes, MIT licensed. It is published on npm as @cairnvibe/core, @cairnvibe/indexer and @cairnvibe/sdk, and the source is on GitHub.

Get started

Point it at your app once.

Every customer then gets an agent that already knows your product.

$ npx @cairnvibe/indexer setup
Star on GitHub