Skip to main content
██╗██████╗ ██╗
██║██╔══██╗██║
██║██████╔╝██║
██║██╔══██╗██║
██║██║  ██║███████╗
╚═╝╚═╝  ╚═╝╚══════╝

✨ Software for Humans. Useful tools. Less terminal drama. ✨

The terminal command center that installs anything, remembers you're a mammal, and pays you coins for touching grass.

PyPI PyPI Downloads Python Wheel size License GitHub stars CI

Linux · macOS · Windows — one codebase, zero platform drama.

Install · The Tour · Commands · How It Works · Easter Eggs


📦 Install

pip install --upgrade irl-pkg
irl

First launch gives you a 30-second onboarding: a splash, a name, a vibe picker with live previews, and a tour. After that, it's just your terminal — but nicer.

pip install 'irl-pkg[tui]'   # optional: the full-screen Textual app

🎬 The Tour, in Six Screenshots

Every screenshot below is real irl output, rendered from the live program.

The Dashboard

Real system stats, a GitHub-style grass contribution heatmap, rotating tips, and every feature exactly one keypress away.

IRL Dashboard

The Universal Installer

irl install requests                       # PyPI
irl install express                        # npm
irl install owner/repo                     # GitHub
irl install https://example.com/pkg.zip    # direct URL

One command. IRL sniffs the target, checks your system, downloads with a progress bar, previews the archive, and extracts into a named directory — zip-slip-proof. You earn coins. You always earn coins.

Grassland Quest 🌾

The garden-maze roguelike that ships free with every install. Collect water and sunshine, dodge literal bugs, and face The Deadline in boss combat. Winning extends your grass streak.

Grassland Quest

Your Pet 🦆

Adopt a rubber duck, cat, dog, or fern. It evolves with your care and your grass streak — from Egg of Potential to Production-Ready Legend. Skip days and it sulks. Visibly. Pets keep receipts.

IRL Pet

Daily Quests 📋

Three date-seeded tasks a day. Rewards pay out the moment a quest completes — and irl itself reports them, whether you installed, hydrated, or visited city.

Daily Quests

The Theme Store 🏪

Eighteen themes with live previews before you buy. Synthwave. Sakura. Terminal Classic. High-Contrast. And one you have to find.

Theme preview

🗺️ Commands

🧰 The useful part — package superpowers
Command What it does
irl install <pkg> Installs from PyPI, npm, GitHub (owner/repo), or a direct URL — it figures out the registry.
irl glasses <pkg> Inspects before you trust it: version, size, source.
irl doctor <pkg> Checks network, storage, and toolchain before installs go sideways.
irl search <query> AI-assisted package search that ends in an install offer.
irl run <cmd> Runs a command; in a project folder it quietly becomes npm run <cmd>.
irl rollback [ver] Time-travels irl-pkg to any published version. Interactive picker, --yes for the impatient.
irl upgrade Upgrades IRL™ itself via a delayed, detached pip process.
irl lang The bundled .irl toy language: run <file>, demo, or a persistent-env repl.
🌱 The wellness part — mammals need maintenance
Command What it does
irl grass Touch grass. Daily. Streaks, ranks, and a heatmap you'll feel guilty breaking.
irl hydrate / posture / window / mirror Small rituals with strong opinions about your spine.
irl quests Three daily quests that pay coins.
irl achievements 12 trophies + XP levels: Noob → Code Gremlin → 10x Dev → Grass Sensei.
irl pet A terminal tamagotchi. It earns coins. It remembers neglect.
irl chaos A quiz. About bugs. And hubris.
🎮 The fun part — productivity's natural predators
Command What it does
irl dashboard Mission control: real stats, heatmap, tips, 22 commands, arrow-key driven.
irl games The game library — press G for Grassland Quest, R for Lofi Rhythm. Both free.
irl grassland Garden-maze roguelike: seeded mazes, roaming bugs, boss fight, streak bonus.
irl rhythm 4-lane falling-note beat game (D/F/J/K) charted from 71 bundled lofi loops. Same song → same chart.
irl city IRL City: jobs, car theft, bank robberies, a wanted level, and consequences.
irl store 18 themes, spare parts, games. Live previews included.
irl story Branching themed stories. One of them is about MS-DOS.
irl bones / joke / dog / manga Lofi beats, developer jokes, ASCII dogs, manga reader.
irl tui Full-screen Textual app: home, installer, games, lofi player. pip install 'irl-pkg[tui]'.
🔑 The secret part — codes open doors

Some things aren't in the help. The dashboard listens for more than arrow keys. Numbers can be answers. Food can arrive in 30 minutes or fewer.

One of the store's eighteen themes cannot be bought. It has to find you.


⚙️ How It Works

Install routing

flowchart LR
    A["irl install &lt;target&gt;"] --> B{What is it?}
    B -->|https://...| C[Download & verify archive]
    B -->|owner/repo| D[GitHub API → default branch zip]
    B -->|name| E{Registry probe}
    E -->|PyPI 200| F["pip install (arg list)"]
    E -->|npm 200| G["npm install (arg list)"]
    E -->|neither| H[GitHub keyword search → top-starred repo]
    C --> I[Preview → member-validated extract → coins]
    D --> I
    F --> I
    G --> I
    H --> I

The engine room

