Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.127.0"
".": "0.128.0"
}
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## [0.128.0](https://github.com/kernel/kernel-python-sdk/compare/v0.127.0...v0.128.0) (2026-10-19)


### Features

* Add browser location session policy ([48fd526](https://github.com/kernel/kernel-python-sdk/commit/48fd52646ea0dafcecd637d2cae6c71a19318f7a))
* chore(stlc): seal custom-code tracking files ([457e6c1](https://github.com/kernel/kernel-python-sdk/commit/457e6c14bd10df055044c2b48704b64d90ca8aff))
* Fence browser allowlist updates with revision checks ([a9ab0d3](https://github.com/kernel/kernel-python-sdk/commit/a9ab0d3955c3535458f99f117fae744e34c66930))
* Support existing-user AgentCard wallet imports ([c1a6765](https://github.com/kernel/kernel-python-sdk/commit/c1a6765c789f5ed7585a55780f83435cc8c5d4ee))

## [0.127.0](https://github.com/kernel/kernel-python-sdk/compare/v0.126.0...v0.127.0) (2026-10-16)


Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@ from kernel import Kernel
client = Kernel()

browser = client.browsers.create(
network={},
location={},
)
print(browser.network)
print(browser.location)
```

## File uploads
Expand Down
13 changes: 9 additions & 4 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ Types:

```python
from kernel.types import (
BrowserAllowlistState,
BrowserLocation,
BrowserLocationRequest,
BrowserLocationSource,
BrowserLocationUpdateRequest,
BrowserMemory,
BrowserMemoryRequest,
BrowserNetworkConfig,
Expand Down Expand Up @@ -484,11 +489,11 @@ from kernel.types import (
Methods:

- <code title="post /proxies">client.proxies.<a href="./src/kernel/resources/proxies.py">create</a>(\*\*<a href="src/kernel/types/proxy_create_params.py">params</a>) -> <a href="./src/kernel/types/proxy_create_response.py">ProxyCreateResponse</a></code>
- <code title="get /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">retrieve</a>(id) -> <a href="./src/kernel/types/proxy_retrieve_response.py">ProxyRetrieveResponse</a></code>
- <code title="patch /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">update</a>(id, \*\*<a href="src/kernel/types/proxy_update_params.py">params</a>) -> <a href="./src/kernel/types/proxy_update_response.py">ProxyUpdateResponse</a></code>
- <code title="get /proxies/{id_or_name}">client.proxies.<a href="./src/kernel/resources/proxies.py">retrieve</a>(id_or_name) -> <a href="./src/kernel/types/proxy_retrieve_response.py">ProxyRetrieveResponse</a></code>
- <code title="patch /proxies/{id_or_name}">client.proxies.<a href="./src/kernel/resources/proxies.py">update</a>(id_or_name, \*\*<a href="src/kernel/types/proxy_update_params.py">params</a>) -> <a href="./src/kernel/types/proxy_update_response.py">ProxyUpdateResponse</a></code>
- <code title="get /proxies">client.proxies.<a href="./src/kernel/resources/proxies.py">list</a>(\*\*<a href="src/kernel/types/proxy_list_params.py">params</a>) -> <a href="./src/kernel/types/proxy_list_response.py">SyncOffsetPagination[ProxyListResponse]</a></code>
- <code title="delete /proxies/{id}">client.proxies.<a href="./src/kernel/resources/proxies.py">delete</a>(id) -> None</code>
- <code title="post /proxies/{id}/check">client.proxies.<a href="./src/kernel/resources/proxies.py">check</a>(id, \*\*<a href="src/kernel/types/proxy_check_params.py">params</a>) -> <a href="./src/kernel/types/proxy_check_response.py">ProxyCheckResponse</a></code>
- <code title="delete /proxies/{id_or_name}">client.proxies.<a href="./src/kernel/resources/proxies.py">delete</a>(id_or_name) -> None</code>
- <code title="post /proxies/{id_or_name}/check">client.proxies.<a href="./src/kernel/resources/proxies.py">check</a>(id_or_name, \*\*<a href="src/kernel/types/proxy_check_params.py">params</a>) -> <a href="./src/kernel/types/proxy_check_response.py">ProxyCheckResponse</a></code>

# Extensions

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "kernel"
version = "0.127.0"
version = "0.128.0"
description = "The official Python library for the kernel API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/kernel/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "kernel"
__version__ = "0.127.0" # x-release-please-version
__version__ = "0.128.0" # x-release-please-version
32 changes: 32 additions & 0 deletions src/kernel/resources/browsers/browsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,10 @@
from ...types.browser_network_config_param import BrowserNetworkConfigParam
from ...types.browser_network_update_param import BrowserNetworkUpdateParam
from ...types.shared_params.browser_profile import BrowserProfile
from ...types.browser_location_request_param import BrowserLocationRequestParam
from ...types.shared_params.browser_viewport import BrowserViewport
from ...types.shared_params.browser_extension import BrowserExtension
from ...types.browser_location_update_request_param import BrowserLocationUpdateRequestParam

__all__ = ["BrowsersResource", "AsyncBrowsersResource"]

Expand Down Expand Up @@ -195,6 +197,7 @@ def create(
headless: bool | Omit = omit,
invocation_id: str | Omit = omit,
kiosk_mode: bool | Omit = omit,
location: BrowserLocationRequestParam | Omit = omit,
memory: BrowserMemoryRequest | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
Expand Down Expand Up @@ -239,6 +242,9 @@ def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view.

location: Optional session-only timezone and locale overrides. Each omitted field uses the
default for the browser's region. start_url opens once the location applies.

memory:
Memory for a non-GPU browser. Headless: 1GiB (default), 2GiB, or 4GiB. Headful:
8GiB (default) or 16GiB.
Expand Down Expand Up @@ -333,6 +339,7 @@ def create(
"headless": headless,
"invocation_id": invocation_id,
"kiosk_mode": kiosk_mode,
"location": location,
"memory": memory,
"name": name,
"network": network,
Expand Down Expand Up @@ -404,6 +411,7 @@ def update(
id_or_name: str,
*,
disable_default_proxy: bool | Omit = omit,
location: BrowserLocationUpdateRequestParam | Omit = omit,
name: Optional[str] | Omit = omit,
network: BrowserNetworkUpdateParam | Omit = omit,
profile: BrowserProfile | Omit = omit,
Expand All @@ -427,6 +435,14 @@ def update(
disable_default_proxy: If true, stealth browsers connect directly instead of using the default stealth
proxy. Deprecated in favor of proxy.mode.

location: Session-only timezone and locale overrides. Omit the object or a field to leave
it unchanged; set a string to override; set null to clear that field and use the
browser region's default. A browser that cannot change location refuses the
request before anything changes. The location applies after the request's other
changes, and start_url opens once it has applied. If applying it fails, the
other changes and the saved override remain and start_url does not open; retry
the request to apply both.

name: Human-readable name for the browser session. Omit to leave unchanged, set to an
empty string to clear the name. When set, must be unique among active sessions
within the project.
Expand Down Expand Up @@ -478,6 +494,7 @@ def update(
body=maybe_transform(
{
"disable_default_proxy": disable_default_proxy,
"location": location,
"name": name,
"network": network,
"profile": profile,
Expand Down Expand Up @@ -912,6 +929,7 @@ async def create(
headless: bool | Omit = omit,
invocation_id: str | Omit = omit,
kiosk_mode: bool | Omit = omit,
location: BrowserLocationRequestParam | Omit = omit,
memory: BrowserMemoryRequest | Omit = omit,
name: str | Omit = omit,
network: BrowserNetworkConfigParam | Omit = omit,
Expand Down Expand Up @@ -956,6 +974,9 @@ async def create(
kiosk_mode: If true, launches the browser in kiosk mode to hide address bar and tabs in live
view.

location: Optional session-only timezone and locale overrides. Each omitted field uses the
default for the browser's region. start_url opens once the location applies.

memory:
Memory for a non-GPU browser. Headless: 1GiB (default), 2GiB, or 4GiB. Headful:
8GiB (default) or 16GiB.
Expand Down Expand Up @@ -1050,6 +1071,7 @@ async def create(
"headless": headless,
"invocation_id": invocation_id,
"kiosk_mode": kiosk_mode,
"location": location,
"memory": memory,
"name": name,
"network": network,
Expand Down Expand Up @@ -1121,6 +1143,7 @@ async def update(
id_or_name: str,
*,
disable_default_proxy: bool | Omit = omit,
location: BrowserLocationUpdateRequestParam | Omit = omit,
name: Optional[str] | Omit = omit,
network: BrowserNetworkUpdateParam | Omit = omit,
profile: BrowserProfile | Omit = omit,
Expand All @@ -1144,6 +1167,14 @@ async def update(
disable_default_proxy: If true, stealth browsers connect directly instead of using the default stealth
proxy. Deprecated in favor of proxy.mode.

location: Session-only timezone and locale overrides. Omit the object or a field to leave
it unchanged; set a string to override; set null to clear that field and use the
browser region's default. A browser that cannot change location refuses the
request before anything changes. The location applies after the request's other
changes, and start_url opens once it has applied. If applying it fails, the
other changes and the saved override remain and start_url does not open; retry
the request to apply both.

name: Human-readable name for the browser session. Omit to leave unchanged, set to an
empty string to clear the name. When set, must be unique among active sessions
within the project.
Expand Down Expand Up @@ -1195,6 +1226,7 @@ async def update(
body=await async_maybe_transform(
{
"disable_default_proxy": disable_default_proxy,
"location": location,
"name": name,
"network": network,
"profile": profile,
Expand Down
Loading
Loading