Everything named anywhere in this wiki: the languages we write in, the software we run, the libraries we depend on. Libraries are grouped under their language. Nothing comes from a lock file — this is what the wiki talks about, with a link wherever a page exists.
| Language | What it is | Where we use it |
|---|---|---|
| Go | Statically typed systems language; cross-compiler and WebAssembly target in the standard toolchain. | Ebitengine games, Inkwell, the Updater bot, the wiki fetcher and Countdowner |
| Ruby | Dynamic, object-oriented scripting language. | The Catalog API, WarpEngine and the RuBBS gem |
| Python 3 | Scripting language present on practically every host. | Every store engine — standard library only, because a Batocera box has python3 and no pip |
| Rust | Memory-safe systems language, built around Cargo crates. | Bevy games |
| Lua | Small embeddable scripting language. | TIC-80 cartridges and LÖVE games |
| JavaScript | The language of the browser. | Phaser games and the renderer of the WarpEngine Client |
| TypeScript | JavaScript with static types, compiled before it ships. | The public site's frontend and the WarpEngine Client |
| GDScript | Godot's own Python-flavoured scripting language. | Godot projects |
| C# | Godot's second first-class scripting option. | Available in Godot |
| 6502 assembly | Machine language of the C64's MOS 6510. | Blessing of Ra, Rabbit Scooter — C64, the C64 Demo |
| Free Pascal | Compiled Pascal; small self-contained binaries. | The Discord thread scheduler |
| C / C++ | What the fantasy console itself is written in. | Building the TIC-80 Pro binary from source in the builder image |
| Java | Cross-platform, JVM-hosted language. | Running the Unique Tile Finder jar when producing TIC-80 tiles |
| PHP | Server-side scripting language. | Grav CMS, which serves this wiki |
POSIX sh |
Lowest common denominator shell, so a curl-piped installer runs where /bin/sh is dash. |
Every store installer and uninstaller |
| ERB | Ruby's embedded templating syntax. | WarpEngine's per-platform CI pipeline templates and RuBBS screen templates |
| Twig | PHP templating language used by Grav. | The wiki theme and its JSON API endpoints |
| Technology | What it is | Notes |
|---|---|---|
| Ebitengine | 2D game engine for Go; desktop and WebAssembly from one code base. | Powers Rabbit Roller |
| Bevy | Data-driven ECS engine in Rust, no visual editor — projects are Cargo crates. | First-class WASM support |
| Godot | Open-source 2D/3D engine with a visual editor and headless export. | Exports web plus Windows, Linux and a universal macOS build |
| LÖVE (Love2D) | Lightweight Lua framework for 2D games, packaged as a .love archive. |
Web builds via love.js |
| Phaser | HTML5 2D framework: WebGL/Canvas, physics, tweens, particles. | Needs no compilation — the simplest of our pipelines |
| TIC-80 | Fantasy console with editors for code, sprites, maps, sound and music. | The Pro version is a commercial itch.io product; our builder image compiles it from source |
| Commodore 64 | The 8-bit home computer, targeted in assembly as a .prg. |
PAL, raster-polled, no interrupts |
| Inkwell | Our point-and-click framework for Go, a DSL layer over Ebitengine. | Implements the SCUMM-era skeleton |
| Project | Language | What it does |
|---|---|---|
| WarpEngine | Ruby | Mountable Rails engine: retro software catalog, CI pipelines, build endpoints, public JSON API. |
| RuBBS | Ruby | Synchronet-style Telnet BBS framework: negotiation, ANSI frame buffer, widgets, themes. |
| Inkwell | Go | Point-and-click framework on Ebitengine; every entity is a struct literal in a manager. |
| warpstore | Python | Shared core of the store engines: catalog, releases, host matching, state, HTTP — one dependency-free file. |
| WarpEngine Batocera Store | Python | Writes a catalog into a Batocera box's ROM folders and merges gamelist.xml. |
| WarpEngine RetroArch Store | Python | Renders a catalog as RetroArch .lpl playlists with box art, locally or exported. |
| WarpEngine Client | TypeScript | Desktop app showing the catalog as a grid of cards, with the store engine built in. |
| TTG Batocera Store / TTG RetroArch Store | JSON | Our own store definitions — a config.json and two wrapper scripts on top of the engines above. |
| BBS Server | Ruby | The public Teletype Games BBS on games.teletype.hu:2323, built on RuBBS. |
| Updater bot | Go | Polls the wiki, Redmine and Gitea, announces new activity on Discord; a cache prevents repeats. |
| Status bot | Free Pascal | Creates a weekly Discord thread at a set time and posts the opening message. |
| Countdowner | Go | Countdown timers for deadlines and releases — see Server. |
| wiki-fetcher | Go | HTTP hook that commits, rebase-pulls and pushes the wiki repository on a Gitea webhook. |
| backup-scripts | Make + shell | Dumps databases, mirrors repositories, prunes old dumps, rsyncs off-site. |
| Software | What it is | Role here |
|---|---|---|
| Nginx | HTTP server and reverse proxy. | Entry point for all traffic, SSL termination — see Server |
| Traefik | HTTP reverse proxy and load balancer with dynamic routing. | Routes the containerised services by Host header |
| Gitea | Self-hosted Git: repositories, code review, issues. | Our forge at git.teletypegames.org; also hosts a rubygems package registry |
| Woodpecker CI | CI/CD engine integrated with Gitea. | Runs every build; its configuration extension fetches the pipeline from WarpEngine |
| Grav | Flat-file CMS; content is markdown on disk. | This wiki |
| Discourse | Community discussion platform. | Long-form conversations, announcements and support |
| Redmine | Project management and issue tracking. | Development tasks, bugs and milestones |
| Matomo | Privacy-friendly self-hosted analytics. | Traffic across the public sites |
| Uptime Kuma | Self-hosted uptime monitor with alerts. | Availability of every server-side component |
| Docker & Docker Compose | Container runtime and orchestration. | Every service on the box, and every CI builder image |
| MySQL 8 | Relational database. | The catalog database behind the Catalog API |
| MariaDB | MySQL-compatible relational database. | Redmine's database — backed up with its own dump script |
| PostgreSQL | Relational database. | The wiki's database — backed up with pg_backup.sh |
| phpMyAdmin | Web UI for inspecting and managing MySQL. | Database inspection in the deployment stack |
| Apache | Web server bundled in the Grav container alongside PHP 8.1. | Serves the wiki inside its container |
| Telnet | The 1970s remote terminal protocol, IAC negotiation and all. | How you reach the BBS |
| rsync | Incremental file synchronisation over SSH. | Off-site mirroring of the backups |
| Discord | Chat platform with bots and webhooks. | Team communication, and the target of both bots |
| Google Calendar | Shared calendar. | Team scheduling — see Communication |
| YouTube Data API | Google's API for channel and video metadata. | The public site's latest-video panel |
| Tool | What it is | Where it shows up |
|---|---|---|
| GNU Make | Build automation driven by a Makefile. |
The common front door of every engine's workflow, the backups and the client |
| Git | Distributed version control. | Everything, including the version fallback when metadata.json is absent |
| Docker builder images | Per-platform CI images configured server-side in WarpEngine's ci_platforms. |
godot-builder, tic80pro, bevy-builder, love-builder, ebitengine-builder, phaser-builder, c64-builder |
| Ubuntu / Debian / Alpine | The base Linux distributions of those images. | Ubuntu 24.04 for the TIC-80 Pro build, Debian for the Rust toolchain, Alpine for the light steps |
| godot-ci | Headless Godot editor plus matching export templates, in a container. | The base of our godot-builder image |
| CMake | Cross-platform build system generator. | Compiling TIC-80 Pro from source |
| SDL2 | Cross-platform graphics, audio and input library. | A build dependency of TIC-80 |
| mingw-w64 | GCC cross-compiler targeting Windows. | Windows builds from the Linux CI image (Bevy's x86_64-pc-windows-gnu) |
| osxcross | Cross-compilation toolchain for macOS targets. | The planned route to mac binaries for Bevy and Ebitengine |
| ACME | 6502 cross-assembler. | Assembling every C64 project into a .prg |
VICE (x64sc) |
The Commodore 64 emulator. | Running C64 builds locally, and the emulator behind Batocera's c64 system |
| fswatch | Filesystem change watcher. | The make watch target in every engine's Makefile |
| jq | Command-line JSON processor. | Reading metadata.json in pipelines |
| curl | HTTP client. | Downloading runtimes and HTML shells, and every upload/publish call |
| zip / unzip | Archive packaging. | Building the versioned release ZIPs |
| sed / awk | Stream and text processing. | Patching web players, extracting versions, splitting TIC-80 asset sections |
mksquashfs / readelf |
SquashFS packer and ELF inspector. | Rebuilding the fused LÖVE AppImage without executing it on an Alpine builder |
| Homebrew | macOS package manager. | make deps installs acme and vice with it |
| Visual Studio Code | Editor whose tasks.json we ship per engine. |
Cmd+Shift+B runs the default build task in every tools repository |
| jsDelivr | Public CDN for npm packages. | Where the pinned phaser.min.js is fetched at build time |
adb |
Android Debug Bridge. | Pushing an exported RetroArch tree onto a phone |
codesign / Gatekeeper |
Apple's signing tool and its runtime policy. | Ad-hoc signing the Godot and WarpEngine Client macOS bundles |
sips / ImageMagick / FFmpeg |
Image and media converters, first one found. | Re-encoding catalog box art to the PNG RetroArch insists on |
tea |
The Gitea command-line client. | Creating releases and replacing their attachments from a workstation |
Steamworks SDK / SteamPipe / steamcmd |
Valve's SDK, content pipeline and CLI. | The Steam publication plan |
| Mermaid | Text-to-diagram syntax rendered in markdown. | The architecture diagrams on Server and elsewhere |
| Tool | What it is | Where it shows up |
|---|---|---|
| LibreSprite | Open-source pixel art editor for sprites and animation; a fork of Aseprite. | Sprite work |
| Pixelorama | Cross-platform pixel art editor: layers, frames, custom brushes. | Sprite and animation work |
| IrfanView | Windows image viewer with batch and merge functions. | Merging images before unifying TIC-80 palettes |
| Pic-2-Tic | Web app that re-maps an image onto a fixed console palette. | Applying the PICO-8 palette to merged backgrounds |
| Unique Tile Finder | Java tool that reduces an image to its unique tiles. | Producing TIC-80 tiles — needs OpenJDK |
| RLE image encoder | Run-length encoder for TIC-80 images. | Compressing TIC-80 images |
| Platform | What it is | How we reach it |
|---|---|---|
| Batocera | Plug-and-play retro gaming Linux distro. | The Batocera store engine installs into its ROM folders |
| EmulationStation | Batocera's front-end, whose library lives in gamelist.xml. |
Our metadata and box art are merged into it, never over the user's own entries |
| RetroArch | Frontend for libretro cores: desktop, Android, Steam Deck, handhelds. | The RetroArch store engine writes .lpl playlists for it |
| libretro cores | The emulator plugins RetroArch loads. | vice_x64_libretro boots our .prg files, tic80_libretro our .tic cartridges |
| Steam | Valve's storefront; entry via Steamworks and the Steam Direct fee. | Planned for the point-and-click title — see the publication plan |
| itch.io | Indie storefront. | Where TIC-80 Pro and Pixelorama are sold |
| Library | What it does |
|---|---|
| Ruby on Rails 8 | The framework behind the Catalog API and the host of WarpEngine. |
| warp_engine | Our mountable engine gem: catalog domain, CI pipeline server, build endpoints, public API. |
| bbs (RuBBS) | Our Telnet BBS gem: Telnet, ANSI, widgets, themes, markdown, CSV persistence. |
| ActiveAdmin | The admin panel (blaze theme) for the catalog, the image library and the file manager. |
| Devise | Authentication for the admin panel. |
| Blueprinter | Serializers shaping the JSON API responses. |
| apipie-rails | REST API documentation, browsable as Swagger UI at /api/swagger. |
| RSpec | The test framework for the API and the engine. |
| RuboCop | Linting, on the rubocop-rails-omakase preset. |
| Artii | FIGlet big-banner rendering inside RuBBS. |
| Library | What it does |
|---|---|
Ebitengine (github.com/hajimehoshi/ebiten/v2) |
The engine itself: rendering, input, game loop. |
Ebiten audio |
Ebitengine's audio package, backing Inkwell's WAV/OGG/MP3 player at 48 kHz. |
Inkwell (git.teletypegames.org/engines/inkwell) |
Our point-and-click adventure framework, consumed as a plain Go module. |
go-steamworks (github.com/Philipp15b/go-steamworks) |
Steamworks SDK bindings: achievements, cloud, overlay, rich presence. |
go:embed |
Standard-library asset embedding; Rabbit Roller's assets live in the binary. |
wasm_exec.js |
The Go runtime helper shipped with every WebAssembly build. |
| Library | What it does |
|---|---|
| Phaser | The framework itself, pinned per project and fetched from a CDN at build time. |
| Vue 3 | The frontend framework of the public site. |
| Vite | Build tool and dev server for that frontend. |
| vue-router | Client-side routing, one router module per page. |
| Pinia | State stores, one per domain (software, events, members, git, blog, howtos, youtube, ui). |
| vue-i18n | Internationalisation of the frontend. |
| Tailwind CSS | Utility-first styling. |
| TuiCSS | Retro terminal look on top of Tailwind. |
| ESLint 9 | Linting on a flat config, for Vue and TypeScript. |
| Electron | Desktop shell of the WarpEngine Client; contextIsolation on, nodeIntegration off. |
| electron-builder | Packages that client as an AppImage, a deb, an NSIS installer and a portable exe. |
| Node.js / npm | Runtime and package manager for the above; Node 22+ to install the client's dependencies. |
| Library | What it does |
|---|---|
| Bevy | The ECS engine, a plain Cargo dependency. |
| wasm-bindgen | JS glue for web builds; crate and CLI must be the same version. |
| Cargo / rustup | The build tool and toolchain manager, including the wasm32-unknown-unknown target. |
| Library | What it does |
|---|---|
| LÖVE | The framework, and the official artifacts our binaries are fused into. |
| love.js | Emscripten LÖVE port; turns a .love into a web build. |
luac |
The Lua compiler, used as a syntax check before packaging. |
| luacheck | Syntax errors and unused variables; gates the TIC-80 pipeline. |
| LDoc | Generates the API documentation packaged with every TIC-80 release. |
| lua-minify-tic80 | Minifies the concatenated source to fit the cartridge. |
| Library | What it does |
|---|---|
| The standard library, and nothing else | A deliberate constraint of warpstore and both store engines: the hosts range from a Batocera box with no pip to a desktop, and neither may be asked to install anything. |
http.server |
The built-in server behind make serve in the Phaser workflow. |
| Library | What it does |
|---|---|
| The Free Pascal RTL | All the status bot needs: schedule loop and Discord API calls in one binary. |