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+.

# Recommended: install globally using pipx
pipx install runecli

# Or install with pip
pip install runecli

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, printed, or persisted.
GEMINI_API_KEY Yes Google Gemini API key used exclusively with Google's open-weights Gemma 4 model (gemma-4-31b-it).
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.

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.

Demo Walkthrough

  1. Set your environment variables:
    export GITHUB_TOKEN="ghp_yourTokenHere"
    export GEMINI_API_KEY="AIzaSyYourKeyHere"
    
  2. Launch Rune:
    rune
    
  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!

License

MIT License. See LICENSE for details.

Metadata

Release files for runecli 0.1.0

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.0
File Size Uploaded
runecli-0.1.0.tar.gz 37.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for runecli 0.1.0
File Interpreter ABI Platform
runecli-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 85.4 kB

Release files / runecli-0.1.0.tar.gz

Download URL runecli-0.1.0.tar.gz
Size 37.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2378e8d9f92a6d168dd0d845d7732091d453802f234773288a66435a140711f3
BLAKE2b-256 checksum
How to use checksums
8bab6dfca9b5d338e7ef80edb1b93c3ba15fe0808abe14f536f39a92a455c56c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release files / runecli-0.1.0-py3-none-any.whl

Download URL runecli-0.1.0-py3-none-any.whl
Size 47.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78eb989a8f6eeeac6d59ac7440e74c6ad08cb807a693b9938c18ebc469655d62
BLAKE2b-256 checksum
How to use checksums
8aa630d3145d218bd1de349f53786c96954c941075eaa2b53dfd0abd17366bc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.5

Release history Release notifications | RSS feed

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

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