Jelly
Browser instrumentation for agents

Give agents a real browser.

Jelly turns Chromium into a compact, inspectable tool surface for agents: discover semantic browser operations progressively, batch ordered actions, verify outcomes, and preserve evidence without publishing every browser primitive at once.

Live browser trace

Watch Jelly work.

Jelly documenting Jelly. This video was generated by Jelly itself from a real Chromium session. After each browser action, Jelly waits for the page to settle, captures the resulting state, labels what happened, and assembles the steps into this self-documenting trace.

Who it is for

Teams that work through websites.

Jelly is for teams whose product or internal automation has to use third-party web apps as part of the job. Log in, move through multi-step flows, upload or download files, change records, and keep going when the page changes.

AGENT PRODUCTS

Building agents that do work for users

Your agent needs to use customer portals, admin panels, CRMs, booking systems, vendor sites, or other browser-only software on a user's behalf.

OPERATIONS AUTOMATION

Automating work that still lives in web apps

Finance, support, onboarding, procurement, and back-office workflows often span tools with weak APIs or no useful API at all.

AI PLATFORM TEAMS

Giving several agents one browser layer

You want shared browser behavior for inspection, actions, verification, files, failures, and human handoff instead of rebuilding it in every agent.

Real use cases

What people use it for.

FINANCE / OPS

Download reports and invoices

Open a vendor portal, apply filters, export a report, wait for the download, verify the file, and hand it to the next step.

SUPPORT / ADMIN

Update customer accounts

Find an account in an internal admin tool, change a status or setting, and verify that the new state is visible before continuing.

ONBOARDING

Complete multi-site setup

Create or update records across SaaS and partner portals, upload required files, and check each step before moving on.

RESEARCH

Collect data from dynamic sites

Navigate JavaScript-heavy pages, read structured content, follow links, and save screenshots or downloads when evidence matters.

QA / PRODUCT OPS

Run end-to-end browser checks

Have an agent execute a user flow, assert the expected page state, and keep screenshots or files from the run for review.

HUMAN IN THE LOOP

Pause when a person is required

Run until authentication, approval, or a human decision is needed, hand off, then inspect the resulting state and continue.

What Jelly handles

Work around the click.

The useful part is not another click command. It is keeping enough state and structure around the browser action for an agent to continue without guessing.

INSPECT

See what is actually on the page

Read content, discover interactive elements, inspect forms, links, images, tabs, accessibility state, and network activity.

VERIFY

Check what changed

Wait for or assert URLs, text, visibility, image readiness, downloads, and other conditions the next step depends on.

FILES

Know which file came from the run

Register screenshots and downloads with paths, metadata, integrity checks, and verification context.

FAILURES

Recover without parsing error prose

Use typed failures to decide when to inspect again, route elsewhere, stop, or ask a human for help.

ROUTINES

Reuse flows that need structure

Move repeated sequences into guarded routines when they need branching, loops, recovery, HITL, or explicit cleanup.

CLI / MCP

Call it from the system you already have

Use Jelly directly from the CLI or expose the small-surface MCP Agent API: progressive schema discovery, ordered browser calls, retained events, and an explicit large-surface compatibility mode.

Where it fits

Know when not to use it.

DETERMINISTIC SCRIPT

Use Playwright or Selenium

If you control the flow and a normal browser script is enough, use the simpler tool. Jelly is not trying to replace that.

RAW BROWSER CONTROL

Use a smaller browser tool server

If the model only needs basic browser controls, a smaller tool surface may be the better fit.

AGENT WORKFLOW

Use Jelly when the run has to hold together

Jelly is useful when the agent needs current state, checks, files, recovery, routines, or human handoff across several browser steps.

How it stays inspectable

How runs stay understandable.

Actions report what happened

A successful tool call means Jelly performed the browser action. It does not automatically mean the application reached the intended state.

Checks establish what must be true

When later work depends on a fact, wait for it or assert it explicitly instead of carrying an assumption forward.

Artifacts keep evidence attached

Screenshots and downloads can be registered with the run instead of becoming anonymous files on disk.

Policy stays with your agent

Jelly exposes browser state, failures, and workflow controls. Your agent or routine still decides what to do with them.

Before adopting it

Start with one task.

Do I need routines immediately?

No. Call individual tools directly. Move a sequence into a routine when branching, recovery, HITL, or reuse makes that worthwhile.

Does Jelly replace my agent framework?

No. Jelly does not choose goals or plan the task. It handles browser instrumentation and execution.

What happens when automation cannot continue?

Use HITL for the human step, then re-inspect the browser and continue from the resulting state.

How much do I need to learn?

Start with the tool schemas and direct calls. The deeper reliability and routine model is there when the workflow actually needs it.

Quickstart

Try Jelly.

The fastest way to evaluate Jelly is to run it, inspect a page, perform one action, and verify the result.

jelly / quickstart
$ git clone https://github.com/FabioFlorey/jelly.git
$ cd jelly
$ ./quickstart.sh

# inspect the setup without changing anything
$ ./quickstart.sh --dry-run