magmacrunch
The terminal arcade. One command, a menu of every cabinet installed on the machine, and a way into one.
pip install magmacrunch
magmacrunch
__
.--------.---.-.-----.--------.---.-.----.----.--.--.-----.----.| |--.
| | _ | _ | | _ | __| _| | | | __|| |
|__|__|__|___._|___ |__|__|__|___._|____|__| |_____|__|__|____||__|__|
|_____|
EVERY CABINET ON THIS MACHINE
INSERT COIN
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ George Boole Has Entered The │ │ Moonlight Drift │
│ Chat │ │ │
│ │ │ Thread the columns. Hold to │
│ 2048 played with logic gates │ │ climb, release to fall. │
│ — merge, invert, overflow. │ │ │
│ │ │ │
│ ▶ ENTER_ │ │ ▶ ENTER │
└──────────────────────────────┘ └──────────────────────────────┘
PAGE 1/2
↑↓←→ CHOOSE ENTER PLAY Q QUIT
© 2026 magmacrunch media · magmacrunch.com
It is magmacrunch.com/arcade in a shell — the same palette, the same card
grid, the same blinking cursor on the card you are about to start. The one
thing that could not come across is the typography: arcade.css sets
Press Start 2P on nearly every string, and a terminal program does not
choose its font. Pixel lettering has to be drawn, out of block glyphs, which
is what the narrow title variant does — and what the web page's own title art
does too, in Courier Prime rather than Press Start 2P, for the same reason.
The title art stands down as the window grows or shrinks, and always before the cabinets have to — which is what keeps the floor as low as it is:
| window | banner |
|---|---|
| 121×34 and up | the full site wordmark, MAGMACRUNCH over ARCADE, 119×19 |
| ~73×30 | the same two words in 71 columns instead of 119 |
| 80×24 | MAGMACRUNCH alone, 71×5 |
| ~62–72 cols | the ARCADE wordmark alone, 60×8 |
| ~50 cols | a block-glyph MAGMACRUNCH, 48×2 |
| 36 cols | spaced capitals |
Art is measured rather than declared, so the 119-column piece can sit at the
top of the list without ever bothering someone on an ordinary terminal — it
is simply never the one that fits. Adding your own is one entry in VARIANTS
in banner.py and nothing else.
Choosing a cabinet starts it on the terminal the arcade is already holding.
Leaving the game brings you back here. Every game is also its own command
(george-boole, lava-dome, moonlight-drift) and plays identically either way — the arcade is
not a wrapper around them, it is the same host they run on.
What is installed
magmacrunch --list
Prints every cabinet found, what terminal size it wants, and how it wants input. If a game you installed is not in the menu, this says why — a game that fails to load is reported rather than silently skipped.
How games get here
Games are not bundled. Each one lives in its own repo alongside its browser and Wii versions, publishes its own wheel, and declares an entry point:
[project.entry-points."magmacrunch.games"]
george-boole = "boole.arcade:GAME"
pointing at an object with info: GameInfo and start(host) -> scene. The
launcher enumerates that group at startup. Installing a game makes it appear
here; uninstalling makes it vanish; neither needs a release of the arcade.
Nothing in this package imports a game, so the arcade runs with none installed
and tells you how to get one. The contract lives in
texastoast.arcade; the two cabinets
above are worked examples of it.
Cabinets
magmacrunch-george-boole |
2048 played with logic gates |
magmacrunch-thld |
Solo hold'em against a climbing threshold |
magmacrunch-moonlight-drift |
Thread the columns; hold to climb |
Installing magmacrunch installs all three.
Requires
Python 3.10+, and a terminal at least 36×17. Individual cabinets ask for more (around 59×22); below that their card greys out, says the size it wants, and cannot be started. The arcade's own floor is deliberately lower than any game's, so getting to the floor is never the thing that fails.
Two cards sit side by side from 70 columns and stack into one below that. More cabinets than fit are paged, not scrolled.
Truecolor helps but is not required.
Licence
PolyForm Noncommercial 1.0.0 — see LICENSE and NOTICE. Noncommercial because the games it seats are. The engine underneath, texastoast, stays Apache-2.0.
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 magmacrunch-0.1.1.tar.gz.
File metadata
- Download URL: magmacrunch-0.1.1.tar.gz
- Upload date:
- Size: 28.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c60543e8576ef264272f8f019052b10805f1e6014ee044d51e7e2e4e96b047fb
|
|
| MD5 |
c7194cb45083e94eac292d3839ef8b28
|
|
| BLAKE2b-256 |
be1f6b5a27157d2915bb54149dbb54e3a7b8be540ac5f5d362a76925ec08a2e9
|
Provenance
The following attestation bundles were made for magmacrunch-0.1.1.tar.gz:
Publisher:
release.yml on magmacrunchmedia/magmacrunch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magmacrunch-0.1.1.tar.gz -
Subject digest:
c60543e8576ef264272f8f019052b10805f1e6014ee044d51e7e2e4e96b047fb - Sigstore transparency entry: 2618211006
- Sigstore integration time:
-
Permalink:
magmacrunchmedia/magmacrunch@4a15764a7f970bfcc58635961b51c3d1ec9ab3a2 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/magmacrunchmedia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a15764a7f970bfcc58635961b51c3d1ec9ab3a2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file magmacrunch-0.1.1-py3-none-any.whl.
File metadata
- Download URL: magmacrunch-0.1.1-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa7f47d855b2c60edce218ff60bb95f1dc6a55e7db17aa8cabf623996a401772
|
|
| MD5 |
13f24312e43ab1e6241176e8ec4dfef0
|
|
| BLAKE2b-256 |
8aac814ee2a03af945dec912e267987227ff36facf794dc22243286f8b5a6914
|
Provenance
The following attestation bundles were made for magmacrunch-0.1.1-py3-none-any.whl:
Publisher:
release.yml on magmacrunchmedia/magmacrunch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magmacrunch-0.1.1-py3-none-any.whl -
Subject digest:
fa7f47d855b2c60edce218ff60bb95f1dc6a55e7db17aa8cabf623996a401772 - Sigstore transparency entry: 2618211015
- Sigstore integration time:
-
Permalink:
magmacrunchmedia/magmacrunch@4a15764a7f970bfcc58635961b51c3d1ec9ab3a2 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/magmacrunchmedia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4a15764a7f970bfcc58635961b51c3d1ec9ab3a2 -
Trigger Event:
push
-
Statement type: