Prerequisites
- Python 3.11 or newer
- Docker for end-to-end sandbox tests
- Agentix is one monorepo uv workspace — the runtime and provider
plugins live under
plugins/(e.g.plugins/runtime-basic,plugins/providers/docker) and are installed editable byuv sync --all-packages. There are no sibling repos to check out.
Setup
agentixx; the import package is
agentix.
Run the Runtime Locally
You can run the runtime server without Docker while iterating on client, server, or worker code. There’s no console script — the bundle starts it via/nix/runtime/bootstrap.sh, but during dev you can launch the
ASGI app directly with uvicorn:
/health; remote calls use /socket.io/.
Bundles, Not a Base Image
There is no separate runtime base image to build.agentix build
produces a bundle, staging the Dockerfile shipped at
agentix/builder/Dockerfile and running every heavy step inside the
build container. Providers then overlay that bundle onto any
task image at /nix via Docker’s --mount type=image, so the same
bundle works across task images with no rebuild.
Build a Bundle
/nix/runtime. If the project includes default.nix, the build also
splices system binaries into the final bundle.
Smoke Test a Sandbox
Lint and Test
Codebase Map
| Path | Purpose |
|---|---|
agentix/runtime/shared | Wire types, msgpack codec, Socket.IO event names |
agentix/runtime/client | RuntimeClient and transport behavior |
agentix/runtime/server | FastAPI app, Socket.IO handlers, worker client, worker process, callable invocation |
agentix/provider | SandboxProvider protocol + backend discovery |
agentix/cli | Build + deploy CLI (agentix build, agentix deploy, agentix plugin) |
agentix/sio | Sandbox-side namespace API |
agentix/utils | log + trace bridges |
agentix/builder | flake.nix/Dockerfile/bundle-build.sh shipped as wheel data |
Design Rules
- Keep the user model centered on
client.remote(fn, ...). - Keep bundle behavior dependency-driven through
pyproject.toml. - Prefer composition over inheritance outside lifecycle protocols.
- Do not add compatibility shims for old API shapes unless there is a concrete external constraint.