GitHub - SukhdevThukral/repro: Disposable Docker environments for any GitHub issue. One command. · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
SukhdevThukral
repro
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>42 Commits<br>42 Commits
app
app
repro
repro
tests
tests
.gitignore
.gitignore
LICENSE
LICENSE
README.md
README.md
pyproject.toml
pyproject.toml
repro.py
repro.py
requirements.txt
requirements.txt
View all files
Repository files navigation
REPRO
Disposable Docker environments for any GitHub issue.<br>One command. No setup.
pip install repro-cli<br>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<br>repro https://github.com/org/repo/issues/123
#Forward a port (e.g. to view a web app running inside the sandbox)<br>repro https://github.com/org/repo/issues/123 -p 3000
# Map a different host port to a container port<br>repro https://github.com/org/repo/issues/123 -p 8080:3000
# Private repos - pass a GitHub token<br>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!<br>export DEVSANDBOX_GITHUB_TOKEN=ghp_xxx<br>repro https://github.com/org/private-repo/issues/7
# Skip auto-opening an editor<br>repro https://github.com/org/repo/issues/123 --no-editor
#Help<br>repro --help
What it does
Parses the GitHub issue URL
Detects the repo's runtime - 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 - 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. No second window to juggle.
Real persistence — because the folder is bind-mounted, not just cloned inside the container, your work survives after exit. Nothing is lost.<br>If VS Code isn't installed, repro falls 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<br>Runtime<br>Base image
package.json<br>Node.js<br>node:20-alpine
yarn.lock<br>Node.js (yarn)<br>node:20-alpine
pnpm-lock.yaml<br>Node.js (pnpm)<br>node:20-alpine
requirements.txt<br>Python<br>python:3.12-slim
pyproject.toml<br>Python<br>python:3.12-slim
Pipfile<br>Python (pipenv)<br>python:3.12-slim
go.mod<br>Go<br>golang:1.21-alpine
Cargo.toml<br>Rust<br>rust:1.75-slim
Gemfile<br>Ruby<br>ruby:3.3-slim
composer.json<br>PHP<br>php:8.3-cli
pom.xml<br>Java (Maven)<br>maven:3.9-eclipse-temurin-21
build.gradle<br>Java (Gradle)<br>gradle:8-jdk21
.devcontainer<br>devcontainer<br>MS universal image
(none matched)<br>Universal fallback<br>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 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
About<br>Disposable Docker environments for any GitHub issue. One...