Skip to main content
Profiles let you capture browser state created during a session (cookies and local storage) and reuse it in later sessions. This is useful for persisting login state or other site preferences across browser sessions.

1. Create a profile

The first step in using profiles is to create one, optionally giving it a meaningful name that is unique within your organization.
import Kernel, { ConflictError } from '@onkernel/sdk';

const kernel = new Kernel();

try {
  await kernel.profiles.create({ name: 'profiles-demo' });
} catch (err) {
  if (err instanceof ConflictError) {
    // Profile already exists
  } else {
    throw err;
  }
}

2. Start a browser session using the profile and save changes

After creating the profile, reference it by its name or id when creating a browser. Set save_changes to true to persist any state created during this session back into the profile when the browser is closed.
const kernelBrowser = await kernel.browsers.create({
  profile: {
    name: 'profiles-demo',
    save_changes: true,
  },
});

3. Use the browser, then close it to persist the state

After using a browser with save_changes: true, closing the browser will save cookies and local storage into the profile.
console.log('Live view:', kernelBrowser.browser_live_view_url);

// Navigate and create login state...

await kernel.browsers.deleteByID(kernelBrowser.session_id);

4. Start a new session with the saved profile (read-only)

Create another browser using the same profile name. Omitting save_changes leaves the stored profile untouched.
const kernelBrowser2 = await kernel.browsers.create({
  profile: { name: 'profiles-demo' },
});

console.log('Live view:', kernelBrowser2.browser_live_view_url);

Other ways to use profiles

The API and SDKs support listing, deleting, and downloading profile data as JSON. See the API reference for more details.

Notes

  • A profile’s name must be unique within your organization.
  • Profiles store cookies and local storage. Start the session with save_changes: true to write changes back when the browser is closed.
  • To keep a profile immutable for a run, omit save_changes (default) when creating the browser.
  • You can spin up multiple browsers in parallel using the same profile.
  • Profile data is encrypted end to end using a per-organization key.