---
title: Technologies
url: 'https://wiki.teletypegames.org/technologies'
markdown: 'https://wiki.teletypegames.org/technologies.md'
lang: en
date: '2026-08-19'
description: '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. Languages Language What it is …'
taxonomy:
  tag:
    - reference
---

# Technologies

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

# Languages

| Language | What it is | Where we use it | Licence |
|---|---|---|---|
| **Go** | Statically typed systems language; cross-compiler and WebAssembly target in the standard toolchain. | [Ebitengine](https://wiki.teletypegames.org/platforms/ebitengine) games, [Inkwell](https://wiki.teletypegames.org/engines/inkwell), the [Updater bot](https://wiki.teletypegames.org/services/updater), the wiki fetcher and Countdowner | BSD-3-Clause |
| **Ruby** | Dynamic, object-oriented scripting language. | The Catalog API, [WarpEngine](https://wiki.teletypegames.org/engines/warp-engine) and the [RuBBS](https://wiki.teletypegames.org/engines/rubbs) gem | Ruby / BSD-2-Clause |
| **Python 3** | Scripting language present on practically every host. | Every [store engine](https://wiki.teletypegames.org/engines/warpstore) — standard library only, because a Batocera box has `python3` and no `pip` | PSF-2.0 |
| **Rust** | Memory-safe systems language, built around Cargo crates. | [Bevy](https://wiki.teletypegames.org/platforms/bevy) games | MIT / Apache-2.0 |
| **Lua** | Small embeddable scripting language. | [TIC-80](https://wiki.teletypegames.org/platforms/tic80) cartridges and [LÖVE](https://wiki.teletypegames.org/platforms/love) games | MIT |
| **JavaScript** | The language of the browser. | [Phaser](https://wiki.teletypegames.org/platforms/phaser) games and the renderer of the [WarpEngine Client](https://wiki.teletypegames.org/stores/warp-engine-client) | ECMA-262 standard; V8 BSD-3-Clause |
| **TypeScript** | JavaScript with static types, compiled before it ships. | The public site's frontend and the [WarpEngine Client](https://wiki.teletypegames.org/stores/warp-engine-client) | Apache-2.0 |
| **GDScript** | Godot's own Python-flavoured scripting language. | [Godot](https://wiki.teletypegames.org/platforms/godot) projects | MIT (Godot) |
| **C#** | Godot's second first-class scripting option. | Available in [Godot](https://wiki.teletypegames.org/platforms/godot) | ECMA-334 standard; .NET MIT |
| **6502 assembly** | Machine language of the C64's MOS 6510 and the Plus/4's 7501/8501. | [Blessing of Ra](https://wiki.teletypegames.org/projects/blessingofra), [Rabbit Scooter — C64](https://wiki.teletypegames.org/projects/rabbitc64), the [C64 Demo](https://wiki.teletypegames.org/projects/c64-demo), the [Plus/4 demo](https://wiki.teletypegames.org/platforms/plus4) | — (instruction set) |
| **Free Pascal** | Compiled Pascal; small self-contained binaries. | The [Discord thread scheduler](https://wiki.teletypegames.org/services/statusbot) | GPL-2.0+ (compiler), LGPL-2.1+ with linking exception (RTL) |
| **C / C++** | Compiled systems languages: C++ for our 16-bit DOS programs, C for the fantasy console. | [DOSINST](https://wiki.teletypegames.org/dos/dosinst) and [GMENU](https://wiki.teletypegames.org/dos/gmenu), built with Open Watcom for DOS (DOSINST also for Win32); building the TIC-80 Pro binary from source in the [builder image](https://wiki.teletypegames.org/platforms/tic80) | ISO standard; Open Watcom Sybase Open Watcom Public License 1.0, GCC GPL-3.0+, Clang Apache-2.0 |
| **Java** | Cross-platform, JVM-hosted language. | Running the Unique Tile Finder jar when [producing TIC-80 tiles](https://wiki.teletypegames.org/projects/impostor/howto/producing-tic80-tiles) | GPL-2.0 with Classpath Exception (OpenJDK) |
| **PHP** | Server-side scripting language. | Grav CMS, which serves this [wiki](https://wiki.teletypegames.org/services/wiki-site) | PHP-3.01 (BSD-3-Clause from PHP 8.4) |
| **POSIX `sh`** | Lowest common denominator shell, so a curl-piped installer runs where `/bin/sh` is dash. | Every store installer and uninstaller | POSIX standard; dash BSD-3-Clause, bash GPL-3.0+ |
| **ERB** | Ruby's embedded templating syntax. | WarpEngine's per-platform [CI pipeline templates](https://wiki.teletypegames.org/engines/warp-engine) and RuBBS screen templates | Ruby / BSD-2-Clause |
| **Twig** | PHP templating language used by Grav. | The wiki theme and its [JSON API endpoints](https://wiki.teletypegames.org/services/wiki-site) | BSD-3-Clause |

---

# Game engines, frameworks and platforms

| Technology | What it is | Notes | Licence |
|---|---|---|---|
| **[Ebitengine](https://wiki.teletypegames.org/platforms/ebitengine)** | 2D game engine for Go; desktop and WebAssembly from one code base. | Powers [Rabbit Roller](https://wiki.teletypegames.org/projects/rabbitroller) | Apache-2.0 |
| **[Bevy](https://wiki.teletypegames.org/platforms/bevy)** | Data-driven ECS engine in Rust, no visual editor — projects are Cargo crates. | First-class WASM support | MIT / Apache-2.0 |
| **[Godot](https://wiki.teletypegames.org/platforms/godot)** | Open-source 2D/3D engine with a visual editor and headless export. | Exports web plus Windows, Linux and a universal macOS build | MIT |
| **[LÖVE (Love2D)](https://wiki.teletypegames.org/platforms/love)** | Lightweight Lua framework for 2D games, packaged as a `.love` archive. | Web builds via `love.js` | zlib |
| **[Phaser](https://wiki.teletypegames.org/platforms/phaser)** | HTML5 2D framework: WebGL/Canvas, physics, tweens, particles. | Needs no compilation — the simplest of our pipelines | MIT |
| **[TIC-80](https://wiki.teletypegames.org/platforms/tic80)** | 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 | MIT; the Pro binary is a paid product |
| **[Commodore 64](https://wiki.teletypegames.org/platforms/c64)** | The 8-bit home computer, targeted in assembly as a `.prg`. | PAL, raster-polled, no interrupts | — (hardware) |
| **[Commodore Plus/4](https://wiki.teletypegames.org/platforms/plus4)** | The 264-series sibling: same 6502 core, TED instead of VIC-II and SID, `.prg` from `$1001`. | Same ACME toolchain as the C64, `xplus4` emulator | — (hardware) |
| **[Inkwell](https://wiki.teletypegames.org/engines/inkwell)** | Our point-and-click framework for Go, a DSL layer over Ebitengine. | Implements the SCUMM-era skeleton | MIT |

---

# In-house engines, services and tools

| Project | Language | What it does | Licence |
|---|---|---|---|
| **[WarpEngine](https://wiki.teletypegames.org/engines/warp-engine)** | Ruby | Mountable Rails engine: retro software catalog, CI pipelines, build endpoints, public JSON API. | MIT |
| **[RuBBS](https://wiki.teletypegames.org/engines/rubbs)** | Ruby | Synchronet-style Telnet BBS framework: negotiation, ANSI frame buffer, widgets, themes. | MIT |
| **[Inkwell](https://wiki.teletypegames.org/engines/inkwell)** | Go | Point-and-click framework on Ebitengine; every entity is a struct literal in a manager. | MIT |
| **[warpstore](https://wiki.teletypegames.org/engines/warpstore)** | Python | Shared core of the store engines: catalog, releases, host matching, state, HTTP — one dependency-free file. | MIT |
| **[WarpEngine Batocera Store](https://wiki.teletypegames.org/stores/warp-engine-batocera-store)** | Python | Writes a catalog into a Batocera box's ROM folders and merges `gamelist.xml`. | MIT |
| **[WarpEngine RetroArch Store](https://wiki.teletypegames.org/stores/warp-engine-retroarch-store)** | Python | Renders a catalog as RetroArch `.lpl` playlists with box art, locally or exported. | MIT |
| **[WarpEngine Client](https://wiki.teletypegames.org/stores/warp-engine-client)** | TypeScript | Desktop app showing the catalog as a grid of cards, with the store engine built in. | MIT |
| **[TTG Batocera Store](https://wiki.teletypegames.org/stores/ttg-batocera-store)** / **[TTG RetroArch Store](https://wiki.teletypegames.org/stores/ttg-retroarch-store)** | JSON | Our own store definitions — a `config.json` and two wrapper scripts on top of the engines above. | MIT |
| **[Teletype BBS](https://wiki.teletypegames.org/services/teletype-bbs)** | Ruby | The public Teletype Games BBS on `teletypegames.org:2323`, built on RuBBS. | MIT |
| **[Updater bot](https://wiki.teletypegames.org/services/updater)** | Go | Polls the wiki, Redmine and Gitea, announces new activity on Discord; a cache prevents repeats. | MIT |
| **[Status bot](https://wiki.teletypegames.org/services/statusbot)** | Free Pascal | Creates a weekly Discord thread at a set time and posts the opening message. | MIT |
| **Countdowner** | Go | Countdown timers for deadlines and releases — see [Server](https://wiki.teletypegames.org/infrastructure/server). | Not declared |
| **wiki-fetcher** | Go | Two-way git sync of the live [wiki](https://wiki.teletypegames.org/services/wiki-site): takes pushes in on a Gitea webhook, commits the server's edits, parks conflicts on a branch. | MIT |
| **[backup-scripts](https://wiki.teletypegames.org/infrastructure/backup)** | Make + shell | Dumps databases, mirrors repositories, prunes old dumps, rsyncs off-site. | MIT |
| **[DOSINST](https://wiki.teletypegames.org/dos/dosinst)** | C++ | Installs, updates and removes DOS programs from the read-only FTP store at `ftp.teletypegames.org`; the same source builds `DOSINSTW.EXE` for Windows 95 and later. | GPL-3.0 (because of mTCP) |
| **[GMENU](https://wiki.teletypegames.org/dos/gmenu)** | C++ | Game menu for DOS: lists the game folders with their `METADATA.INI` data, searches, filters, sorts and starts them; `GMEDIT.EXE` edits `METADATA.INI` in a form. NASM assembly up to 1.1.1. | MIT |
| **[BMAGIC](https://wiki.teletypegames.org/dos/bmagic)** | C++ | Boot Magic, a boot menu editor for DOS: maps and edits the boot menu of `CONFIG.SYS` and `AUTOEXEC.BAT` and the startup options of `MSDOS.SYS`, with a diff and a backup before every save. | MIT |

---

# Server and infrastructure software

| Software | What it is | Role here | Licence |
|---|---|---|---|
| **[Nginx](https://nginx.org/)** | HTTP server and reverse proxy. | Entry point for all traffic, SSL termination — see [Server](https://wiki.teletypegames.org/infrastructure/server) | BSD-2-Clause |
| **[Traefik](https://traefik.io/)** | HTTP reverse proxy and load balancer with dynamic routing. | Routes the containerised services by Host header | MIT |
| **[Gitea](https://gitea.io/)** | Self-hosted Git: repositories, code review, issues. | Our forge at `git.teletypegames.org`; also hosts a rubygems package registry | MIT |
| **[Woodpecker CI](https://woodpecker-ci.org/)** | CI/CD engine integrated with Gitea. | Runs every build; its configuration extension fetches the pipeline from WarpEngine | Apache-2.0 |
| **[Grav](https://getgrav.org/)** | Flat-file CMS; content is markdown on disk. | This [wiki](https://wiki.teletypegames.org/services/wiki-site) | MIT |
| **[Redmine](https://www.redmine.org/)** | Project management and issue tracking. | Development tasks, bugs and milestones | GPL-2.0 |
| **[Matomo](https://matomo.org/)** | Privacy-friendly self-hosted analytics. | Traffic across the public sites | GPL-3.0+ |
| **[Uptime Kuma](https://uptime.kuma.pet/)** | Self-hosted uptime monitor with alerts. | Availability of every server-side component | MIT |
| **[Docker](https://www.docker.com/) & Docker Compose** | Container runtime and orchestration. | Every service on the box, and every CI builder image | Apache-2.0 (Engine, Compose); Docker Desktop proprietary |
| **MySQL 8** | Relational database. | The catalog database behind the [Catalog API](https://wiki.teletypegames.org/services/public-site) | GPL-2.0 (Community), commercial dual licence |
| **MariaDB** | MySQL-compatible relational database. | Redmine's database — [backed up](https://wiki.teletypegames.org/infrastructure/backup) with its own dump script | GPL-2.0 |
| **PostgreSQL** | Relational database. | The wiki's database — [backed up](https://wiki.teletypegames.org/infrastructure/backup) with `pg_backup.sh` | PostgreSQL |
| **phpMyAdmin** | Web UI for inspecting and managing MySQL. | Database inspection in the [deployment](https://wiki.teletypegames.org/infrastructure/deployment) stack | GPL-2.0 |
| **Apache** | Web server bundled in the Grav container alongside PHP 8.1. | Serves the wiki inside its container | Apache-2.0 |
| **Telnet** | The 1970s remote terminal protocol, IAC negotiation and all. | How you reach the [BBS](https://wiki.teletypegames.org/services/teletype-bbs) | — (IETF standard, RFC 854) |
| **rsync** | Incremental file synchronisation over SSH. | Off-site mirroring of the [backups](https://wiki.teletypegames.org/infrastructure/backup) | GPL-3.0+ |
| **Discord** | Chat platform with bots and webhooks. | Team [communication](https://wiki.teletypegames.org/team/channels), and the target of both bots | Proprietary service |
| **Google Calendar** | Shared calendar. | Team scheduling — see [Communication](https://wiki.teletypegames.org/team/channels) | Proprietary service |
| **YouTube Data API** | Google's API for channel and video metadata. | The public site's latest-video panel | Proprietary service (Google API ToS) |
| **[pyftpdlib](https://github.com/giampaolo/pyftpdlib)** | FTP server library for Python. | The anonymous, read-only [FTP server](https://wiki.teletypegames.org/infrastructure/ftp-server) at `ftp.teletypegames.org` (the [DOSINST](https://wiki.teletypegames.org/dos/dosinst) store and the [TTGWIKI](https://wiki.teletypegames.org/dos/ttgwiki) export), in a container; DOSINST and TTGWIKI test against it | MIT |
| **[llama.cpp](https://github.com/ggml-org/llama.cpp)** (`llama-server`) with **[Qwen3.5](https://huggingface.co/Qwen)** 0.8B and **[Gemma 3](https://ai.google.dev/gemma)** 270M | Local language-model inference with an OpenAI-compatible HTTP API; small open-weights instruction models from Alibaba and Google. | The shared [model service](https://wiki.teletypegames.org/infrastructure/llm) in router mode, several models behind one address; Qwen3.5 is the Lapis-ACP of SERMO in the [BBS](https://wiki.teletypegames.org/services/teletype-bbs) | MIT; Apache-2.0 (Qwen3.5); Gemma Terms of Use |

---

# Build, CI and developer tooling

| Tool | What it is | Where it shows up | Licence |
|---|---|---|---|
| **GNU Make** | Build automation driven by a `Makefile`. | The common front door of every engine's workflow, the backups and the client | GPL-3.0+ |
| **Git** | Distributed version control. | Everything, including the version fallback when `metadata.json` is absent | GPL-2.0 |
| **Docker builder images** | Per-platform CI images configured server-side in WarpEngine's `ci_platforms`. | `godot-builder`, `tic80pro`, `bevy-builder` (as `bevy-ttg`, with our crates preloaded), `love-builder`, `ebitengine-builder` (as `ebitengine-ttg`, with our Go modules preloaded), `phaser-builder`, `c64-builder`, `plus4-builder`, and `commodore-player` for the C64 / Plus/4 package step, and `ci-tools` for the helper steps | MIT (Dockerfiles); base images per component |
| **[kaniko](https://github.com/GoogleContainerTools/kaniko)** | Container image builder that needs no Docker daemon. | Building our own CI images into the Gitea registry, with no privileged mode and no docker socket (`.woodpecker/ci-images.yaml` in the teletypegames repo) | Apache-2.0 |
| **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 | Free software, mixed per package |
| **[godot-ci](https://github.com/abarichello/godot-ci)** | Headless Godot editor plus matching export templates, in a container. | The base of our `godot-builder` image | MIT |
| **CMake** | Cross-platform build system generator. | Compiling TIC-80 Pro from source | BSD-3-Clause |
| **SDL2** | Cross-platform graphics, audio and input library. | A build dependency of TIC-80; shipped next to yapeSDL in the C64 / Plus/4 native players | zlib |
| **mingw-w64** | GCC cross-compiler targeting Windows. | Windows builds from the Linux CI image (Bevy's `x86_64-pc-windows-gnu`) | Public domain / ZPL-2.1 (runtime, headers); GCC GPL-3.0+ |
| **osxcross** | Cross-compilation toolchain for macOS targets. | The planned route to mac binaries for Bevy and Ebitengine | GPL-2.0 (the Apple SDK under Apple's Xcode licence) |
| **[ACME](https://sourceforge.net/projects/acme-crossass/)** | 6502 cross-assembler. | Assembling every [C64](https://wiki.teletypegames.org/platforms/c64) and [Plus/4](https://wiki.teletypegames.org/platforms/plus4) project into a `.prg` | GPL-2.0+ |
| **[VICE](https://vice-emu.sourceforge.io)** (`x64sc`, `xplus4`) | The Commodore 8-bit emulator family. | Running C64 and Plus/4 builds locally, the emulator behind Batocera's `c64` system, and — as the `vice_x64sc` / `vice_xplus4` libretro cores compiled to WebAssembly — the browser player of every C64 and Plus/4 release | GPL-2.0+ |
| **[yapeSDL](https://github.com/calmopyrin/yapesdl)** | Attila Grósz's SDL2 emulator of the Commodore 264 family, the C64 and the VIC-20; one binary, the machine type comes from its `yape.conf`. | The native player: the `commodore-player` image wraps the upstream Linux, Windows and universal macOS binaries around every C64 and Plus/4 `.prg`, with a launcher that sets the machine type and autostarts the program | GPL-2.0+ |
| **[EmulatorJS](https://emulatorjs.org)** | Browser front-end for libretro cores compiled to WebAssembly. | The "Play in browser" page of C64 and Plus/4 releases; loader, minified runtime and the VICE core are self-hosted in the release's own `/file/` folder, nothing comes from its CDN | GPL-3.0 |
| **fswatch** | Filesystem change watcher. | The `make watch` target in every engine's Makefile | GPL-3.0+ |
| **jq** | Command-line JSON processor. | Reading `metadata.json` in pipelines | MIT |
| **curl** | HTTP client. | Downloading runtimes and HTML shells, and every upload/publish call | curl (MIT-style) |
| **zip / unzip** | Archive packaging. | Building the versioned release ZIPs | Info-ZIP |
| **sed / awk** | Stream and text processing. | Patching web players, extracting versions, splitting TIC-80 asset sections | GPL-3.0+ (GNU); BSD awk MIT-style |
| **`mksquashfs` / `readelf`** | SquashFS packer and ELF inspector. | Rebuilding the fused LÖVE AppImage without executing it on an Alpine builder | GPL-2.0+ / GPL-3.0+ |
| **Homebrew** | macOS package manager. | `make deps` installs `acme` and `vice` with it | BSD-2-Clause |
| **Visual Studio Code** | Editor whose `tasks.json` we ship per engine. | `Cmd+Shift+B` runs the default build task in every tools repository | MIT (Code - OSS source); proprietary binaries |
| **[jsDelivr](https://www.jsdelivr.com/)** | Public CDN for npm packages. | Where the pinned `phaser.min.js` is fetched at build time | Free service |
| **`adb`** | Android Debug Bridge. | Pushing an exported RetroArch tree onto a phone | Apache-2.0 |
| **`codesign` / Gatekeeper** | Apple's signing tool and its runtime policy. | Ad-hoc signing the Godot and WarpEngine Client macOS bundles | Proprietary (macOS) |
| **`sips` / ImageMagick / FFmpeg** | Image and media converters, first one found. | Re-encoding catalog box art to the PNG RetroArch insists on | Proprietary (sips) / ImageMagick / LGPL-2.1+ or GPL-2.0+ (FFmpeg) |
| **[`tea`](https://gitea.com/gitea/tea)** | The Gitea command-line client. | Creating releases and replacing their attachments from a workstation | MIT |
| **[Steamworks SDK](https://partner.steamgames.com/)** / **SteamPipe** / **`steamcmd`** | Valve's SDK, content pipeline and CLI. | The [Steam publication plan](https://wiki.teletypegames.org/platforms/ebitengine/steam-publication-plan) | Proprietary (Steamworks SDK Access Agreement) |
| **[Mermaid](https://mermaid.js.org/)** | Text-to-diagram syntax rendered in markdown. | The architecture diagrams on [Server](https://wiki.teletypegames.org/infrastructure/server) and elsewhere | MIT |
| **[Open Watcom v2](https://github.com/open-watcom/open-watcom-v2)** | C/C++ compiler and linker for 16-bit DOS and Win32; the snapshot release has macOS and Linux binaries. | Builds [DOSINST](https://wiki.teletypegames.org/dos/dosinst) (DOS and Win32) and [GMENU](https://wiki.teletypegames.org/dos/gmenu); their pipelines install a pinned snapshot | Sybase Open Watcom Public License 1.0 |
| **DOSBox / [DOSBox Staging](https://www.dosbox-staging.org/)** | DOS emulators. | Running the DOS programs locally, and headless in CI: GMENU's screen tests (Debian's DOSBox 0.74) and DOSINST's end-to-end tests (DOSBox Staging, with its NE2000 network emulation) | GPL-2.0+ |
| **[Wine](https://www.winehq.org/)** | Runs Windows programs on Linux. | The tests of `DOSINSTW.EXE` in the DOSINST pipeline | LGPL-2.1+ |

---

# Content creation tools

| Tool | What it is | Where it shows up | Licence |
|---|---|---|---|
| **[LibreSprite](https://wiki.teletypegames.org/development/libresprite)** | Open-source pixel art editor for sprites and animation; a fork of Aseprite. | Sprite work | GPL-2.0 |
| **[Pixelorama](https://wiki.teletypegames.org/development/pixelorama)** | Cross-platform pixel art editor: layers, frames, custom brushes. | Sprite and animation work | MIT |
| **[IrfanView](https://www.irfanview.com/)** | Windows image viewer with batch and merge functions. | Merging images before [unifying TIC-80 palettes](https://wiki.teletypegames.org/projects/impostor/howto/merging-tic80-palettes) | Freeware, free for non-commercial use |
| **[Pic-2-Tic](https://archaicvirus.github.io/Pic-2-Tic/)** | Web app that re-maps an image onto a fixed console palette. | Applying the PICO-8 palette to merged backgrounds | MIT |
| **[Unique Tile Finder](https://mrlevrocks.itch.io/utf)** | Java tool that reduces an image to its unique tiles. | [Producing TIC-80 tiles](https://wiki.teletypegames.org/projects/impostor/howto/producing-tic80-tiles) — needs OpenJDK | Name your own price on itch.io; no licence stated |
| **[RLE image encoder](https://cxong.github.io/tic-80-examples/rle-image)** | Run-length encoder for TIC-80 images. | [Compressing TIC-80 images](https://wiki.teletypegames.org/projects/impostor/howto/rle-encoding-png2tic80) | MIT |

---

# Distribution platforms and retro hosts

| Platform | What it is | How we reach it | Licence |
|---|---|---|---|
| **[Batocera](https://batocera.org)** | Plug-and-play retro gaming Linux distro. | The [Batocera store engine](https://wiki.teletypegames.org/stores/warp-engine-batocera-store) installs into its ROM folders | GPL-2.0+ (Buildroot-based); bundled emulators per component |
| **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 | MIT |
| **[RetroArch](https://www.retroarch.com)** | Frontend for libretro cores: desktop, Android, Steam Deck, handhelds. | The [RetroArch store engine](https://wiki.teletypegames.org/stores/warp-engine-retroarch-store) writes `.lpl` playlists for it | GPL-3.0 |
| **libretro cores** | The emulator plugins RetroArch loads. | `vice_x64_libretro` boots our `.prg` files, `tic80_libretro` our `.tic` cartridges; the WebAssembly builds of `vice_x64sc` and `vice_xplus4` run inside EmulatorJS on the public site | Per core: VICE GPL-2.0+, TIC-80 MIT |
| **[Steam](https://store.steampowered.com/)** | Valve's storefront; entry via Steamworks and the Steam Direct fee. | Planned for the point-and-click title — see the [publication plan](https://wiki.teletypegames.org/platforms/ebitengine/steam-publication-plan) | Proprietary service |
| **[itch.io](https://itch.io)** | Indie storefront. | Where TIC-80 Pro and Pixelorama are sold | Proprietary service |
| **MS-DOS** (and DOS on Windows 9x) | The 16-bit PC operating system, on real machines or in DOSBox. | [DOSINST](https://wiki.teletypegames.org/dos/dosinst) installs programs from our FTP store, [GMENU](https://wiki.teletypegames.org/dos/gmenu) is the game menu on top | Proprietary (MS-DOS); FreeDOS GPL-2.0+ |

---

# Libraries by language

## Ruby

| Library | What it does | Licence |
|---|---|---|
| **Ruby on Rails 8** | The framework behind the [Catalog API](https://wiki.teletypegames.org/services/public-site) and the host of [WarpEngine](https://wiki.teletypegames.org/engines/warp-engine). | MIT |
| **[warp\_engine](https://wiki.teletypegames.org/engines/warp-engine)** | Our mountable engine gem: catalog domain, CI pipeline server, build endpoints, public API. | MIT |
| **[bbs (RuBBS)](https://wiki.teletypegames.org/engines/rubbs)** | Our Telnet BBS gem: Telnet, ANSI, widgets, themes, markdown, CSV persistence. | MIT |
| **ActiveAdmin** | The admin panel (blaze theme) for the catalog, the image library and the file manager. | MIT |
| **Devise** | Authentication for the admin panel. | MIT |
| **Blueprinter** | Serializers shaping the JSON API responses. | MIT |
| **apipie-rails** | REST API documentation, browsable as Swagger UI at `/api/swagger`. | Apache-2.0 |
| **RSpec** | The test framework for the API and the engine. | MIT |
| **RuboCop** | Linting, on the `rubocop-rails-omakase` preset. | MIT |
| **Artii** | FIGlet big-banner rendering inside RuBBS. | MIT |

## Go

| Library | What it does | Licence |
|---|---|---|
| **[Ebitengine](https://wiki.teletypegames.org/platforms/ebitengine)** (`github.com/hajimehoshi/ebiten/v2`) | The engine itself: rendering, input, game loop. | Apache-2.0 |
| **Ebiten `audio`** | Ebitengine's audio package, backing [Inkwell](https://wiki.teletypegames.org/engines/inkwell)'s WAV/OGG/MP3 player at 48 kHz. | Apache-2.0 |
| **[Inkwell](https://wiki.teletypegames.org/engines/inkwell)** (`git.teletypegames.org/engines/inkwell`) | Our point-and-click adventure framework, consumed as a plain Go module. | MIT |
| **go-steamworks** (`github.com/Philipp15b/go-steamworks`) | Steamworks SDK bindings: achievements, cloud, overlay, rich presence. | Apache-2.0 |
| **`go:embed`** | Standard-library asset embedding; [Rabbit Roller](https://wiki.teletypegames.org/projects/rabbitroller)'s assets live in the binary. | BSD-3-Clause |
| **`wasm_exec.js`** | The Go runtime helper shipped with every WebAssembly build. | BSD-3-Clause |

## JavaScript and TypeScript

| Library | What it does | Licence |
|---|---|---|
| **[Phaser](https://wiki.teletypegames.org/platforms/phaser)** | The framework itself, pinned per project and fetched from a CDN at build time. | MIT |
| **Vue 3** | The frontend framework of the [public site](https://wiki.teletypegames.org/services/public-site). | MIT |
| **Vite** | Build tool and dev server for that frontend. | MIT |
| **vue-router** | Client-side routing, one router module per page. | MIT |
| **Pinia** | State stores, one per domain (software, events, members, git, blog, howtos, youtube, ui). | MIT |
| **vue-i18n** | Internationalisation of the frontend. | MIT |
| **Tailwind CSS** | Utility-first styling. | MIT |
| **TuiCSS** | Retro terminal look on top of Tailwind. | MIT |
| **ESLint 9** | Linting on a flat config, for Vue and TypeScript. | MIT |
| **Electron** | Desktop shell of the [WarpEngine Client](https://wiki.teletypegames.org/stores/warp-engine-client); `contextIsolation` on, `nodeIntegration` off. | MIT |
| **electron-builder** | Packages that client as an AppImage, a deb, an NSIS installer and a portable exe. | MIT |
| **Node.js / npm** | Runtime and package manager for the above; Node 22+ to install the client's dependencies. | MIT (Node.js), Artistic-2.0 (npm) |

## Rust

| Library | What it does | Licence |
|---|---|---|
| **[Bevy](https://wiki.teletypegames.org/platforms/bevy)** | The ECS engine, a plain Cargo dependency. | MIT / Apache-2.0 |
| **wasm-bindgen** | JS glue for web builds; crate and CLI must be the same version. | MIT / Apache-2.0 |
| **Cargo / rustup** | The build tool and toolchain manager, including the `wasm32-unknown-unknown` target. | MIT / Apache-2.0 |

## Lua

| Library | What it does | Licence |
|---|---|---|
| **[LÖVE](https://wiki.teletypegames.org/platforms/love)** | The framework, and the official artifacts our binaries are fused into. | zlib |
| **love.js** | Emscripten LÖVE port; turns a `.love` into a web build. | MIT |
| **`luac`** | The Lua compiler, used as a syntax check before packaging. | MIT |
| **luacheck** | Syntax errors and unused variables; gates the [TIC-80](https://wiki.teletypegames.org/platforms/tic80) pipeline. | MIT |
| **LDoc** | Generates the API documentation packaged with every TIC-80 release. | MIT |
| **lua-minify-tic80** | Minifies the concatenated source to fit the cartridge. | MIT |

## Python

| Library | What it does | Licence |
|---|---|---|
| **The standard library, and nothing else** | A deliberate constraint of [warpstore](https://wiki.teletypegames.org/engines/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. | PSF-2.0 |
| **`http.server`** | The built-in server behind `make serve` in the [Phaser](https://wiki.teletypegames.org/platforms/phaser) workflow. | PSF-2.0 |
| **[pyftpdlib](https://github.com/giampaolo/pyftpdlib)** | The [FTP server](https://wiki.teletypegames.org/infrastructure/ftp-server) of the [DOSINST](https://wiki.teletypegames.org/dos/dosinst) store and the [TTGWIKI](https://wiki.teletypegames.org/dos/ttgwiki) export, and the FTP server of their tests — a server-side tool, so the standard-library rule of the store engines does not apply. | MIT |

## C++ (DOS and Win32)

| Library | What it does | Licence |
|---|---|---|
| **[mTCP](http://www.brutman.com/mTCP/)** | Michael B. Brutman's TCP/IP stack for DOS over a packet driver; [DOSINST](https://wiki.teletypegames.org/dos/dosinst)'s FTP client is built on it, vendored in its repository. | GPL-3.0 |
| **Crynwr packet drivers** | The DOS network card drivers mTCP talks to; `NE2000.COM` for DOSBox Staging's emulated card. | GPL-1.0 (version 1 only) |
| **Winsock 1.1** | The sockets of Windows 95 and later: the network of `DOSINSTW.EXE`. | Proprietary (Windows) |
| **The Open Watcom C/C++ runtime** | The C library of [DOSINST](https://wiki.teletypegames.org/dos/dosinst) and [GMENU](https://wiki.teletypegames.org/dos/gmenu): files, DOS directory scans, BIOS keyboard, `int86` calls to the BIOS and the mouse driver. | Sybase Open Watcom Public License 1.0 |

## Free Pascal

| Library | What it does | Licence |
|---|---|---|
| **The Free Pascal RTL** | All the [status bot](https://wiki.teletypegames.org/services/statusbot) needs: schedule loop and Discord API calls in one binary. | LGPL-2.1+ with static linking exception |

'; var prevLevel = 2; for (var i = 0; i < headings.length; i++) { var h = headings\[i\]; var text = h.textContent.trim(); var slug = text.toLowerCase() .replace(/\[áàâä\]/g,'a').replace(/\[éèêë\]/g,'e').replace(/\[íìîï\]/g,'i') .replace(/\[óòôöő\]/g,'o').replace(/\[úùûüű\]/g,'u') .replace(/\[^a-z0-9\]+/g, '-').replace(/^-|-$/g, ''); if (!slug) slug = 'heading-' + i; if (used\[slug\]) { slug += '-' + i; } used\[slug\] = true; h.id = slug; var level = parseInt(h.tagName.charAt(1)); var cls = level > 2 ? ' class="toc-child"' : ''; html += '- [' + text + '](#'%20+%20slug%20+%20')
'; } html += '
'; toc.innerHTML = html; // Scroll-spy: highlight current heading var links = toc.querySelectorAll('a'); var ids = \[\]; for (var j = 0; j < links.length; j++) ids.push(links\[j\].getAttribute('href').slice(1)); function updateActive() { var current = ''; for (var k = 0; k < ids.length; k++) { var el = document.getElementById(ids\[k\]); if (el && el.getBoundingClientRect().top <= 80) current = ids\[k\]; } for (var m = 0; m < links.length; m++) { links\[m\].parentNode.classList.toggle('active', links\[m\].getAttribute('href') === '#' + current); } } window.addEventListener('scroll', updateActive, { passive: true }); updateActive(); })();

---

## Navigation

- Previous: [Csapat](https://wiki.teletypegames.org/team.md)
