A stupid game for learning about containers, capabilities, and syscalls.

Clone this repo:


  1. fb18907 update questions by Jess Frazelle · 5 weeks ago master
  2. 79eaf16 pid limit by Jess Frazelle · 4 months ago
  3. 20474fe change to alpine by Jess Frazelle · 4 months ago
  4. 4d021b4 Migrate from term.js to xterm.js (#13) by Andrew Donnellan · 5 months ago
  5. 3d1d8cf Dockerfile.dev: install clean-css-cli instead of clean-css (#12) by Andrew Donnellan · 6 months ago


A stupid game for learning about capabilities and syscalls, WIP.

Travis CI

To add a question edit this file: static/js/questions.js.

Run contained.af locally

Contained is made of a few components:

  • A static HTML and JavaScript frontend in static/
  • A Go web server in the project root
  • An isolated Docker installation, running inside a Docker container (“Docker-in-Docker”).

Prepare the static assets with:

make dev

Start an isolated Docker instance in the background with:

make dind

Build and run the server with:

make run

After a few moments, contained will be available at http://localhost:1234/.