Automatically set up and run any GitHub repository using AI-powered dependency resolution
Project description
runr
Automatically set up and run any GitHub repository using AI-powered dependency resolution.
runr https://github.com/karpathy/nanoGPT
That's it. runr clones the repo, reads every dependency file, resolves conflicts via an LLM, creates an isolated virtual environment, installs everything, and runs the project — self-healing up to 5 times if anything goes wrong.
Install
pip install runr
# or, for latest:
pip install git+https://github.com/runr-cli/runr
Requires Python 3.10+. Optionally install uv for faster installs:
pip install uv
Setup
Set your Groq API key (get one free at console.groq.com):
export GROQ_API_KEY=gsk_...
Usage
# Run a GitHub repo
runr https://github.com/karpathy/nanoGPT
# Run a local repo
runr ./my_local_project
# Force Python version
runr https://github.com/user/repo --python 3.11
# CPU-only (skip CUDA deps)
runr https://github.com/user/repo --no-gpu
# Preview plan without running
runr https://github.com/user/repo --dry-run
# Override entry point
runr https://github.com/user/repo --entry src/train.py
# Verbose (shows install logs + resolved requirements)
runr https://github.com/user/repo --verbose
# Private repo
runr https://github.com/org/private-repo --token ghp_...
# or set GITHUB_TOKEN env var
What happens
◆ runr v0.1.0
● Cloning karpathy/nanoGPT... ✓ (2.3s)
● Detecting dependencies... ✓ 14 imports detected, 2 dep files
● Environment: Python 3.11.9, Darwin arm64, CPU only
● Resolving conflicts... ✓ 12 packages resolved
● Creating environment & installing...✓ installed via uv in 18.4s
● Entry point: python train.py
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[live repo output streams here]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Successfully completed after 1 attempt(s)
If the run fails, runr self-heals:
✗ Run failed (attempt 1/5)
Error: No module named 'flash_attn'
◆ Healing...
→ pip install flash-attn==2.3.0
Installing flash-attn compatible with CUDA 12.1
✓ Fix applied
● Retrying... ✓ Success
How it works
| Step | Module | What it does |
|---|---|---|
| Clone | cli.py |
Clones to a temp directory; never touches your original files |
| Detect | detector.py |
Reads requirements.txt, setup.py, pyproject.toml, environment.yml, Dockerfile, scans .py imports |
| Resolve | resolver.py |
Sends everything to Groq llama-3.3-70b-versatile; gets back a pinned requirements.txt |
| Install | installer.py |
Creates venv via uv venv (falls back to python -m venv), installs pinned deps |
| Run | runner.py |
Streams live output; on failure passes error to healer |
| Heal | healer.py |
LLM returns a structured fix: install package / modify file / set env var |
Caching
Resolved requirements are cached in ~/.runr/cache/ keyed by a SHA-256 hash of all dependency files. Same repo + same deps = instant resolution skip. Use --no-cache to force a fresh resolve.
Logs
Full logs are written to ~/.runr/logs/<repo>_<timestamp>.log.
Environment detection
runr automatically detects:
- Python version and OS/arch
- CUDA version (
nvcc --version,nvidia-smi) - GPU presence
- Already-installed packages (avoids re-pinning what's there)
Supported dependency files
requirements.txtrequirements-dev.txtsetup.pysetup.cfgpyproject.tomlenvironment.yml(conda)Dockerfile(extractsRUN pip installlines)- Implicit imports scanned from all
.pyfiles
Error handling
| Error | How runr handles it |
|---|---|
| torch CUDA mismatch | Detects CUDA version, installs correct +cu* build |
| Package not on PyPI | LLM skips or finds alternative |
| Python version mismatch | Reads requires-python, suggests correct version |
| Missing system deps | Prints human-readable install instructions |
| Private repo | Prompts for --token or GITHUB_TOKEN |
| Notebook-only repo | Launches jupyter notebook |
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 runr_ai-0.1.0.tar.gz.
File metadata
- Download URL: runr_ai-0.1.0.tar.gz
- Upload date:
- Size: 31.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a241e62dbe650be96378a15118709b2531ea0c94f1ef3f38a13bb22f0c0f7ac
|
|
| MD5 |
b6932c9c2b490a89db81f85375cdcfc8
|
|
| BLAKE2b-256 |
a8514395bafaa2e2fb94059006a862c98e612b8ae0225e957a1d832c72cf0841
|
File details
Details for the file runr_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: runr_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f781eae0078e7f16895ece2aa7917e64702bead474bf9fbeab66ba7a9ffa7e15
|
|
| MD5 |
98007431d0a6fda1d0e7515bd1939472
|
|
| BLAKE2b-256 |
585a20eca434a49932f0dcc1c0ea868acbdc257dd2c51d8523438251584f2bb6
|