Cloudflare open-sourced Kitesurf on November 12, making its experimental browser engine for AI agents available under Apache 2.0. It runs on Workers and supports the Chrome DevTools Protocol, or CDP. That makes familiar automation clients useful, but an existing Chrome extension still needs a separate migration plan: Kitesurf’s browser documentation explicitly trades away extensions.

AI generated this article from the linked public sources. Keith has not personally reviewed this automated edition. The proposed workflow below is analysis, not a report of a Kitesurf integration.

For a product that helps someone complete a form in their own browser, the missing extension changes the architecture. A remote page and the tab the person is looking at are separate places to do work.

A connection is only the beginning

The Kitesurf repository demonstrates connecting Puppeteer to its browser WebSocket endpoint. Its README also explains that providing a CDP endpoint does not make it a complete Chrome implementation; some DevTools features do not work yet.

There are two compatibility questions to answer. Can the automation client send the commands the task requires? And does the environment receiving those commands provide the capabilities the product relies on?

A team might successfully navigate to a page, extract its HTML, and capture a screenshot. That establishes a useful capability. It leaves open how the application will obtain user-selected context, present a review interface, and work with the person’s active session.

Those concerns can be easy to overlook when a migration starts with changing one connection URL.

Cloudflare’s hosted Kitesurf documentation, last updated October 6, describes a stateless engine suited to compatible tasks such as extraction and screenshots. It lists extensions among the features traded away and says long-running authenticated sessions requiring persistent state should use the default Chromium browser instead. The new open-source release remains explicitly experimental.

What an extension workflow already carries

The public Exempliph.ai case study describes a built, actively evolving application platform using Chrome extensions alongside TypeScript, Vue, Next.js, and Firebase. Its browser workflow combines reusable profile information with reviewed form answers, site-specific permission, and support for common conditional controls. Complex widgets, payments, legal declarations, and CAPTCHAs remain manual boundaries.

That is a concrete reason to inspect the whole workflow before selecting another browser engine. Filling text is one part of a product that also has to make the prepared work understandable to the person applying.

The case study does not document Kitesurf use. The following is a hypothetical design review for a product with that shape.

Start by listing what each part needs. Public opportunity research may need a URL and a short-lived page. Drafting may need the applicant’s selected profile information. Applying those drafts may need the actual form currently open in the user’s browser. Review needs an interface the person can inspect and correct.

Those requirements need explicit owners when work moves between machines.

Try the same URL in two contexts

Build a practice festival form with synthetic information. In a signed-out session, its URL shows a general opportunity description. In a signed-in session, the same URL shows an application whose fields change after the artist selects a performance category.

Ask the proposed remote research step to describe the opportunity. Then compare its page with the form visible in the user’s tab.

A successful fetch of the public description should count as successful research. It should not establish that the remote process inspected the signed-in form. In this fixture, the URL alone cannot identify which page state the person reviewed.

Next, let a preparation step produce candidate answers for the synthetic artist. Hand those answers to the component operating in the user’s browser. Check that it can identify the currently visible fields, notice the category-dependent question, and show the candidate answers for review.

Keep the final application action out of this exercise. Its purpose is to expose missing context at the boundary between research, preparation, and browser interaction.

This is a proposed acceptance exercise, not a claim that Kitesurf fails it. It helps a team discover which requirements belong to an engine adapter and which belong to the product’s user interface.

Move a bounded task first

One reasonable experiment is to keep the extension responsible for the active tab and review while evaluating a remote engine for compatible public-page research. That preserves a clear place for the user to see and correct prepared answers.

It also introduces a handoff to maintain. The research result needs its source URL and observation context; the preparation result needs a destination and a defined set of candidate fields. Unsupported pages need a visible fallback rather than a silent assumption of coverage.

A product built entirely around short-lived public-page extraction may have a much simpler migration. A product built around a person’s authenticated browser deserves a different estimate.

The industry opportunity is useful: more inspectable browser infrastructure and another engine to evaluate for bounded automation. The implementation question remains specific. Choose the task that can move, identify the context it needs, and keep the user-facing workflow intact.