RuneCLI
A terminal-first developer tool that turns real GitHub issues into grounded, timed coding quests with RuneScape-inspired progression.
Installation
RuneCLI requires Python 3.11 or newer. Install the published package:
python -m pip install runecli
rune --help
pipx install runecli is also a good option for an isolated command-line
installation. On Linux distributions that protect the system Python, use
pipx or a user-managed Python installation instead of
--break-system-packages.
Environment Variables
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | Personal access token (classic or fine-grained with repo scope) used to interact with the GitHub API. Never logged or printed; interactive setup stores it only in Rune's owner-only local config. |
GEMINI_API_KEY |
Yes | Google Gemini API key used exclusively with Google's open-weights Gemma 4 model (gemma-4-31b-it). Interactive setup stores it only in Rune's owner-only local config. |
RUNE_SEARCH_USER |
No | Pre-fills the Sage prompt on the Quest Board (the GitHub user or org whose issues to search; not your personal username). |
GEMMA_MODEL |
No | Gemma model identifier (defaults to gemma-4-31b-it; also supports gemma-4-26b-a4b-it). Must start with gemma-. |
RUNE_DURATION_OVERRIDE_SECONDS |
No | Overrides quest timer duration in seconds for testing and demos. Modifies duration only, never XP. |
RUNE_HOME |
No | Custom root directory for local quest records, workspaces, player cache, and analysis clone caches (defaults to ~/.rune). |
SENTRY_DSN |
No | Optional Sentry DSN for error telemetry. When set, only redacted tags are sent; tokens, issue content, and file paths are never transmitted. |
On the first interactive rune launch, Rune asks for your GitHub token and
Gemini API key using hidden password prompts. They are stored locally in
~/.rune/config.json (or under RUNE_HOME) with owner-only permissions and
loaded automatically on later launches. Environment variables, when provided,
take precedence over saved values. Never commit tokens or put them in a
repository file.
Commands
Rune provides exactly three commands:
rune
Starts the interactive quest cycle:
- Verifies GitHub credentials and detects an installed IDE (VS Code
codeor Cursorcursor). - Opens the Quest Board to search open issues by keyword, Sage, and assignment status.
- Clones a bounded, read-only analysis cache and extracts deterministic code evidence (E1–E8).
- Uses Gemma 4 to formulate grounded quest specifications with acceptance criteria.
- Creates an empty workspace directory and launches your IDE.
- Prints guided Git setup commands and verifies your branch before starting the timer.
rune status
Displays the active quest's status, remaining time, acceptance criteria, matched pull request status, and Git finishing instructions.
rune refresh
Polls GitHub for pull request activity matching your quest branch. When your PR is merged, transitions the quest to COMPLETED and awards RuneScape XP.
Quest Board Filters
- Keywords: 3 to 8 search terms matching issue titles and bodies.
- Sage: The GitHub username or organization whose repositories to search (e.g.
pallets,fastapi). Leave blank to search across public repositories. Note: Sage designates the repo owner whose issues you seek to solve, not your own username. - Unassigned: Choose
Yesto find unclaimed issues (is:unassigned) orNoto include assigned issues. - Difficulty:
EASY: 60 minutes / 100 XPNORMAL: 180 minutes / 150 XPHARD: 360 minutes / 250 XPEPIC: 540 minutes / 400 XP
Guided Git Flow
Rune guides; the player controls Git. Rune never automatically pushes, commits, creates branches, or forks on your behalf:
- Empty Workspace: Rune creates an isolated workspace directory at
~/.rune/workspaces/<quest-id>/and opens it in your detected editor. - Setup Instructions: Rune prints the exact commands to run in your IDE terminal:
- Direct Route (repositories where you have push permission): Clones the base repo and creates a dedicated quest branch (
rune/<display_id>-<issue_number>-<slug>). - Fork Route (external open-source repositories): Instructs you to fork the repository on GitHub, clone your fork, configure the
upstreamremote, and create the quest branch.
- Direct Route (repositories where you have push permission): Clones the base repo and creates a dedicated quest branch (
- Read-Only Verification: Rune inspects
git remoteandgit branchwithin the workspace. The quest timer starts only after verification succeeds. - Finishing Instructions: Once coding is complete, Rune prints the commands to stage, commit, and push your branch, along with the link to open a standard GitHub pull request.
Basic usage
rune
rune status
rune refresh
The first command opens the interactive Quest Board. Rune creates local quest
records and analysis caches under ~/.rune.
Demo walkthrough
- Start Rune:
rune
- On the first run, paste your credentials when prompted. You can also set
GITHUB_TOKENandGEMINI_API_KEYbefore launching. - Search for issues on the Quest Board:
- Keywords:
parser crash - Sage:
pallets(or leave blank) - Unassigned:
Yes - Difficulty:
NORMAL
- Keywords:
- Select an issue from the results.
- Review Gemma 4's quest framings with cited code evidence, acceptance criteria, and objectives.
- Accept a quest. Rune creates
~/.rune/workspaces/<quest-id>/and opens VS Code or Cursor. - Run the printed setup commands in the IDE terminal and press Enter to verify.
- Implement your fix in the IDE and run Rune's finish commands:
git add . git commit -m "fix: resolve CLI parser crash" git push origin rune/<branch-name>
- Open a Pull Request on GitHub against the base branch.
- Check progress with
rune status. - Merge the pull request on GitHub, then run:
rune refresh - See your quest marked
COMPLETEDand watch your RuneScape level progress!
Development
To work on RuneCLI from source:
git clone https://github.com/khanirfan18/runecli.git
cd runecli
python -m pip install -e ".[dev]"
python -m pytest -q
Build release artifacts locally with:
python -m pip install build
python -m build
Reporting issues
Report bugs and feature ideas at https://github.com/khanirfan18/runecli/issues.
License
MIT License. See LICENSE for details.
Metadata
Release files for runecli 0.1.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 | |
|---|---|---|---|
| runecli-0.1.1.tar.gz | 39.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| runecli-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 89.9 kB
Release files / runecli-0.1.1.tar.gz
| Download URL | runecli-0.1.1.tar.gz |
|---|---|
| Size | 39.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a16a2420341bff0b5046cad2b207914277c921d470fcba37ef5127b8a5ab6a31
|
|
BLAKE2b-256 checksum How to use checksums |
96898b09f8d478b4511f096cd1577c6bf277bde03d98ee12e20ee4dd7578b024
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency logRelease files / runecli-0.1.1-py3-none-any.whl
| Download URL | runecli-0.1.1-py3-none-any.whl |
|---|---|
| Size | 50.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0684633507b7f316258e8e971923f59d04a16a9ff84eaad562d4c5f8706188a
|
|
BLAKE2b-256 checksum How to use checksums |
2cf9e2ec69d1ec7c9e123930d96a193181bc7e6ad899b6cb3a7a15179879886c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.
Transparency log