# Room - Runtime Environment Configuration A **Room** defines connection details for a managed environment (hosts, ports, domains, credentials). ## Usage Rooms are used in composed types: - `Pulse = Vein + Room + Depot` (artery) - `Desk = Cabinet + Room + Depots` (station) ## Structure ``` artery/room/ ├── __init__.py # Room model (Pydantic) ├── ctrl/ # Base ctrl script templates │ ├── start.sh # Start services │ ├── stop.sh # Stop services │ ├── status.sh # Show status │ ├── logs.sh # View logs │ └── build.sh # Build images └── README.md ``` ## Room Data Room instances are stored in `data/rooms.json`: ```json { "items": [ { "name": "soleprint-local", "slug": "soleprint-local", "title": "Soleprint Local", "status": "dev", "config_path": "mainroom/soleprint" } ] } ``` ## ctrl/ Templates The scripts in `ctrl/` are templates for room management. Copy them to your room's `ctrl/` folder and customize. All scripts: - Auto-detect services (directories with `docker-compose.yml`) - Support targeting specific services: `./start.sh myservice` - Load `.env` from the room root ### Usage ```bash # Start ./ctrl/start.sh # All services (foreground) ./ctrl/start.sh -d # Detached ./ctrl/start.sh --build # With rebuild # Stop ./ctrl/stop.sh # All services ./ctrl/stop.sh myservice # Specific service # Status ./ctrl/status.sh # Logs ./ctrl/logs.sh # All ./ctrl/logs.sh -f # Follow ./ctrl/logs.sh myservice # Specific service # Build ./ctrl/build.sh # All ./ctrl/build.sh --no-cache # Force rebuild ``` ## CI/CD For production deployments, use Woodpecker CI/CD instead of manual ctrl scripts.