Skip to main content

Inspect Podman Sandbox

A Podman-backed sandbox environment for the Inspect evaluation framework. It provides a Podman implementation of Inspect’s sandbox API so evals can run containerized tool calls without Docker.

Features

  • Registers a podman sandbox provider via Inspect extension entry points.
  • Uses Podman Compose (podman compose) or the standalone podman-compose tool.
  • Supports compose.yaml, Dockerfile, and Containerfile discovery in task folders.
  • Provides per-sample container isolation with Inspect’s sandbox lifecycle hooks.

Start Podman

Make sure Podman and Podman Compose are installed and available on your PATH, then ensure the Podman service is running.

Linux does not require podman machine (Podman runs natively). If you are on macOS/Windows, start the Podman VM:

podman machine init
podman machine start

Verify connectivity:

podman info

Check the connection:

podman system connection list
podman info

Install

From PyPI:

pip install inspect-podman

If you are using Inspect Podman in this repository, start by installing the necessary dependencies with:

uv sync

Some evals and model providers require extra Python packages (e.g., openai). We don’t include these by default to keep the extension lightweight.

Usage with Inspect

In Python:

from inspect_ai import eval

eval("my_task.py", sandbox="podman")

From the CLI:

inspect eval my_task.py --sandbox podman

To specify a custom compose file:

eval("my_task.py", sandbox=("podman", "compose.yaml"))

Evals in This Repo

Sample evals live in evals/ and are for testing the Podman provider. Start with:

inspect eval evals/file_listing/file_listing.py

If you’re writing your own evals, set the sandbox to podman (e.g., sandbox="podman" or sandbox=("podman", "compose.yaml")) to run them with Podman instead of Docker.

See evals/README.md for details, including how to use this extension with inspect_evals.

Forcing podman-compose (optional)

By default we auto-detect the compose frontend. If you need to force the standalone podman-compose binary (e.g., to match an environment that only has podman-compose available), set:

export INSPECT_PODMAN_COMPOSE=podman-compose

Compose and Dockerfile Discovery

The provider searches the task directory in this order:

  1. compose.yaml, compose.yml, docker-compose.yaml, docker-compose.yml
  2. .compose.yaml (auto-generated)
  3. Containerfile
  4. Dockerfile
  5. A default compose that uses the aisiuk/inspect-tool-support image

If you provide sandbox=("podman", "path/to/compose.yaml"), that file is used directly.

Healthchecks

If a compose service defines a healthcheck, the provider waits for it to report healthy before running the sample. This mirrors how Inspect handles readiness in Docker-based sandboxes and is exercised by evals/file_listing_healthcheck/.

You can add a fixed startup delay (for services without healthchecks or when Podman doesn’t report health status) by setting:

export INSPECT_PODMAN_STARTUP_DELAY=5

This is useful when a service is ready shortly after startup but doesn’t expose a healthcheck, or when Podman does not surface health status for a container. Otherwise the eval may start too early and fail.

Cleanup

Inspect will clean up pods/containers automatically unless you disable it:

inspect eval my_task.py --no-sandbox-cleanup

Manual cleanup:

inspect sandbox cleanup podman
inspect sandbox cleanup podman <container-id>

Notes and Limitations

  • Compose services that set container_name are rejected because Inspect runs multiple epochs/samples and needs unique container names per run; fixed names would collide across runs.
  • This extension is intended as a Docker replacement for Inspect sandboxing, but behavior can differ across Podman versions and compose features. If an eval relies on Docker‑specific behavior, you may need small adjustments.

Acknowledgement

This project was conducted by the Vector Institute and the National Research Council of Canada, on behalf of the Canadian AI Safety Institute.

Metadata

Release files for inspect-podman 0.1.2

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

Source distribution (sdist)

Source distribution for inspect-podman 0.1.2
File Size Uploaded Provenance
inspect_podman-0.1.2.tar.gz 200.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for inspect-podman 0.1.2
File Interpreter ABI Platform
inspect_podman-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 226.0 kB

Release files / inspect_podman-0.1.2.tar.gz

Download URL inspect_podman-0.1.2.tar.gz
Size 200.1 kB
Tags Source
SHA-256 checksum
How to use checksums
46297850fa628dca253742167b477a1b233f3f0e61cbe9432cadeae40fa0589c
BLAKE2b-256 checksum
How to use checksums
b72b84500781d866ebcbd585dfd9e1d906c81f9d32a82c38382972718e17fd91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 17, 2026.

Transparency log

Release files / inspect_podman-0.1.2-py3-none-any.whl

Download URL inspect_podman-0.1.2-py3-none-any.whl
Size 25.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
258c397fc0fa99404255259aa3e326d9f5e7c5eae25e01011734d7e81421360c
BLAKE2b-256 checksum
How to use checksums
76e4544ea660008dfb1552ea9105cdca574f76f44dd04373fae39a445db3095b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 17, 2026.

Transparency log

Security for inspect-podman 0.1.2

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for inspect_podman-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 17, 2026.

Transparency log

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.

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