mtg - a Developer Tools tool by modern-terminal-games.
Your terminal has been all work and no play. Let's fix that.
Arcade-feel games that live where you do — one command, zero browser tabs.
Rust + Ratatui · 60 Hz fixed-timestep physics · optional arcade SFX
brew install mtg → play
brew tap modern-terminal-games/mtg brew trust modern-terminal-games/mtg # Homebrew 6+ third-party taps brew install mtg mtg
Rustacean? Even faster:
cargo install modern-terminal-games && mtg
That's it. A menu appears. Pick a game. Your build can wait.
Small on purpose. Every game here is built for the terminal first — not a sad port of something that belongs elsewhere.
Angle-aware paddle physics. Multi-hit blocks. Levels that get meaner the longer you survive.
mtg breaker
← → or A D move · Space launch · p pause · m mute · r restart · q quit
Two paddles. One ball. First to seven. Proper bounce angles, no cheap shots.
mtg paddle-battle
W S or ↑ ↓ move · Space serve · p pause · m mute · r restart · q quit
Eat apples. Grow longer. Don't hit the walls — or yourself. Speed ramps up as you feast.
mtg snek
WASD / arrows turn · p pause · m mute · r restart · q quit
A classic invader swarm. Strafe, shoot, hide behind bunkers. They get faster as the ranks thin — and they shoot back.
mtg alien-raid
A D or ← → move · Space fire · p pause · m mute · r restart · q quit
More coming. The catalog stays curated — quality over quantity. Got a game that deserves to exist? Make the case.
Because your compile takes four minutes and doomscrolling is a trap.
mtg.mtg-core engine means new games ship fast and feel consistent.brew tap modern-terminal-games/mtg brew trust modern-terminal-games/mtg brew install mtg
Upgrade later:
brew update && brew upgrade mtgCargo
cargo install modern-terminal-games
Want just one game as a standalone binary?
cargo install mtg-breaker cargo install mtg-paddle-battle cargo install mtg-snek cargo install mtg-alien-raid # Alien RaidFrom source
git clone https://github.com/modern-terminal-games/mtg.git cd mtg cargo install --path crates/mtg mtg
Requirements: a modern terminal with color support. Audio is a bonus, not a dependency — no speakers, no problem.
mtg # interactive menu mtg list # list games mtg breaker # jump straight in mtg paddle-battle # or here mtg snek # or here mtg alien-raid # or here mtg help
mtg/
├── crates/
│ ├── mtg/ # Launcher binary (`mtg`)
│ ├── mtg-core/ # Shared loop, input, audio, theme, UI
│ ├── breaker/ # Breaker
│ ├── paddle-battle/ # Paddle Battle
│ ├── snek/ # Snek
│ └── alien-raid/ # Alien Raid
├── docs/assets/
├── LICENSE
└── README.md
| Crate | Role |
|---|---|
modern-terminal-games |
Launcher (mtg) |
mtg-core |
Game loop, input, audio, UI primitives |
mtg-breaker |
Breaker |
mtg-paddle-battle |
Paddle Battle |
mtg-snek |
Snek |
mtg-alien-raid |
Alien Raid |
mtg launchermtg-core engineThe bar is one sentence: it should feel intentional in a terminal.
crates/ exposing pub fn run() -> anyhow::Result<()>mtg-core for the loop, input, audio, and UI chromecrates/mtg/src/main.rscargo run -p modern-terminal-games -- <your-game>
Enjoying the arcade? A ⭐ keeps the neon lights on.
Made for people who live in the terminal — and still want to play something beautiful.