RECORDING 00:00:00

For sites and accounts you are authorized to access.

Any website. Behind any login. Callable.

Most of the web has no API — and the part that matters to your company has no API and a login. Record the task once. Writ hands you back an endpoint.

Start locally — free
Interactive demo

Watch Writ record a workflow — then take over.

Sign-in, 2FA, extraction, download — on a demo portal. Click anywhere in the page to take over.

End of the demo

You just made a site callable. Now do it with yours.

  • 9 actions recorded
  • 4 steps after optimization
  • 1 callable endpoint

This demo’s workflow is not saved: it lives in this page. No credit card.

wrı
Configure Untitled workflow Click to finish recording →

New workflow

Set up what gets recorded

Run typeEdit
One-off Live session

Run it, get a result, then stop. Ideal for an extraction, a form submission or a data pull — which is what most workflows need.

Entry URL

The page where recording will start.

Run on
AutoBest available agent
Or pin a specific agent…

Choose where the browser runs. Local agents use your own machine’s browser and network.

Free plan · unlimited runs on your own machine · no credit card
START 00:00:12
01
Zero friction

Start in one line.

Pick what you want to start — record and call it, watch a page, or crawl a site — then pick your language. Each one is a single call, through the same door: plain HTTP, one line for your assistant, or a published SDK.

One call turns a site into an API. Writ checks your own workflows and ready-made listings first — both free — then its agent drives a real browser and saves the workflow. Poll the build id; what you get back has its own endpoint.

# One call. Writ's agent drives the browser and saves the workflow.
curl -X POST https://api.usewrit.app/api/v1/website-to-api \
  -H "Authorization: Bearer $WRIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://acme.example",
       "goal": "return a SKU'"'"'s price and stock"}'
response
{ "build_id": 2291,
  "status": "queued",
  "goal": "return a SKU's price and stock" }

The slug exists because you published that workflow, and the key is a consumer key minted with it — not your account key.

SIGN IN 00:00:20
02
Reach

It signs in as you — including 2FA.

A persona holds the credentials, the fingerprint, the egress route and a session that survives between runs. Use personas only with sites and accounts you are authorized to access.

hunter2-prod-9f {{secret:password}} substituted at execution, never in a transcript
sid=8f3a…c21 cookie: [redacted] redacted in every captured header

Stored encrypted · resolved at run · never returned in clear.

PUBLISH 00:00:28
03
Doors

One row. Five doors.

The moment it saves it is already a REST endpoint, an MCP tool, an OpenAI-compatible endpoint, a signed webhook and a scheduled job.

acme-supply · invoices id 353 REST POST /v1 MCP one tool Webhook HMAC Schedule cron OpenAI streaming
curl -X POST "https://api.usewrit.app/api/v1/workflows/353/runs" \
  -H "Authorization: Bearer wt_…" \
  -H "Content-Type: application/json" -d '{}'

Same row, five ways in. The interface stays the same; its URL depends on where the workflow runs — locally, through Uplink, self-hosted or in Writ Cloud. Publishing exposes the workflow; Automations decide when and why it runs.

VENUE 00:00:36
04
Where it runs

Two machines. Each reaches what the other can’t.

Your machine is already inside your network. Ours is always on. Link them and the cloud becomes the front door for both.

your network nothing opened caller your code · your AI front door api.usewrit.app Writ agent on your laptop

What this required from your firewall: no inbound rule · no public hostname · no port opened

Nothing dials in. The agent holds one outbound connection, and the call rides back down it. There is no inbound rule to write and no port to open.

Your own machine — free, no account, runs while it’s awake; only the result leaves.

The agent dials out. Nothing dials in — a system behind your VPN becomes callable without opening a single inbound port. Local callers can stay entirely local; add Uplink only when a remote caller needs to reach a workflow behind your firewall.

Our open-source build cannot bill you — the billing code is not compiled into it.

REPLAY 00:00:44
05
Determinism

Built with AI. Run without it.

Building is where the intelligence goes, and it costs what it costs — once. After that there is no model in the loop.

Run 1
opens a browser
signs in · 2FA
banks the session
model calls 3
Run 200
reuses the session
no browser
plain HTTP
model calls 0
⚒ When the site changes
  1. a step fails: no valid selector
  2. the failing step + the live DOM go out
  3. the candidate is validated against the live page — or rejected
  4. the run completes

Auto-repair is opt-in, off by default, and a cloud capability — turning it on pins that workflow to the cloud.

WATCH 00:00:52
06
Watch and act

A change is a trigger, not just an alert.

Point a monitor at a value. When it moves, that is an event — and the event runs a workflow.

pricewatch/iphone-16-pro 1× selector read
$1,100
eventchange_detected
conditionprice < threshold
actionrun workflow · notify

The reaction starts from the persona’s warm session — no cold login. If the action fails, Writ logs the run and applies the retry policy you configured.

HARVEST 00:01:00
07
Whole sites

A whole site, as a dataset.

Describe what you want in plain language. Writ compiles it into a scope, crawls it, and hands you a dataset that is itself callable.

/ /about /pricing /docs /login /account /account/orders /account/invoices /orders/8841 /orders/8842 /invoices/2291 login wall
5 URLs reachable from one seed

