Skip to main content

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:

  1. Verifies GitHub credentials and detects an installed IDE (VS Code code or Cursor cursor).
  2. Opens the Quest Board to search open issues by keyword, Sage, and assignment status.
  3. Clones a bounded, read-only analysis cache and extracts deterministic code evidence (E1–E8).
  4. Uses Gemma 4 to formulate grounded quest specifications with acceptance criteria.
  5. Creates an empty workspace directory and launches your IDE.
  6. 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 Yes to find unclaimed issues (is:unassigned) or No to include assigned issues.
  • Difficulty:
    • EASY: 60 minutes / 100 XP
    • NORMAL: 180 minutes / 150 XP
    • HARD: 360 minutes / 250 XP
    • EPIC: 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:

  1. Empty Workspace: Rune creates an isolated workspace directory at ~/.rune/workspaces/<quest-id>/ and opens it in your detected editor.
  2. 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 upstream remote, and create the quest branch.
  3. Read-Only Verification: Rune inspects git remote and git branch within the workspace. The quest timer starts only after verification succeeds.
  4. 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

  1. Start Rune:
    rune
    
  2. On the first run, paste your credentials when prompted. You can also set GITHUB_TOKEN and GEMINI_API_KEY before launching.
  3. Search for issues on the Quest Board:
    • Keywords: parser crash
    • Sage: pallets (or leave blank)
    • Unassigned: Yes
    • Difficulty: NORMAL
  4. Select an issue from the results.
  5. Review Gemma 4's quest framings with cited code evidence, acceptance criteria, and objectives.
  6. Accept a quest. Rune creates ~/.rune/workspaces/<quest-id>/ and opens VS Code or Cursor.
  7. Run the printed setup commands in the IDE terminal and press Enter to verify.
  8. 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>
    
  9. Open a Pull Request on GitHub against the base branch.
  10. Check progress with rune status.
  11. Merge the pull request on GitHub, then run:
    rune refresh
    
  12. See your quest marked COMPLETED and 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)

Source distribution for runecli 0.1.1
File Size Uploaded
runecli-0.1.1.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for runecli 0.1.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.1.3

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page