One-click setup for any GitHub repo. Click ▶ Run this repo and get a working, running instance — no local setup, no reading a 40-step README.
RepoRun is a browser extension that adds a "▶ Run this repo" button directly to any GitHub repository page. Clicking it automatically:
- Detects the tech stack (Node.js, Python, Go, Docker, and more)
- Provisions an isolated container environment
- Installs dependencies
- Runs the project
- Gives you a live preview URL and terminal access
No local setup. No Docker knowledge needed. No reading a 40-step README.
[Browser Extension] → [RepoRun API] → [Detection Engine] → [Config Generator]
→ [Sandbox Orchestrator] → [Docker Containers]
→ [Resolution Engine] → [Interactive Prompts]
→ [Session Manager] → [Lifecycle & Cleanup]
├── extension/ Chrome browser extension (MV3)
│ ├── content/ Injects Run button on GitHub pages
│ ├── popup/ Extension popup UI
│ ├── background/ Service worker
│ └── lib/ Shared API client
│
├── backend/ Node.js API server
│ ├── routes/ REST API endpoints
│ ├── services/ Core business logic
│ │ ├── detectionEngine.js Stack detection (the hard part)
│ │ ├── configGenerator.js Dockerfile generation
│ │ ├── sandboxOrchestrator.js Docker container lifecycle
│ │ ├── resolutionEngine.js Interactive obstacle handling
│ │ ├── sessionManager.js Session lifecycle & timeouts
│ │ └── cacheManager.js Community-trained cache
│ ├── utils/ Helpers (logger, templates, scanner)
│ └── middleware/ Rate limiting, error handling
│
└── dashboard/ Web dashboard for session management
├── index.html Session grid, detail view, terminal
├── styles.css Dark-mode glassmorphism design
└── app.js xterm.js terminal, live preview
- Node.js ≥ 18
- Docker Desktop running (required for container sandboxing)
- Chrome / Edge (for the browser extension)
cd backend
cp .env.example .env # adjust settings if needed
npm install
npm run devOn Windows PowerShell systems that block npm.ps1, use npm.cmd run dev
instead. Docker Desktop must be running before clicking Run this repo.
The server starts at http://localhost:3333.
Dashboard is available at http://localhost:3333/dashboard.
- Open Chrome →
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked → select the
extension/folder - Navigate to any GitHub repo page
- Click the ▶ Run this repo button!
| Stack | Detection | Confidence |
|---|---|---|
| Node.js (npm/yarn/pnpm/bun) | package.json, lockfiles |
High |
| Python (pip/poetry/pipenv) | requirements.txt, pyproject.toml, Pipfile |
High |
| Go | go.mod |
High |
| Docker | Dockerfile, docker-compose.yml |
High |
| DevContainers | .devcontainer/ |
Dockerfile-based |
| Rust | Cargo.toml |
Medium |
| Java (Maven/Gradle) | pom.xml, build.gradle |
Medium |
| Ruby | Gemfile |
Low |
| PHP | composer.json |
Low |
| Monorepos | nx.json, lerna.json, turbo.json |
Medium (with picker) |
- File-based heuristic detection with confidence scoring
- Framework detection (Next.js, Express, Django, FastAPI, Gin, etc.)
- Auto-detects required services (Postgres, Redis, MongoDB)
- README fallback: extracts commands from Getting Started sections
- Missing API keys: Shows exactly which keys are needed with direct signup links
- Missing databases: Auto-provisions ephemeral Postgres/Redis/MongoDB
- Monorepos: Detects and offers package picker
- Ambiguous entrypoint: Asks for the one missing command
- Every resolution is cached per-repo — one person's fix helps the next user
- Containers run with
--no-new-privileges, dropped capabilities - Resource limits (CPU, memory) per session
- Auto-expiry after 30 minutes of inactivity
- Secrets held in-memory only, never stored or logged
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/repo/analyze |
Analyze a repo without running |
POST |
/api/repo/run |
Start the full pipeline |
GET |
/api/repo/status/:sessionId |
SSE progress stream |
GET |
/api/sessions |
List active sessions |
GET |
/api/session/:id |
Session details |
DELETE |
/api/session/:id |
Stop a session |
GET |
/api/resolution/:sessionId |
Get pending prompts |
POST |
/api/resolution/:sessionId |
Submit resolution |
GET |
/api/health |
Health check |
See .env.example for all available settings:
| Variable | Default | Description |
|---|---|---|
PORT |
3000 | Server port |
SESSION_TIMEOUT_MINUTES |
30 | Auto-expire after inactivity |
MAX_SESSIONS |
10 | Max concurrent sessions |
MAX_CONTAINER_MEMORY |
512m | Memory limit per container |
MAX_REPO_SIZE_MB |
500 | Max repo clone size |
MIT