| title | Profiles |
|---|---|
| description | Persist and reuse browser session state (cookies, local storage) across sessions |
Kernel 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 runs.
The first step in using profiles is to create one, optionally giving it a meaningful name that is unique within your organization.
import { ConflictError, Kernel } from "@onkernel/sdk";
const kernel = new Kernel();
try {
await kernel.profiles.create({ name: "profiles-demo" });
} catch (err) {
if (err instanceof ConflictError) {
// Profile already exists; continue
} else {
throw err;
}
}from kernel import AsyncKernel, ConflictError
kernel = AsyncKernel()
try:
await kernel.profiles.create(name="profiles-demo")
except ConflictError:
passAfter creating the profile, you can reference it by it's 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",
// or
// id: profile.id,
save_changes: true,
},
});kernel_browser = await kernel.browsers.create(
profile={
"name": "profiles-demo",
// or
// "id": profile.id,
"save_changes": True,
}
)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);print("Live view:", kernel_browser.browser_live_view_url)
# Navigate and create login state ...
await kernel.browsers.delete_by_id(kernel_browser.session_id)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);kernel_browser2 = await kernel.browsers.create(
profile={"name": "profiles-demo"}
)
print("Live view:", kernel_browser2.browser_live_view_url)- A profile's
namemust be unique within your organization. - Profiles store cookies and local storage. Start the session with
save_changes: trueto 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.