Skip to main content

Portable, offline-first container sandboxes for LLM agents and dev workflows

Project description

pocketdock

CI PyPI Coverage: 100% Docs License: BSD-2-Clause

Portable, offline-first container sandboxes for LLM agents and dev workflows.

One Container class. Podman-first, Docker-compatible. Python SDK + CLI. Zero cloud. Zero API keys.

Why pocketdock?

Managed sandbox platforms require API keys, cloud accounts, and an internet connection. Rolling your own container glue means rewriting hundreds of lines of boilerplate every time. pocketdock sits in between: a clean Python SDK that talks directly to your container engine over its Unix socket, works entirely offline, and has zero external dependencies for the core SDK.

Features

  • Three execution modes — blocking, streaming, and detached (background) with ring buffer
  • File operations — read, write, list, push, and pull files between host and container
  • Persistent sessions — long-lived shell sessions with state (cwd, env vars, history)
  • Resource limits — memory caps, CPU throttling, per-container isolation
  • Port mapping — expose container ports on the host (e.g., ports={8080: 80})
  • Container persistence — stop/resume, snapshot to image, volume mounts
  • Project management.pocketdock/ project directories with config, logging, and health checks
  • Image profiles — six pre-baked Dockerfiles: minimal-python, minimal-node, minimal-bun, dev, agent, embedded
  • Full CLI — 22 commands for container lifecycle, file ops, and project management
  • Async-first — sync facade over async core; use either API style
  • Callbacks — register handlers for stdout, stderr, and exit events

Quick Example

from pocketdock import create_new_container

with create_new_container() as c:
    result = c.run("echo hello")
    print(result.stdout)  # "hello\n"
    print(result.ok)      # True

Install

pip install pocketdock          # SDK + CLI (includes click, rich)
pip install pocketdock[agent]   # + LLM agent (litellm, python-dotenv)

Single-file downloads (no pip required) are available from GitHub Releases.

Requires Podman (recommended) or Docker.

# Build the minimal-python image (~25MB, <500ms startup)
pocketdock build minimal-python

Documentation

Full documentation is available at deftio.github.io/pocketdock.

Architecture

User Code / LLM Agent / CLI
        |
        v
  pocketdock SDK
  +--------------------------------------+
  | Container (sync)  -> AsyncContainer  |  facade pattern
  |   +- _socket_client (raw HTTP/Unix)  |
  +- ProjectManager (.pocketdock/)      |
  +- Persistence (resume, snapshot)      |
  +- Sessions (persistent shells)        |
  +--------------------------------------+
        |  raw HTTP over Unix socket
        |  (one connection per operation)
        v
  Podman (rootless) / Docker Engine

Design principles:

  • Connection-per-operation — each API call opens its own Unix socket. No pooling.
  • Async core, sync facadeAsyncContainer does all real work. Container is a sync wrapper.
  • No cached state — always polls live from the engine.
  • Minimal dependencies — stdlib-only for the core SDK.

Development

uv sync --dev                    # Install dependencies
uv run pytest                    # Run tests (100% coverage enforced)
uv run ruff check .              # Lint (zero warnings)
uv run mypy --strict python/     # Type checking (strict mode)
uv run mkdocs serve              # Local docs site

License

BSD-2-Clause. Copyright (c) deftio llc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pocketdock-1.2.4.tar.gz (171.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pocketdock-1.2.4-py3-none-any.whl (57.4 kB view details)

Uploaded Python 3

File details

Details for the file pocketdock-1.2.4.tar.gz.

File metadata

  • Download URL: pocketdock-1.2.4.tar.gz
  • Upload date:
  • Size: 171.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pocketdock-1.2.4.tar.gz
Algorithm Hash digest
SHA256 4c4c89d64c2eae901c7a28cea9d6481b975686f16a85dc7c0ef1343cfb0c0f57
MD5 f6dc47aa9b019f73d6424b21f89f2021
BLAKE2b-256 863c6e0562c6d364f221a2020acdf3ce4616fce7116e54724dff6a03765fc47f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pocketdock-1.2.4.tar.gz:

Publisher: publish.yml on deftio/pocketdock

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pocketdock-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: pocketdock-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 57.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pocketdock-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6b681303979c76ed8957d8ea52ead27804be84ffbaa50bfe2496f5e64adf3873
MD5 c698c07ee861d16ca2afd1643ba43539
BLAKE2b-256 6a661a718a9a1b22c18c0d8f067fba01a225b27f120fa43754371cc29d7ff0ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for pocketdock-1.2.4-py3-none-any.whl:

Publisher: publish.yml on deftio/pocketdock

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page