irl/keys.py One keyboard abstraction. msvcrt on Windows, termios+tty on POSIX, normalized Key objects (UP/ENTER/CTRL_C/CHAR('q')...), non-TTY safe — games and the dashboard both sit on it.
irl/audio.py Auto-detecting playback chain: winsound → aplay → ffplay → afplay → paplay. Fire-and-forget, arg lists, a looping thread for the rhythm game. No backend? Air guitar.
irl/ui.py The design system: gradient wordmark, brand panels, spinners, Nerd Font icons with automatic ASCII fallback, and errors that help.
irl/extract.py Downloads to a sanitized filename, previews the archive, extracts into a named directory — every member resolved and validated against the target (zip-slip), symlinks rejected.
irl/rollback.py Live version list from the PyPI JSON API, questionary picker, detached pip child with CREATE_NEW_PROCESS_GROUP via getattr — POSIX-safe.
irl/lang/ The .irl toy language: snag spill bet cap grind brb task, fax/fake. Lexer → parser → interpreter, shipped in the wheel.

Determinism, deliberately

Mazes and beatmaps are seeded: Grassland Quest mazes come from a recursive-backtracker with a fixed seed, and Lofi Rhythm charts are derived from sha256(filename) + the WAV's real duration (stdlib wave). Same song, same chart — so high scores mean something, and the tests are just tests.

Where your stuff lives

File Contents
~/.irl_state.json Name, coins, XP, owned themes
~/.irl_grass.json Streak + heatmap history
~/.irl_pet.json Your pet's entire worldview
~/.irl_quests.json Today's board
~/.irl_rhythm.json Per-track high scores
~/.irl_achievements.json Trophy case

Delete them to start over. Your pet will remember, briefly.


🛡️ Security Posture

  • No shell=True anywhere. Every subprocess is an argument list.
  • Zip-slip-proof extraction: each archive member is resolved and verified against the target directory before a single byte is written; absolute paths, .. traversal, Windows drive letters, and symlink members are rejected.
  • Preview before extract — you see what lands on disk, and approve it.
  • Sanitized download filenames — Content-Disposition can't write outside.
  • SSL verification stays on for every registry and API call.

🧪 Project Health

ruff check .        # zero violations
pytest              # 114 tests, logic coverage: routing, zip-slip, mazes,
                    # charts, streaks, pets, quests, achievements, language
python -m build     # 976 KB wheel (down from 13.4 MB)

CI: Ubuntu · macOS · Windows × Python 3.9 → 3.13, plus build checks and a coverage gate. Releases: tag v* → test → build → PyPI trusted publishing → GitHub Release generated from CHANGELOG.md. Dependabot and issue/PR templates included — see CONTRIBUTING.md.

Wheel size: the story of the 12.4 MB DOS game

The 1.x wheel shipped with the original GTA 1997 DOS executable zipped inside — 12.4 MB of pure nostalgia we couldn't legally redistribute. In 2.0 it has officially ridden into the sunset. Pressing G in IRL City now offers a moment of silence, and the wheel weighs 976 KB.

The lofi loops stayed. They're only 1.4 MB and they're the soundtrack now.

FAQ

Is the gamification mandatory? No. Every game and streak is strictly opt-in. irl install works exactly the same whether you have a pet or not.

Does it phone home? No telemetry. The only network calls are to the registries and APIs you ask it to talk to (PyPI, npm, GitHub, dog.ceo...).

Why AGPL? Because tools that people depend on should stay open. Fork away; the headers ask you to share improvements too.

Python 3.8 in 2026? Yes — old machines deserve nice terminals too. Everything also runs on 3.13.

Windows, really? Really. Same commands, same colors, same pet. msvcrt/winsound under the hood where needed.


🗺️ Roadmap

  • irl graph — dependency tree visualizer
  • Grassland Quest: seasonal events + mutators
  • Plugin API for custom quests
  • Pet co-op (multi-pet households)

👤 Author

Anika Mukherjee — Dev2Creator

IRL™ is a trademark of Anika Mukherjee.

📜 License

Copyright © 2026 Anika Mukherjee. Released under the GNU Affero General Public License v3 or later — see LICENSE.

Software for Humans. Useful tools. Less terminal drama. 🌱

pip install irl-pkg — your grass misses you.

Release files for irl-pkg 2.0.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 irl-pkg 2.0.0
File Size Uploaded
irl_pkg-2.0.0.tar.gz 978.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for irl-pkg 2.0.0
File Interpreter ABI Platform
irl_pkg-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / irl_pkg-2.0.0.tar.gz

Download URL irl_pkg-2.0.0.tar.gz
Size 978.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0cbfa4869d83e6a324a624ca35f160ac22e3172662f2d9b1cae71c6865b6bbd4
BLAKE2b-256 checksum
How to use checksums
28e8801930b4849f3e457ec172a45a5166014a93f3d1924a6fb15e1e833c8643
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 Sep 27, 2026.

Transparency log

Release files / irl_pkg-2.0.0-py3-none-any.whl

Download URL irl_pkg-2.0.0-py3-none-any.whl
Size 998.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6fadbfe2173f0a5a3a43c854b357a25aff6c515b68e4bb3324aab31dfae95665
BLAKE2b-256 checksum
How to use checksums
ef8c943eedab2b88ebc850ce6577a4e118cd3567f59f84bf2275996cf2e773e7
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 Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.0

2 release files

This release

2.0.0 This release

2 release files

1.7.6

1 release file

1.7.5

1 release file

1.7.4

1 release file

1.7.3

1 release file

1.7.2

1 release file

1.7.1

1 release file

1.6.0

1 release file

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.9

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.2

2 release files

1.0.1

2 release files

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