agentix buildturns a Python project into a deploy-ready runtime bundle tar.agentix deploydeploys that portable tar to a provider backend (local extract for docker/podman/apptainer; upload + register for managed services like E2B / Daytona / Modal).agentix plugin listlists the installed provider backends and whether each one loads.
agentix build
Package one project root into a bundle artifact.
pyproject.toml. The default bundle name
and tag are derived from [project].name and [project].version;
-n / --name overrides them.
| Option | Meaning |
|---|---|
path | Project root, default . |
-n, --name | Bundle NAME or NAME:TAG; bare names use [project].version |
-o, --output | Output file or directory; defaults to dist/<name>-<tag>-<platform>.bundle.tar |
--platform | Sandbox runtime platform, linux/amd64 or linux/arm64; defaults to local CPU |
--dry-run | Stage the Dockerfile and build context without running Docker |
--container-engine | Container engine (Docker-compatible CLI: docker, podman, …); default docker |
--container-arg / --container-run-arg | Raw args for the container build / export run; repeatable |
--nix-arg | Raw arg forwarded verbatim to the in-container nix build; repeatable |
--uv-arg | Raw arg forwarded verbatim to the in-container uv sync; repeatable |
--nix-arg, --uv-arg, and --container-arg are raw passthroughs — each
value is a shell-style string forwarded to the underlying engine (quote a whole
sub-flag as one value), so any knob is reachable without a bespoke flag or env
var. Point nix at a CN mirror, or override the builder base image:
--platform describes the Linux container platform where the sandbox
will run, not the machine that invokes the build. For example, use
--platform linux/amd64 when building on an Apple Silicon Mac for a
remote x86 sandbox.
Dependency Model
The CLI never enumerates integrations. It installs the project into the runtime venv, anduv sync resolves and installs everything declared by
the project. With a committed uv.lock the in-container build runs
uv sync --frozen --no-dev --no-editable (locked, reproducible); without one
it resolves fresh. Either way the bundle gets a non-editable, production-only
dependency closure.
pyproject.toml
Dry Run
./build/<tag>/, prints what would be built, and exits without invoking
Docker.
agentix deploy
agentix deploy is a plugin-owned subcommand group. Each installed
provider plugin (agentix-provider-docker, future -e2b, -modal, …)
contributes its own agentix deploy <name> subcommand via the
agentix.deploy.commands entry-point group. The core CLI knows nothing
about backend-specific flags — it just discovers what’s installed:
agentix deploy list is the structured discovery surface — text by
default, JSON with --format json:
SandboxProvider class is registered (i.e. agentix plugin list shows
them) but who haven’t wired up an agentix.deploy.commands entry yet —
useful for telling “not installed” from “installed but not yet wired
for deploy”.
The deploy operation is backend-specific:
- Local backends (
docker,podman) unpack the portable tar into a content-addressed host cache and print the cache root. - Managed services (e2b, modal, daytona, fly — when wired) upload the tar and print the service-side template / volume reference.
SandboxConfig.bundle. The three flags
every backend supports (via the shared common_options helper):
| Option | Meaning |
|---|---|
bundle | Bundle tar produced by agentix build |
-n, --name | Optional backend bundle label |
--platform | Optional runtime platform; defaults to manifest platform |
--format | Output format: text (default) or json |
--container-engine / --run-arg).
With --format json, deploy prints a machine-readable object so the
cache path can be read with jq:
DeployedBundle.hints:
Adding a new deploy backend
A plugin registers its deploy subcommand in its ownpyproject.toml:
@click.command that decorates with
common_options (from agentix.cli.deploy) for the shared
flags, layers its own backend-specific flags on top, and calls
print_deploy_result to render.
Bundle Tar
The tar contains:nix/ tree is the complete runtime closure and must appear at
/nix inside a sandbox. Backends that stage bundles across machines can
unpack this tar into their cache and bind it into task containers.
The transient build image used to produce the tar is kept locally under
an agentix-bundle-cache:* tag and overwritten on later builds, so the
container builder can reuse it for incremental builds.
agentix plugin
A read-only inspector for the installed provider backends.
agentix plugin list enumerates every provider backend discovered
through the agentix.provider entry-point group and reports whether
each one loaded OK or failed to import. Use it to confirm a backend such
as docker or podman is installed and importable before you deploy.
Configuration
Most runtime configuration lives in explicit provider config objects or CLI flags. Runtime bootstrap uses a small internal env contract.| Variable | Used by | Purpose |
|---|---|---|
AGENTIX_BIND_PORT | runtime server | Sandbox-side bind port, default 8000 |
AGENTIX_UPLOAD_ROOT | file primitive packages | Sandbox-side root for file operations |
AGENTIX_LOG_DIR | runtime worker | Durable in-sandbox log directory, default /tmp/agentix (sandbox-<worker-id>.log); set empty to disable |
DAYTONA_API_KEY | daytona backend | API authentication |
E2B_API_KEY | e2b backend | API authentication |
agentix-yourcmd instead of expanding the
core CLI.