The lab runs as a Docker stack where all user traffic enters through Nginx (ports 80/443), which terminates SSL via Certbot-managed certificates and reverse-proxies requests to three internal services:
Grafana (port 3000) for dashboard visualization, code-server (port 8080) for browser-based development, and QuestDB (ports 9000, 9009, 8812, 9003) as the central time-series database.
Claude Code runs as an AI agent inside code-server, acting as the autonomous layer of the system — it queries and writes data directly to QuestDB, creates and updates Grafana dashboards, and executes code in response to user tasks.
QuestDB is the data hub: Grafana queries it for visualization while code-server ingests data into it programmatically. All data is persisted to a RAID10 array for redundancy, with rsnapshot handling backup and recovery.
The result is a tightly integrated, single-user research environment where the AI agent can operate across the full stack — storage, computation, and visualization — under user direction.