fork of guillaumearm/cc-libs github repo
Go to file
2026-06-09 03:26:21 +02:00
.plans feat(ai): call opencode serve directly 2026-06-08 22:57:18 +02:00
apis fix(ai): use shell set for opencode settings 2026-06-09 03:25:55 +02:00
docs fix(ai): use shell set for opencode settings 2026-06-09 03:25:55 +02:00
packages feat(ai): package hello world client 2026-06-09 00:10:10 +02:00
programs feat(ccpm): install trapos from package cache 2026-06-09 00:09:58 +02:00
servers chore: remove cube and goo programs 2026-06-07 19:45:00 +02:00
startup fix(startup): shut down after server exit 2026-06-09 03:26:21 +02:00
tests fix(startup): shut down after server exit 2026-06-09 03:26:21 +02:00
.env.test chore(dev): generate local env file 2026-06-08 21:37:40 +02:00
.gitignore chore(dev): split CraftOS launch recipes 2026-06-09 01:44:11 +02:00
.luacheckrc feat: add goo v1 2026-05-31 01:37:19 +02:00
CLAUDE.md docs(adr): require markdown links for cross-references 2026-06-09 02:35:25 +02:00
DEVELOPMENT.md chore(dev): validate markdown links 2026-06-09 02:34:40 +02:00
install-ccpm.lua fix(ccpm): keep bootstrap command runnable 2026-06-09 00:58:01 +02:00
Justfile chore(dev): validate markdown links 2026-06-09 02:34:40 +02:00
lychee.toml chore(dev): validate markdown links 2026-06-09 02:34:40 +02:00
manifest.json feat(ccpm): install trapos from package cache 2026-06-09 00:09:58 +02:00
README.md docs(dev): update local installation guidance 2026-06-09 02:06:51 +02:00

TrapOS

A small in-game operating system for ComputerCraft / CC:Tweaked, built around a single-threaded event loop and a routed networking layer.

Installation

Install ccpm first. This is the only step that needs wget with a URL:

wget run https://raw.githubusercontent.com/guillaumearm/cc-libs/master/install-ccpm.lua

Then sync the default registry (guillaumearm/cc-libs) and install TrapOS:

ccpm update
ccpm install trapos

Install individual packages instead if you want to cherry-pick:

> ccpm install tos-net
> ccpm install tos-ui

Install ccpm from the beta branch (one-time opt-in, asks for confirmation):

wget run https://raw.githubusercontent.com/guillaumearm/cc-libs/next/install-ccpm.lua --beta

Once ccpm is installed from beta, the default registry tracks next; ccpm update and ccpm upgrade keep using that branch.

After install, every boot shows a colored MOTD with the installed version and branch (lime for stable, orange + [BETA] for beta).

Packages

TrapOS is split into packages, each described by a packages/<name>/ccpm.json:

  • tos-core: the package manager (ccpm), event loop, upgrade, events.
  • tos-test: the test framework (libtest) and suite runner (runtest).
  • tos-boot: the startup MOTD and autostart server launcher.
  • tos-net: routed modem networking (net, router, ping, ping-server).
  • tos-ui: the terminal UI toolkit (libtui, tuidemo).
  • trapos: full TrapOS meta-package (tos-boot, tos-net, tos-ui, and tos-test during beta).

The trapos meta-package is the user-facing full install. Package descriptors list files and autostart servers; installed state is tracked under /trapos.

ccpm

ccpm is the TrapOS package manager. install-ccpm.lua installs it by installing the required tos-core package and configures the default registry (guillaumearm/cc-libs).

ccpm install <package>     ccpm reinstall <package>   ccpm uninstall <package>
ccpm update                ccpm upgrade
ccpm ls                    ccpm available [term]      ccpm search [term]
ccpm info <package>
ccpm registry ls           ccpm registry add <name> [--branch <b>] [--type github|http]
ccpm registry rm <name>

ccpm update fetches registry package indexes into /trapos/ccpm.cache.json. ccpm available lists cached packages and marks installed packages as up-to-date or updatable. ccpm upgrade upgrades installed packages based on that cache.

Registries default to GitHub (owner/repo); http/https base URLs are also supported. State lives in /trapos/ccpm.json (registries), /trapos/ccpm.lock.json (installed packages), and /trapos/ccpm.cache.json (available packages). See ADR-0010.

APIs

  • /apis/eventloop: a simple event loop API.
  • /apis/net: an API to simplify sending and receiving routed messages, based on the eventloop library.

Servers

Servers listed in manifest.autostart are launched at boot by startup/servers.lua.

  • /servers/ping-server: allows a machine to respond to a ping command.

Programs

  • router: routes messages. You need to set up a router to use all apis/net-based programs and libraries.
  • ping: pings machines using apis/net.
  • events: emits and logs computer events.
  • upgrade: alias for ccpm upgrade.

Development

See DEVELOPMENT.md for local development installation.