A bundle is the sandbox’s world: your project, Agentix, integration packages, transitive Python dependencies, and optional system binaries in one bundle. agentix build [path] takes a normal Python project and produces a deploy-ready bundle. The default output is a portable tar containing manifest.json and the complete nix/ runtime tree.

What Goes In

Agentix does not maintain a separate plugin manifest. The project’s pyproject.toml is the manifest.
During the build, Agentix copies the project into the bundle and uses uv to resolve and install the dependency closure into the runtime venv:
That sync brings in user code, direct dependencies, transitive dependencies, and integration modules such as agentix.bash or agentix.plugins.datasets.swe. uv sync --frozen resolves from the project’s lockfile, --no-dev drops dev-only dependency groups, and --no-editable installs everything as a regular (non-editable) copy so the bundle is self-contained.

Runtime Layout

The runtime server and worker use this same environment. If the worker can import a module from that environment, the host can call it with client.remote(fn, ...).

System Binaries

If the project root includes default.nix, agentix build adds a Nix builder stage. The derivation closure is copied into the final bundle, and binaries are linked under /nix/runtime/bin. Worker subprocesses inherit the runtime server’s environment, with the bundle venv and Nix runtime bins prepended to PATH:
That is how CLI wrappers can call tools by name:

Bundles Compose Integrations

Agent wrappers, dataset scorers, sandbox primitives, and application code are all normal Python packages. A rollout bundle chooses which packages coexist in one sandbox.

Mental Model

Keep those concerns separate and the same integration can move from a local smoke test to a larger rollout system without changing its Python API.