You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
credentialless sandbox와 인증된 제어 채널로 cooperative 페이지를 제어한다.
관찰, 순차 동작, 이동, 화면 첨부물이 같은 공간 계약과 권한 경계를 공유한다.
검증: test, types, contracts, package, control-product, frame-space, python-sdk 통과
|[reference/](reference/)|[api.md](reference/api.md)| The function-level API reference: the six root exports and the machine handle vocabulary, escape hatches and subpaths, the full error code table (a machine gate forces every root export to be anchored) |
38
39
||[bundleFormat.md](reference/bundleFormat.md)| The canonical layout of the portable bundle (`PYBUNDLE1`) envelope: byte placement, header fields, the separation of integrity from signature |
39
40
@@ -56,4 +57,5 @@ Language: `usage/`, `reference/`, and `product/` are English. `operations/` is t
Copy file name to clipboardExpand all lines: docs/usage/capabilityMatrix.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ A runnable surface is an example a person opens, a browser gate, a probe, or a t
49
49
| Machine journal | Uses idle commits and a WAL to revive a crashed tab from the heap and `/home/web` of the last commit |`machine.history.commit`/`recover`/`watch`/`pack` (`MachineJournal`) | Bounded | OPFS, an idle-commit policy, pack/prune operations, and the same engine and manifest |[journal probe](../../tests/attempts/pythonMachine/journalProbe.html), [large heap journal probe](../../tests/attempts/largeHeapEnvelope/largeHeapProbe.html), [installed-package browser gate](../../tests/browser/installedPackageGate.mjs)| journal probes, `npm run test:installed`| A long-lived blob store grows without pack and prune. It is subject to browser storage quota. Changes after a commit are lost |
50
50
| Permission jail | Restricts Python code's net, clipboard, home, and worker permissions through a permission manifest and CSP |`enableJail(permissions)` on `machine.runtime`, returning `{ jail, permissions, connectSrc }`| Probe | A permission manifest, the jail context's CSP, a host allowlist, and a permission UI |[jail probe](../../tests/attempts/pythonMachine/jailProbe.html), [installed-package browser gate](../../tests/browser/installedPackageGate.mjs), [trust and permissions](trustPermissions.md)|`npm run test:installed`, `npm run test:browser` (the enableJail evidence checks), jail probes | Not a sandbox that removes every side channel available to code in the same parent window. Strong isolation requires an opaque-origin design |
51
51
| Browser automation product | Lets MCP and native clients run persistent Python, semantic browser actions, deterministic device viewports, first-navigation tracing, native screenshots, and bounded artifact retrieval on an allowed Chromium target | Installed `pyproc-mcp` and `pyproc-control` bins share one version 1 manifest and ControlHost. The 23-action pipeline provides eight-state semantic readiness, explicit lazy hydration, PNG/JPEG/WebP artifact delivery, opaque chunk read/delete, popup and frame handling, and a separately raw-allowlisted command. No browser JavaScript export is added | Bounded | Node 22, a pinned engine root or immutable index URL, Chromium-family major 137 or newer with CDP protocol major 1, a broker-owned temporary profile, exact HTTP(S) origins and actions, fixed risk, filesystem roots for upload, and operator acknowledgement plus purpose for external effects | [browser automation product guide](browserAutomation.md), [Control Protocol guide](controlProtocol.md), installed MCP and native product gates | `npm run test:contracts`, `npm run test:package`, `npm run test:mcp`, 10 installed MCP assertions, six native assertions, 71 assertions in `npm run test:browser-control`, and a 48-action stress gate on Chrome Ubuntu and Edge Windows | The default surface remains four Python operations and opens no CDP authority. Opt-in control does not attach to the user's default profile, expose internal action methods as raw permissions, put the CDP endpoint in Python, or add a proxy listener. Startup traces redact query and secret-shaped values. Native images are bounded by the inline quota and retain the artifact chunk fallback. Lazy hydration is an explicit external effect. Artifact quota, TTL, deletion, and process shutdown bound disk retention. Open shadow roots and authorized frame chains are supported; closed roots are unsupported. Cookie values are absent from metadata reads and traces. Python restore never rolls back browser effects. An interrupted sent effect is `outcomeUnknown` and is not retried. The operator owns legal authority and consequential-action approval |
52
-
| Python control SDK | Lets a Python application start the same product host, run persistent Python, checkpoint, cancel, automate a browser, and receive verified screenshot bytes without JavaScript application code | Separate zero-runtime-dependency `pyproc-control` wheel and source distribution with `PyProcClient`, `ControlRequest`, `ControlResult`, `Attachment`, strict codec, and stable errors | Bounded | Python 3.10 or newer, the same-version npm package on `PATH`, a valid product manifest, engine assets, and browser authority for automation operations | [Python SDK guide](pythonSdk.md), [clean install product gate](../../tests/pythonSdk/run.mjs) | `npm run test:python-sdk` builds and installs both distribution forms in separate clean environments, runs 11 codec fixtures, and completes Python, checkpoint, cancel, permission, browser, screenshot, digest, artifact, and single-use ID checks on Chrome Ubuntu and Edge Windows | The SDK is a local client, not a hosted service. It does not bundle Node, Chromium, or the Python engine. A post-send cancellation is `outcomeUnknown`, and Python restore cannot undo external effects |
52
+
| Python control SDK | Lets a Python application start the same product host, run persistent Python, checkpoint, cancel, automate a browser, and receive verified screenshot bytes without JavaScript application code | Separate zero-runtime-dependency `pyproc-control` wheel and source distribution with `PyProcClient`, `ControlRequest`, `ControlResult`, `Attachment`, strict codec, and stable errors | Bounded | Python 3.10 or newer, the same-version npm package on `PATH`, a valid product manifest, engine assets, and browser authority for automation operations | [Python SDK guide](pythonSdk.md), [clean install product gate](../../tests/pythonSdk/run.mjs) | `npm run test:python-sdk` builds and installs both distribution forms in separate clean environments, runs 11 codec fixtures, and completes Native CDP plus FrameSpace Python, checkpoint, cancel, permission, screenshot, digest, artifact, and single-use ID checks on Chrome Ubuntu and Edge Windows | The SDK is a local client, not a hosted service. It does not bundle Node, Chromium, or the Python engine. A post-send cancellation is `outcomeUnknown`, and Python restore cannot undo external effects |
53
53
| Outbound sockets | Lets Python `socket`, `urllib`, and `http.client` reach an external host:port|`SocketBridge` (`pyproc/socket`) | Probe | A WS-to-TCP relay, JSPI blocking recv, and product operation of that relay |[hermetic socket lane](../../tests/browser/socketLane.mjs), [Python socket probe](../../tests/manualProbes/socketPyProbe.html)| socket bridge probes | Inbound sockets are a browser security wall. For HTTPS the relay handles TLS |
54
54
| Device filesystem | Exposes browser features as Python file paths |`machine.runtime.enableDeviceFs()` (`DeviceFs`) | Bounded | Explicit device injection, browser permissions, and a clear file-path policy |[installed-package browser gate](../../tests/browser/installedPackageGate.mjs), [device FS probe](../../tests/attempts/pythonMachine/deviceFsProbe.html), [machine campaign](../../tests/attempts/pythonMachine/README.md)|`npm run test:installed`, device FS probes | Only explicitly configured devices allowed by browser policy exist |
55
55
| GPU compute | Uploads f32 arrays to WebGPU and runs a GPU-resident linear algebra pipeline |`GpuCompute`, `GpuArray`, `GpuBridge` (`pyproc/gpu`) | Probe | WebGPU, a windowed browser, a real GPU, and an f32 data path |[GPU campaign](../../tests/manualProbes/README.md), [GPU tiled probe](../../tests/manualProbes/gpuTiledProbe.html), [GPU Python probe](../../tests/manualProbes/gpuPythonProbe.html)| GPU probes on real hardware | WGSL has no f64. Headless CI numbers are not evidence of product performance |
0 commit comments