Which execution responsibilities should remain in your application?
An external runner can preserve existing deployment and queueing systems. A native Function can provide the invocation and run-history layer. Compare supported languages, lifecycle ownership and where code executes.
An external worker, a hosted browser Function, a browser-local app action and a hosted agent are different execution models. The choice determines who deploys the code, starts the browser, records the result and stops the run.
Notte
Functions deploy Python code with a run() entry point. Invoke them over HTTP or with an SDK, inspect run history, and roll back code by redeploying an earlier version as the latest version.
Sources: docs.notte.cc ↗
Browserbase
A Function is TypeScript code published with an entry point. Invocation starts asynchronously, creates a browser, passes its connection URL to the handler, and stores the result, logs and session ID. Function webhooks report status changes.
Sources: docs.browserbase.com ↗
Kernel
Deploy a TypeScript or Python App and expose Actions that callers invoke. Kernel co-locates code with the browser environments the app creates. An Action invocation is the execution unit rather than a bare CDP connection.
Sources: kernel.sh ↗
Anchor Browser
Automation Tasks produce versioned workflows from a prompt or a recorded demonstration. Test and edit the workflow, then invoke it through the task API. Compare this authoring model with writing a handler directly.
Sources: docs.anchorbrowser.io ↗
Evaluate the operational difference
Keep an external runner when you already operate one and need portability. A native execution layer can remove deployment work; browser-local code can reduce repeated network calls. Compare actual workload behavior before assuming either always wins.
A scheduled job should return a verified result and stop its owned browser even when an action fails. The scheduler's successful HTTP trigger is not proof that the browser completed the business operation.
- Confirm the supported language, entry point and dependency packaging.
- Trace deployment, version selection, invocation and cancellation.
- Keep the handler runtime limit separate from browser session duration.
- Decide whether scheduling is native or supplied by another service.
- Associate results and logs with both the code version and browser session.
Make the acceptance test explicit
Describe the work that must finish, the account it runs under, the state it needs to retain and the expected output. Select eligible product configurations before measuring latency or price.
Run the same workflow with each proposed architecture. Keep startup measurements separate from task execution, and distinguish provider failure from a configuration error or an unsupported website action.
Choose the responsibility you want to own
An external runner keeps deployment and queues in your application. A hosted execution layer moves part of that responsibility to the browser platform. Saved browser state reduces repeated setup, while managed website authentication may add readiness checks. Choose each part deliberately rather than treating a brand as one indivisible feature list.