Observable Cafe Playground
An interactive cafe for exploring metric samples, labels, counters, and gauges.
- eth0
- /
- oci://ghcr.io/sagikazarmark/iximiuz-labs/playgrounds/observable-cafe:17ad73a0b706
This playground runs Observable Cafe, an interactive example for exploring how applications expose metrics.
The cafe and its /metrics endpoint are already running as a systemd service.
System Components
| Component | Port | Purpose |
|---|---|---|
| Observable Cafe | 8080 | Serves the interactive cafe and its Prometheus metrics |
| Caddy | 8081 | Cafe Admin tab: redirects to /admin and proxies the cafe |
Getting Started
Open the Cafe tab and work through the three stages:
| Stage | What it shows |
|---|---|
/samples | Observations capture samples, not everything that happens between them |
/labels | Labels split one measurement into related time series |
/types | Counters accumulate while gauges can rise and fall |
The cafe starts its accelerated clock when you open a stage. Sell a few drinks, wait for the next observation, and compare the notebook with the live metrics.
Inspecting Metrics
Read the same scrape endpoint that a Prometheus-compatible collector would use:
curl http://localhost:8080/metrics
The endpoint exposes these metrics:
cafe_coffees_sold_total{drink="..."}
cafe_inside_temperature_celsius
cafe_outside_temperature_celsius
Checking the Service
Check the service status:
systemctl status observable-cafe
Follow its logs:
journalctl -u observable-cafe -f
Learn More
Happy learning! 🚀
A real VM, not a container
Get root on a VM with its own kernel, so Docker, Kubernetes, and systemd just work.
Read the docs →
SSH from browser or CLI
Use the built-in web terminal, or connect with labctl ssh, plain ssh, scp, or rsync.
Read the docs →
Drive it with AI
Let Claude, Codex, or any MCP client start this playground and run commands in it.
Read the docs →
Expose HTTP(S) ports
Give any web app running inside the VM a public URL - for yourself or to share with others.
Read the docs →
Share terminals
Invite others into your terminal session, or open it yourself from another device.
Read the docs →
Customize with init scripts
Add shell scripts that run at boot to install packages, clone repos, or seed test data.
Read the docs →
Private networking
VMs reach the internet via NAT with no public IP; several VMs share bridge networks.
Read the docs →
Ephemeral or persistent
By default, VMs are destroyed when the session ends; enable persistence to keep the disks for next time.
Read the docs →
Built-in container registry
A private registry.iximiuz.com for every playground to share images across services and VMs.
Read the docs →