Isag — Isolated Agent. Strict containerized sandboxes for coding agents.
Project description
Isag
Isag (/aɪˈzɑɡ/, "Isolated Agent") — sandboxes coding agents in containers with hard limits on what it can read, write, and reach.
Why
Isag gives the agent full freedom inside a container, while keeping your machine safe outside it. You get:
- A filesystem scoped to what you mount. The agent sees only the directories you explicitly add. Your home directory, your SSH keys, the rest of your host — invisible.
- Read-only mounts when you want them. Mount your project
:roto let the agent analyze without editing. Mount datasets:ro. Mount a scratch directory:rw. The kernel rejects writes to a read-only bind mount regardless of file permissions. - A network firewall. Outbound traffic is locked to a domain allowlist enforced at the kernel level. Anything else fails to connect — the agent can't lift the rule from inside.
- Optional GPU passthrough. Flip one flag in the config to give the container CUDA + the NVIDIA toolkit.
- Disposable container. Try experimental tooling without
consequence — pip at runtime, system packages via
extra_packages+ rebuild. If something breaks, the host is untouched and Isag brings up a clean one.
Requirements
- Linux host with Docker.
- GPU mode needs the NVIDIA Container Toolkit.
- Tested on Linux and WSL2. macOS (Docker Desktop / Rancher Desktop) and native Windows Docker should work but are untested.
Try it
pip install -e .
isag init
isag run
You're inside the agent CLI now, in a container that can reach github.com, pypi.org, npm, and the vendor's API — and nothing else.
The config file
isag init writes a starter isag.yaml. The lines you'll actually
touch:
project: ~/code/my-project:/workspace/project:rw # use :ro for analysis-only runs
agent:
vendor: claude # claude or codex
host_home: ~/agents # vendors persist here as host_home/.claude, host_home/.codex; set to ~ to share history + credentials with your host install
container:
python: 3.14 # container system-wide Python
image: ubuntu24.04 # or e.g. nvidia/cuda:12.8.1-runtime-ubuntu24.04 if gpu:true
gpu: false # true for CUDA + NVIDIA toolkit
host_cache_dir: ~/isag-cache # mounting pip, npm, and other caches
limit_network:
domains: # everything else is blocked
- github.com
- pypi.org
- registry.npmjs.org
mounts:
- ~/datasets:/workspace/datasets:ro # add more mounts; :ro makes them read-only
exclude: # hide paths inside any mount (set to null to disable)
files:
- .env
folders:
- .git
- Set
limit_network: nullto turn the firewall off entirely. Useful on trusted networks; not the default for a reason. - Excluded paths are host paths; if they fall under
projector anymountsentry, the corresponding container path is overlaid with an empty mount. - Both absolute and relative paths on the host are permitted for all fields. If a field path is relative, it is resolved relative to the project host path. If the project host path is also relative, it is first resolved relative to the YAML file path.
What it doesn't protect
- Anything you mount writable — the agent has full access there.
- Sibling containers, if you opt into
external_networks. - Anything the agent can do at an allowlisted endpoint with credentials you gave it.
License
Apache-2.0.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file isag-0.1.0.tar.gz.
File metadata
- Download URL: isag-0.1.0.tar.gz
- Upload date:
- Size: 25.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb66c34aa0d6b638acbb583546c7cbf35d79779130bb57932ac5822a67a550a5
|
|
| MD5 |
549f3313cbf1605c1849a5b61213cc78
|
|
| BLAKE2b-256 |
08ce9143b96651ebadec0aea064a32cd6428cefa1f4d5181f3f5f81967facfc0
|
File details
Details for the file isag-0.1.0-py3-none-any.whl.
File metadata
- Download URL: isag-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9eb618e4101151e004ecd998047823b3f440ef91c87d120abaf3380e055d970
|
|
| MD5 |
5a834e584d8fedbc1922b60c3d35ae86
|
|
| BLAKE2b-256 |
f36c47c0ecee26303decd4ea5368b1a7e425348a22a0a8e3fbc61d613d36d1ce
|