Container wrapper for running AI coding agents in isolated, secure containers
Project description
Paude
Run AI coding agents in secure containers. They make commits, you pull them back.
Supported Agents
| Agent | Flag | Status |
|---|---|---|
| Claude Code | --agent claude (default) |
Supported |
| Cursor CLI | --agent cursor |
Supported |
| Gemini CLI | --agent gemini |
Supported |
Note: Your chosen agent must be installed and working on your local machine first.
Why Paude?
- Isolated execution: Your agent runs in a container, not on your host machine
- Safe autonomous mode: Enable
--yolowithout fear — the agent can't send your code anywhere - Git-based workflow: The agent commits inside the container, you
git pullthe changes - Run anywhere: Locally with Podman or Docker, remotely via SSH, or on OpenShift
Demo
The demo shows Claude Code, but the workflow is identical with other agents.
Quick Start
Prerequisites
Your agent: Claude Code, Cursor CLI, or Gemini CLI installed and working locally.
Podman or Docker: Install Podman or Docker (for local backend).
Google Cloud SDK: gcloud auth application-default login
Environment variables (find your project ID in Google Cloud Console):
Claude Code:
export CLAUDE_CODE_USE_VERTEX=1
export ANTHROPIC_VERTEX_PROJECT_ID=your-project-id
export GOOGLE_CLOUD_PROJECT=your-project-id
Cursor CLI:
agent login # or set CURSOR_API_KEY=your-api-key
macOS note: On Mac hosts,
CURSOR_API_KEYis the simplest authentication method. Without it, each paude session requires a separate browser-based OAuth login viaagent logininside the container.
Gemini CLI:
export GOOGLE_CLOUD_PROJECT=your-project-id
Install
uv tool install paude
First run: Paude pulls container images on first use. This takes a few minutes; subsequent runs start immediately.
Your First Session
# Claude Code (default)
cd your-project
paude create --yolo --git my-project
# Cursor CLI
paude create --agent cursor --yolo --git my-project
# Gemini CLI
paude create --agent gemini --yolo --git my-project
# Connect to the running session
paude connect my-project
# Pull the agent's commits (use your branch name):
git pull paude-my-project main
You'll know it's working when: paude connect shows the agent interface, and git pull brings back commits the agent made.
Passing a Task
paude create --yolo my-project -a '-p "refactor the auth module"'
Or just start the session and type your request in the agent interface.
Something Not Working?
- Run
paude --helpfor all options and examples - Run
paude listto check session status - Use
paude create --dry-runto verify configuration - Use
paude start -vfor verbose output (shows sync progress) - Check that your gcloud credentials are valid:
gcloud auth application-default print-access-token
Learn more:
- Session Management — commands, lifecycle, code sync
- Configuration — defaults, network domains, GitHub CLI, custom environments
- Security Model — attack vectors,
--yolosafety, residual risks - Orchestration — fire-and-forget workflow, harvest, PRs
- Remote Hosts & Docker — SSH remotes, Docker backend, GPU passthrough
- OpenShift Backend — remote execution on Kubernetes
How It Works
Your Machine Container
| |
|-- git push ----------------▶ | Agent works here
| | (network-filtered)
◀-- git pull -----------------|
| |
- Git is the sync mechanism — your local files stay untouched until you pull
--yolois safe because network filtering blocks the agent from sending data to arbitrary URLs- The agent can only reach its API (e.g., Vertex AI) and package registries (e.g., PyPI) by default
Install from Source
git clone https://github.com/bbrowning/paude
cd paude
uv venv --python 3.12 --seed
source .venv/bin/activate
pip install -e .
Requirements
- Python 3.11+ (for the Python package)
- Your chosen agent CLI installed locally (Claude Code, Cursor CLI, or Gemini CLI)
- Podman or Docker (for local backend)
- OpenShift CLI
oc(for OpenShift backend) - Google Cloud SDK configured (
gcloud auth application-default login)
Development
See CONTRIBUTING.md for development setup, testing, and release instructions.
License
MIT
Project details
Release history Release notifications | RSS feed
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 paude-0.14.1.tar.gz.
File metadata
- Download URL: paude-0.14.1.tar.gz
- Upload date:
- Size: 282.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e196043063d5bfb71cc89afa37f0007b8dad72ff376c8358c62c7329a59582d
|
|
| MD5 |
90ba4ba697d694e25823b89de0ee479b
|
|
| BLAKE2b-256 |
89dbda0e9d06a3d718c4e57f61901a19b3aba4d71961a9cb7e36a3616a88f269
|
Provenance
The following attestation bundles were made for paude-0.14.1.tar.gz:
Publisher:
release.yml on bbrowning/paude
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paude-0.14.1.tar.gz -
Subject digest:
1e196043063d5bfb71cc89afa37f0007b8dad72ff376c8358c62c7329a59582d - Sigstore transparency entry: 1181519226
- Sigstore integration time:
-
Permalink:
bbrowning/paude@aeed628c992dd375e00fde8e4b30525601b0666e -
Branch / Tag:
refs/tags/v0.14.1 - Owner: https://github.com/bbrowning
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@aeed628c992dd375e00fde8e4b30525601b0666e -
Trigger Event:
push
-
Statement type:
File details
Details for the file paude-0.14.1-py3-none-any.whl.
File metadata
- Download URL: paude-0.14.1-py3-none-any.whl
- Upload date:
- Size: 144.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e222d9a964da98a6047bb3b7aa2eba2ca1e561a6c8b0eec938ba4295b3cd98a2
|
|
| MD5 |
e3b77afedd6c440d31f76afb81e154f3
|
|
| BLAKE2b-256 |
520c100af9f1e224b49ceb2918bfc7f2fc6f52026f4b865f7f98bb6ac3b0452e
|
Provenance
The following attestation bundles were made for paude-0.14.1-py3-none-any.whl:
Publisher:
release.yml on bbrowning/paude
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paude-0.14.1-py3-none-any.whl -
Subject digest:
e222d9a964da98a6047bb3b7aa2eba2ca1e561a6c8b0eec938ba4295b3cd98a2 - Sigstore transparency entry: 1181519357
- Sigstore integration time:
-
Permalink:
bbrowning/paude@aeed628c992dd375e00fde8e4b30525601b0666e -
Branch / Tag:
refs/tags/v0.14.1 - Owner: https://github.com/bbrowning
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@aeed628c992dd375e00fde8e4b30525601b0666e -
Trigger Event:
push
-
Statement type: