Skip to main content

kosa8 for Python

Python client for kosa8: microVM sandboxes for AI agents, with checkpoint, rewind, fork and explore. The counterpart of @kosa8/sdk, method for method.

No dependencies. It talks to the local kosa8 daemon over its unix socket, or to a remote kosa8 worker.

pip install kosa8

Quickstart

from kosa8 import Kosa8Client

k = Kosa8Client()
k.create_sandbox(name="demo", egress="deny")   # a microVM with its own kernel, no network
sb = k.sandbox("demo")

sb.pull("alpine:latest")
print(sb.run("alpine:latest", ["sh", "-c", "echo hello"]).stdout)

sb.checkpoint(label="before the risky bit")    # memory, processes and disk
sb.run("alpine:latest", ["sh", "-c", "rm -rf /data"])
sb.rewind()                                    # back, processes resumed

forks = sb.fork(4)                             # four live copies
sb.delete()

What's in it

Area Methods
Status health, version
Sandboxes create_sandbox, list_sandboxes, get_sandbox, start_sandbox, stop_sandbox, delete_sandbox
Images pull, pull_into_sandbox, sandbox_images
Running code run, exec, exec_frames, start_container, start_interactive, write_stdin, attach
Network sandbox_egress; egress="deny" | "any" | "fakenet" or egress_allow=[...] on create
Snapshots snapshot, list_snapshots, restore_snapshot, delete_snapshot
Fork fork(sandbox, n), explore(sandbox, variants) (best-of-N)
Checkpoints checkpoint, list_checkpoints, rewind

k.sandbox(id) returns a handle with the same methods bound to one sandbox.

Checkpoints share the CLI's store (~/.kosa8/checkpoints.json, under the same flock), so kosa8 rewind sees checkpoints taken here and the other way round.

Connecting

Setting Default
socket_path= ~/.kosa8/run/kosa8.sock
host= / KOSA8_HOST a remote worker: https://…, tcp://host:port, unix:///path
token= / KOSA8_TOKEN the worker's bearer token
insecure= / KOSA8_INSECURE=1 allow plain http to a non-loopback host (off)
actor= tool; recorded in the audit log as human, agent or tool
agent_token= / KOSA8_AGENT_TOKEN agent identity for the audit log
timeout= seconds per connect and read; None waits

Errors

Every daemon error is raised as a typed exception carrying the daemon's own message and remediation: Kosa8BadRequestError (400), Kosa8AuthError (401), Kosa8PolicyError (403), Kosa8ApprovalRequiredError (403 needing a signed approval: repeat the call with approval=<id>), Kosa8NotFoundError (404), Kosa8ConflictError (409), Kosa8UnsupportedError (501), Kosa8ConnectionError, Kosa8StreamError (output kept), Kosa8TimeoutError.

Tests

PYTHONPATH=src:tests python3 -m unittest discover -s tests

License

MIT

Metadata

Release files for kosa8 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kosa8 0.1.1
File Size Uploaded Provenance Actions
kosa8-0.1.1.tar.gz 23.5 kB Without provenance Details for kosa8-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for kosa8 0.1.1
File Interpreter ABI Platform Actions
kosa8-0.1.1-py3-none-any.whl Python 3 none any Details for kosa8-0.1.1-py3-none-any.whl

Total release size: 44.1 kB

Release files / kosa8-0.1.1.tar.gz

Download URL kosa8-0.1.1.tar.gz
Size 23.5 kB
Tags Source
SHA-256 checksum
How to use checksums
adce4fbe58db744809d805516aaa4f45de0f301be4340dbb1b1915b1f33d9836
BLAKE2b-256 checksum
How to use checksums
4fca25d3a4dc5c10a91874321f6832e5e75a1f9119f3acc9f5056491588e4b92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / kosa8-0.1.1-py3-none-any.whl

Download URL kosa8-0.1.1-py3-none-any.whl
Size 20.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bd35f02ee0d6a4407d0b72155a13dae190c94f5762f22248f8a03f088177de87
BLAKE2b-256 checksum
How to use checksums
3490af483f88d09f62769aec5db9f76464278a10368cae7e1fefa60346e52e24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Security for kosa8 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page