Cage is a Wayland kiosk compositor written in C. It launches a single full-screen application, managing inputs, outputs, and window decorations. The architecture is a monolithic compositor built on wlroots 0.20, with separate modules for seat management, output handling, view management, and shell protocol support (XDG shell and XWayland). The main entry point is `cage.c`, which initializes the Wayland display, backend, renderer, and protocol managers, then spawns the given application as a child process. The compositor runs a single application full-screen, supporting multiple monitors (extend or last mode), idle inhibition, virtual keyboard/pointer, and foreign toplevel management. It is a well-structured, professional-quality C codebase with clear separation of concerns, consistent error handling, and proper resource cleanup. The code is directly derived from the wlroots tinywl example and has been matured into a robust kiosk solution.