Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Libretto Cloud Hosting

The hosted platform for Libretto. Deploy workflows, run them through a managed API, schedule workflow runs, and investigate failures.
Libretto Cloud is the easiest way to host and run workflows. Sign up, run one deploy command from the CLI, and your workflow is live behind a managed API. If you'd rather use a different browser or infrastructure provider, see alternative providers. The Libretto Cloud API URL is https://api.libretto.sh.

Why use Libretto Cloud

Use Libretto Cloud when you want to ship and run workflows without owning the runtime infrastructure yourself.
  • Libretto Cloud runs the browser layer for you, so you do not have to manage proxies, browser sessions, or CAPTCHA handling yourself. For location-sensitive workflows, you can still choose the hosted browser's residential proxy location.
  • By default, when a run fails, Libretto Cloud automatically analyzes the failure and emails you a summary, along with the recordings, screenshots, logs, and other debug context you need to understand what broke.
  • Deployments can also enable auto-repair, which routes failed jobs to the autofix agent instead of only sending debug context.
  • You can build, debug, and deploy workflow packages from the same CLI instead of stitching together separate tools for local development, browsers, and hosting.

Set up Libretto Cloud

  1. Create a user account and organization
    Create a new Libretto Cloud account with:
    npx libretto cloud auth signup
    If you are joining an existing organization, open the invitation link from your email instead.
  2. Create an API key
    Issue an API key for your project or environment:
    npx libretto cloud auth api-key issue --label laptop-dev
    Store the printed key as LIBRETTO_API_KEY in your .env file:
    # .env LIBRETTO_API_KEY=<issued-key>
  3. Set up a webhook
    If you want your system to receive results and failure responses from your browser automations, create a webhook endpoint so Libretto Cloud can send job.completed and job.failed events back to you:
    curl -X POST "https://api.libretto.sh/v1/webhooks/create" \ -H "x-api-key: $LIBRETTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "json": { "url": "https://example.com/libretto/webhooks", "signing_secret": "replace-with-your-secret", "description": "production job webhooks", "active": true } }'
    Stored tenant webhooks are best for long-lived destinations. Per-job or per-schedule callbacks are better for one-off or dev endpoints.
  4. Deploy a workflow
    Change into the workflow package directory before deploying. The directory you pass to deploy is the package directory that gets bundled and uploaded, and it must contain package.json:
    my-automations/ ├── package.json ├── index.ts └── src/ └── workflows/ └── check-eligibility.ts
    Then run deploy from that directory:
    cd my-automations npx libretto cloud deploy .
  5. Run the workflow
    After deploy, call the Libretto Cloud jobs API with the workflow name declared in your code:
    curl -X POST "https://api.libretto.sh/v1/jobs/create" \ -H "x-api-key: $LIBRETTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "json": { "workflow": "check-eligibility", "params": { "memberId": "12345" }, "timeout_seconds": 300 } }'
    Then fetch the result with the returned job id:
    curl -X POST "https://api.libretto.sh/v1/jobs/get" \ -H "x-api-key: $LIBRETTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "json": { "id": "<job-id>" } }'