Without a session the frontier dead-ends at /login. Everything past it is undiscoverable — not slow to reach, undiscoverable: those URLs appear in no sitemap and nothing links to them from the public site.

Illustrative topology. A real Harvest runs inside the scope you set — includes, excludes and rate caps — and respects robots.txt.

proof 00:01:08
Before you believe any of it

Read the code, then read the limits.

Everything above is a claim until you can check it. So here is the code that backs it, the guarantees that hold because of how it is built, and the things Writ does not do.

Read the code

The engine that runs your workflows is public. You can read it, run it, and check that it does what this page says.

usewrit/writ the platform + the local engine
usewrit/writ-sdks four clients: TypeScript, Python, Go, Rust
usewrit/writ-mcp the MCP bridge any client can install

Also public: changelog · status · docs · trust center

True by construction

Not promises — consequences of how it is built. Each one names its mechanism.

  • A run on your own machine cannot be billed: the billing code is not compiled into the open-source build.
  • An intranet system needs no inbound port: the agent holds an outbound connection, and only the workflow’s result travels back.
  • A recorded workflow replays without a model: the steps are already decided, so a replay spends no AI tokens at all.
What it does not do

The edges, stated plainly. If one of these is your case, you will know before you sign up rather than after.

  • It does not defeat access controls. It signs in as you, with your credentials, on sites you are authorized to use.
  • It is not a general web index. You point it at sites you choose; nothing is collected in the background.
  • Managed cloud runs in one region today — OVHcloud in Canada. We will name others when they exist.
COST 00:01:16
08
Pricing

One pool. Any mix.

Cloud runs are metered by runtime and spend one credit pool — on compute, premium egress or AI, in whatever mix you choose.

Free $0/mo · 1k credits the engine — unlimited local runs, 2FA included
Starter $15/mo · 15k credits always-on — 1-minute monitors that never sleep
Pro $49/mo · 49k credits premium execution — tougher sites, more concurrency
Growth $199/mo · 199k credits your fleet — link 5 machines, 30-second monitors
Scale $499/mo · 499k credits volume — 75 concurrent browsers, 10-second monitors

Runs on your own machine are free and unmetered, on every plan. When the pool runs dry, cloud runs pause until you top up — local never stops. Prices in USD, billed monthly. Example: one pool can be spent on browser runtime, premium egress or optional AI repair — local runs use no credits at all.

FAQ 00:01:24

Questions people actually ask

Is it really free?
Yes. Create a free account and start building: runs on your own machine use no cloud compute and cost nothing, and the free plan includes a taste of the cloud. Paid plans add always-on execution, more cloud time and managed AI. The desktop app also has a local-only mode that works without an account, for fully offline use.
How is this different from a normal web integration?
Writ drives a real browser signed into your own accounts, so it works on logged-in, JavaScript-heavy pages with two-factor, where plain HTTP calls fail. And it publishes the result as a stable API instead of brittle parsing code.
Does my data leave my computer?
You choose the execution mode per workflow. Local and linked-desktop runs stay on your machine. Writ Cloud relays only the trigger and the result. Managed cloud runs execute in Writ Cloud, so the data that run needs is processed there.
Can I use my own AI keys?
Yes. Connect your Anthropic, OpenAI, or Ollama keys and every AI feature runs on them, unbilled by Writ. Keys are stored locally.
What happens when a site changes?
Self-healing selectors absorb small changes on every venue. For bigger breaks, AI auto-repair — opt-in, on managed cloud — rewrites the recipe and keeps your automation running.
Is this allowed?
Writ runs on your own accounts, with your own credentials and data, on sites you are authorized to use. It is automation of your own access, not a bypass of anyone else's. You are responsible for complying with the terms of the sites you automate.
Where do my credentials live?
In a persona vault, encrypted. Local personas never leave your machine; cloud personas are stored encrypted and resolved only at execution — secrets are substituted at run time and never appear in transcripts or captured headers.
Can I take my workflows elsewhere?
Yes. A workflow is a portable definition: the same one runs locally, self-hosted or in the cloud, and the open-source build runs without a cloud account.
Does Writ bypass 2FA?
No — it completes yours, it never goes around it. A persona can hold the TOTP secret you enrolled and mint the code at run time, or read a one-time code from a mailbox you connected. A challenge Writ cannot complete with what you gave it fails the run; it is never bypassed.
What happens when my credit pool runs out?
Cloud runs pause until the next monthly grant or a top-up — nothing overages silently, and nothing is deleted. Runs on your own machine are never metered, so local keeps working the whole time.
What exactly does Writ Cloud receive?
For a linked local run, only the trigger and the result relay through Cloud — the run itself executes on your machine. For a managed cloud run, the data that run needs is processed on our fleet for the duration of the run. Local-only and self-hosted setups send nothing at all.
Can I delete my stored credentials and sessions?
Yes. Deleting a persona removes its credentials and saved sessions, and you can disconnect a linked machine and revoke its access at any time. Local personas live only on your machine to begin with.
END 00:01:30

Turn your first website into an endpoint.

Free to start. Unlimited on your own machine, forever.

No account required for Local. Connect Cloud when you need always-on.