# 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.
