CleanRoom is a GTK4 desktop application for managing systemd-nspawn containers without dropping down to raw shell commands for every task.
It is aimed at developers, tinkerers, and security-minded Linux users who want lightweight isolated environments for testing packages, reproducing issues, or experimenting without polluting the host system.
The screenshots below use a demo machines directory and do not run privileged commands.
- Create new container directories under
/var/lib/machines - Bootstrap Arch or Debian-based roots with
pacstrapordebootstrap - Launch an interactive shell inside a selected container
- Delete containers with confirmation
- Show whether a container looks ready or still empty
- Preview privileged bootstrap and launch commands before they run
- Optionally generate AI-assisted setup plans for a container goal
pythonpython-gobjectgtk4libadwaitasystemd-container
arch-install-scriptsforpacstrapdebootstrapfor Debian-based roots
CleanRoom currently looks for one of:
konsolekittyalacrittygnome-terminal
Distribution-specific setup notes are available in docs/distro-workflows.md. The project threat model is documented in docs/threat-model.md.
python3 cleanroom.pychmod +x install.sh
./install.shAvailable installer commands:
./install.sh install
./install.sh uninstall
./install.sh reinstall
./install.sh --helpThe repository includes a PKGBUILD for packaging on Arch-based systems.
- Create a new container entry.
- Bootstrap it with a base distribution.
- Launch a terminal inside the container.
- Delete the container when you are done with it.
- CleanRoom shells out to
sudofor privileged operations. - Containers live in
/var/lib/machinesby default. - This project is intentionally small and focused on the most common
systemd-nspawnworkflows.
CleanRoom is designed to keep privileged actions explicit and reviewable:
- container names are validated before filesystem paths are built
- command-building helpers are covered by unit tests
- bootstrap and launch commands are previewed before opening a terminal workflow
- destructive deletion requires confirmation
- the optional AI assistant is advisory only and cannot execute privileged actions
See SECURITY.md for supported security reporting and threat-model details.
CleanRoom includes an optional AI assistant that can suggest a container setup plan from a high-level goal.
It is advisory only:
- it does not create, bootstrap, or delete containers automatically
- it returns suggested distro, packages, commands, validation steps, and security notes
- all actions still require explicit user approval in the normal UI
Configure it with environment variables before launching the app:
export CLEANROOM_AI_API_KEY=your_api_key
export CLEANROOM_AI_MODEL=gpt-5-mini
python3 cleanroom.pyOptional variables:
CLEANROOM_AI_BASE_URLOPENAI_ORGANIZATIONOPENAI_PROJECT
Bug reports, packaging fixes, and UI improvements are welcome. See CONTRIBUTING.md for contribution guidelines. Maintainer responsibilities are documented in MAINTAINERS.md.
Useful local checks:
pytest
python3 -m py_compile cleanroom.py cleanroom_core.py
ruff check .See docs/testing.md and docs/release-checklist.md for the full maintainer workflow.
CleanRoom is released under the MIT License.



