Skip to main content
Kernel browsers should be terminated after you’re done with them.
Using Playwright/Puppeteer’s method browser.close() does not delete the browser. Use one of the methods below to delete the browser.

Deleting a browser via session ID

Every browser instance has a session_id. You can delete any browser using its session ID:
import Kernel from '@onkernel/sdk';

const kernel = new Kernel();

await kernel.browsers.deleteByID('htzv5orfit78e1m2biiifpbv');
from kernel import Kernel

kernel = Kernel()
kernel.browsers.delete_by_id("htzv5orfit78e1m2biiifpbv")
package main

import (
	"context"

	"github.com/kernel/kernel-go-sdk"
)

func main() {
	ctx := context.Background()
	client := kernel.NewClient()

	if err := client.Browsers.DeleteByID(ctx, "htzv5orfit78e1m2biiifpbv"); err != nil {
		panic(err)
	}
}

Automatic deletion via timeout

If you don’t manually delete a browser, it will be automatically deleted after a configurable timeout (default 60 seconds). The timeout begins once the browser enters standby — i.e. when there’s no CDP or WebDriver client, no Live View viewer, and no computer controls request in flight. You can set a custom timeout of up to 72 hours when creating a browser:
import Kernel from '@onkernel/sdk';

const kernel = new Kernel();

const browser = await kernel.browsers.create({ timeout_seconds: 300 });
console.log(browser.session_id);
from kernel import Kernel

kernel = Kernel()

browser = kernel.browsers.create(timeout_seconds=300)
print(browser.session_id)
package main

import (
	"context"
	"fmt"

	"github.com/kernel/kernel-go-sdk"
)

func main() {
	ctx := context.Background()
	client := kernel.NewClient()

	browser, err := client.Browsers.New(ctx, kernel.BrowserNewParams{
		TimeoutSeconds: kernel.Int(300),
	})
	if err != nil {
		panic(err)
	}

	fmt.Println(browser.SessionID)
}