What survives between two browser sessions?
A profile is saved browser state. A reconnectable session is a browser that is still running. A managed authentication connection can establish or verify a login. These mechanisms preserve different things and need separate tests.
A restored cookie can still refer to an expired website session. The success check should inspect the signed-in account and a protected page, rather than treating a successful profile API response as proof of login.
Compare saved state
Notte: Profiles save cookies, local storage and session storage. Sessions start with fresh state by default. Persisting a profile writes state back when the session ends; a running session can also save its state explicitly.
Steel: The Profiles API documents reusable browser context, cookies, extensions, credentials and browser settings. Steel also documents lighter auth-context reuse, which should not be confused with a complete profile.
Compare the login path
Notte: Vaults substitute credential placeholders in supported browser actions outside the model context. Managed Auth checks requested saved connections before automation. Personas supply an inbox and optional phone number for verification workflows.
Steel: Steel's Credentials API stores credentials for users or agents. Its cookbook demonstrates using stored credentials with Playwright, while profiles and auth contexts preserve signed-in browser state.
Compare the browser lifecycle
Notte: Create an owned browser session, connect Playwright or Puppeteer over CDP, and stop the session when the work finishes. Browser lifecycle management remains necessary even when the control socket disconnects.
Steel: Steel sessions expose browser connection details for existing automation code. Create and release the owned session through Steel's lifecycle API; a browser library is the controller, not the infrastructure scheduler.
How to evaluate this choice
Choose saved profiles for repeatable state restoration, a live session for work that must continue in the same browser, and managed authentication when readiness needs more than loading cookies.
- List the exact stores the workflow needs: cookies, local storage, other site data or open pages.
- Save state explicitly using the selected provider's profile contract.
- Start a second session and verify the expected account on the website.
- Test expiry and concurrent writers instead of assuming state can be shared freely.
- Keep downloaded files separate from browser login state.
Requirements side by side
| Requirement | Notte | Steel |
|---|---|---|
| Saved browser state | Documented | Documented |
| Credential handling | Documented | Credentials API |
| Website sign-in | Documented | Profile / credential flows |
Sources: docs.notte.cc [1] ↗docs.notte.cc [2] ↗docs.notte.cc [3] ↗docs.notte.cc [4] ↗docs.notte.cc [5] ↗docs.notte.cc [6] ↗docs.steel.dev [7] ↗docs.steel.dev [8] ↗docs.steel.dev [9] ↗docs.steel.dev [10] ↗docs.steel.dev [11] ↗docs.steel.dev [12] ↗
Which approach fits?
Choose Notte when your browser workflow needs saved logins, credential fill or scheduled Python code alongside the browser.
Notte tradeoff: A saved profile restores browser state; it does not prove that a website still considers the user signed in. Use Managed Auth when the workflow needs connection readiness before it starts.
Choose Steel when you want browser infrastructure that can fit a self-hosted deployment, with profiles and credentials available through browser-focused APIs.
Steel tradeoff: Hosted and self-hosted Steel are different operating choices. A cloud feature's documentation does not establish identical packaging, retention or operational support in a self-hosted installation.
A useful acceptance check
Write a pass/fail result for the real task before running the evaluation. Record the account, configuration and code version next to that result. Repeat failures need an explanation, not an automatically different browser configuration.