REPRO
Disposable Docker environments for any GitHub issue. One command. No setup.
pip install repro-cli
repro https://github.com/org/repo/issues/42
That's it, your terminal boots an isolated sandbox - repo cloned, dependencies installed and IF you have VS Code, it opens automatically attached directly to the container so you get a real editor and a single unified terminal, not just a shell. Type exit and the container disappears. Your files stay on disk, exactly where they were.
Install
pip install repro-cli
Requirements:
- Python 3.9+
- Docker (INSTALLED AND RUNNING)
- VS Code (optional, but recommended - enables the unified editor/terminal experience below)
Usage
# Open a sandbox for any publish GitHub issue
repro https://github.com/org/repo/issues/123
#Forward a port (e.g. to view a web app running inside the sandbox)
repro https://github.com/org/repo/issues/123 -p 3000
# Map a different host port to a container port
repro https://github.com/org/repo/issues/123 -p 8080:3000
# Private repos - pass a GitHub token
repro https://github.com/org/private-repo/issues/7 --token ghp_xxx
#Or set it once as an env var instead of typing it every single time!
export DEVSANDBOX_GITHUB_TOKEN=ghp_xxx
repro https://github.com/org/private-repo/issues/7
# Skip auto-opening an editor
repro https://github.com/org/repo/issues/123 --no-editor
#Help
repro --help
What it does
- Processes the GitHub issue URL
- Detects the repo's runtime i.e Node, Python, Go, Rust, Ruby, PHP, Java, or a devcontainer based on whats actually in the repo.
- Spins up a disposable, isolated Docker container with the right base image.
- Bind-mounts a real folder on your machine into the container, so nothing is trapped and files persist after you exit
- Clones the repo directly into that shared folder and install dependencies
- Attaches VS Code directly to the running container (auto-installing the Dev Containers extension if needed) - one window, one terminal, running inside the sandbox.
- Destroys the container the moment you exit. Your edited files remain exactly where they were.
The unified editor experience
- Real editor: VS Code attaches directly into the container, so its built-in terminal is the sandbox shell
- Real persistence: because the folder is bind-mounted, not just cloned inside the container, your work survives after
exit. If VS Code isn't installed,reprofalls back gracefully, you still get a real folder path printed at the end, ready to open in whatever editor you use.
Supported runtimes
| File detected | Runtime | Base image |
|---|---|---|
package.json |
Node.js | node:20-alpine |
yarn.lock |
Node.js (yarn) | node:20-alpine |
pnpm-lock.yaml |
Node.js (pnpm) | node:20-alpine |
requirements.txt |
Python | python:3.12-slim |
pyproject.toml |
Python | python:3.12-slim |
Pipfile |
Python (pipenv) | python:3.12-slim |
go.mod |
Go | golang:1.21-alpine |
Cargo.toml |
Rust | rust:1.75-slim |
Gemfile |
Ruby | ruby:3.3-slim |
composer.json |
PHP | php:8.3-cli |
pom.xml |
Java (Maven) | maven:3.9-eclipse-temurin-21 |
build.gradle |
Java (Gradle) | gradle:8-jdk21 |
.devcontainer |
devcontainer | MS universal image |
| (none matched) | Universal fallback | ubuntu:22.04 |
The GitHub App
Install repro-sandbox-bot on any repo and it automatically comments the exact repro command on every new issue, so that contributors never have to think about setup.
🏖 Open this issue in DevSandbox
Spin up a disposable Docker environment with this repo already checked out:
repro https://github.com/org/repo/issues/42
Don't have repro yet? Install it here.
Comment /sandbox on any issue to get this again.
You can also trigger it on demand by commenting /sandbox on any issue. The bot runs 24/7, independent of your machine.
Contributing
PRs welcome. Open an issue first for anything beyond small fixes - and yes, you can use repro itself to work on repro.
License
MIT
Metadata
Release files for repro-cli 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| repro_cli-0.2.1.tar.gz | 13.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| repro_cli-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.1 kB
Release files / repro_cli-0.2.1.tar.gz
| Download URL | repro_cli-0.2.1.tar.gz |
|---|---|
| Size | 13.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
498feec9a0d05fdab38a92cd52b7e9f2caccf938c0aebaa0770d5511899792aa
|
|
BLAKE2b-256 checksum How to use checksums |
4b1b84d0ba9806d73a3d24bbc2e0c1cf27a81c3097b309a5f4d935de022215f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / repro_cli-0.2.1-py3-none-any.whl
| Download URL | repro_cli-0.2.1-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
18931ed031157d99d9974a60a7f7d6891ec288c70707ca3c33050e9bf5231b49
|
|
BLAKE2b-256 checksum How to use checksums |
b536cac6f9b0347b9f383df1bbe00e8b1c885a127987728dd7762424215bd5da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|