Libretto

Libretto is a toolkit for building robust web integrations. It gives your coding agent a live browser and a token-efficient CLI to:
- Inspect live pages with minimal context overhead
- Capture network traffic to reverse-engineer site APIs
- Record user actions and replay them as automation scripts
- Debug broken workflows interactively against the real site
We at Saffron Health built Libretto to help us maintain our browser integrations to common healthcare software. We're open-sourcing it so other teams have an easier time doing the same thing.
https://github.com/user-attachments/assets/9b9a0ab3-5133-4b20-b3be-459943349d18
Quick Links
Installation
npm install libretto
# First-time onboarding: install skills and download Chromium
npx libretto setup
# Check workspace readiness at any time
npx libretto status
setup creates the .libretto/ directory, installs agent skills, and downloads Chromium unless you pass --skip-browsers.
Use cases
Libretto is designed to be used as a skill through your coding agent. Here are some example prompts:
One-shot script generation
Use the Libretto skill. Go on LinkedIn and scrape the first 10 posts for content, who posted it, the number of reactions, the first 25 comments, and the first 25 reposts.
Your coding agent will open a window for you to log into LinkedIn, and then automatically start exploring.
Interactive script building
I'm gonna show you a workflow in the eclinicalworks EHR to get a patient's primary insurance ID. Use libretto skill to turn it into a playwright script that takes patient name and dob as input to get back the insurance ID. URL is ...
Libretto can read your actions you perform in the browser, so you can perform a workflow, then ask it to use your actions to rebuild the workflow.
Convert browser automation to network requests
We have a browser script at ./integration.ts that automates going to Hacker News and getting the first 10 posts. Convert it to direct network scripts instead. Use the Libretto skill.
Libretto can read network requests from the browser, which it can use to reverse engineer the API and create a script that directly calls those requests. Directly making API calls is faster, and more reliable, than UI automation. You can also ask Libretto to conduct a security analysis which analyzes the requests for common security cookies, so you can understand whether a network request approach will be safe.
Fix broken integrations
We have a browser script at ./integration.ts that is supposed to go to Availity and perform an eligibility check for a patient. But I'm getting a broken selector error when I run it. Fix it. Use the Libretto skill.
Agents can use Libretto to reproduce the failure, pause the workflow at any point, inspect the live page, and fix issues, all autonomously.
CLI usage
You can also use Libretto directly from the command line. All commands accept --session <name> to target a specific session.
npx libretto open <url> # launch browser and open a URL
npx libretto run ./integration.ts --headless # run a workflow and close on success
npx libretto run ./integration.ts --headless --stay-open-on-success # keep a successful run inspectable
npx libretto snapshot --session <name> # capture a screenshot and compact accessibility tree
npx libretto exec "<code>" # execute Playwright TypeScript against the open page
npx libretto close # close the browser
run sessions are inspectable through the same daemon-backed commands as open sessions. Successful runs close the browser by default; pass --stay-open-on-success to keep the browser open for pages, snapshot, and exec. Failed or paused workflows keep the browser open so you can inspect the exact page state before fixing or resuming the workflow.
Run npx libretto help for the full list of commands.
Configuration