Open Source · Free
Turn your old tablet into a homelab monitor
RetroDash streams your Grafana dashboards, K9s, terminals and more to old Android & iOS devices — with authentic CRT aesthetics.
Your old tablets collect dust. Your homelab needs eyes.
Architecture
How it works
Two components, one ecosystem. The server renders, the app displays. Your old device does zero processing.
Your Homelab
Bridge Server
A lightweight Go server that runs on your homelab machine. It uses ChromeDP to render any web dashboard in a headless browser and streams it as MJPEG — the heavy lifting happens here, not on the tablet.
- Go binary, ~15MB, runs anywhere
- Headless Chrome via ChromeDP
- MJPEG streaming (low bandwidth)
- Multi-origin support (Grafana, K9s, web, terminal)
- Remote config via REST API
Your Old Tablet
RetroDash App
A featherweight viewer that receives the MJPEG stream and displays it with authentic CRT effects. No rendering, no WebView, no heavy processing — it just shows the picture.
- React Native 0.83, optimized for older hardware
- 1GB+ RAM recommended
- 3 CRT phosphor themes (amber, green, blue)
- Kiosk mode for wall-mounted displays
- Smart battery protection
Bridge Server
Get the Server
The bridge server runs on your homelab and does all the rendering. One command to start streaming.
Docker (recommended)
Pull & Run
Multi-arch image (AMD64 + ARM64). Works on PCs, Macs, and Raspberry Pi.
# Pull and run
docker run --rm \
--shm-size=256m \
-p 8080:8080 \
ghcr.io/cbenitezpy/retrodash-server:latest
# Open http://<your-ip>:8080 on your tablet
# Configure dashboards from the RetroDash app
- AMD64 (Intel/AMD PCs, Mac Intel)
- ARM64 (Apple Silicon, Raspberry Pi 3/4/5)
- Auto-detects your architecture
- No config needed — set up from the app
Docker Compose
Production Setup
For always-on deployments with auto-restart.
services:
bridge:
image: ghcr.io/cbenitezpy/retrodash-server:latest
ports:
- "8080:8080"
shm_size: '256mb'
restart: unless-stopped
- Auto-restart on failure
- Docker healthcheck included in image
- Crash recovery (auto-restarts Chrome)
Kustomize (recommended)
Deploy to K8s
Clone the repo and apply. Includes liveness/readiness probes, Prometheus metrics, shared memory for Chrome, and PVC for origins persistence.
git clone https://github.com/cbenitezpy/retrodash-server.git
cd retrodash-server
kubectl apply -k deploy/k8s/
# Verify pod is ready
kubectl get pods -n retrodash -w
- Works out of the box in standby mode
- Easy to patch with overlays
- Works with ArgoCD and Flux
Helm
OCI Helm Chart
Install from the OCI Helm registry. Same manifests as Kustomize, with Helm templating for customization.
helm install retrodash-bridge \
oci://ghcr.io/cbenitezpy/charts/retrodash-bridge \
-n retrodash --create-namespace
- Liveness + readiness probes built-in
- Prometheus metrics at
/metrics - PVC for origins.json persistence
API Endpoints
LAN Access
Connect your tablet
Accessing from Your Phone or Tablet
RetroDash streams to devices on your local network. kubectl port-forward only works from localhost — expose the service to your LAN:
- Docker: already accessible at
http://<host-ip>:8080from any LAN device - Kubernetes Ingress: create an Ingress pointing to the service (works with Traefik, nginx, etc.)
- Kubernetes LoadBalancer: use MetalLB or kube-vip to get a LAN IP
- Kubernetes NodePort: access via
http://<node-ip>:<port>
See the Deployment Guide for full examples with Ingress, LoadBalancer, and Helm flags.
Device Support
Compatibility
RetroDash runs on devices most apps have abandoned. If it turns on, it probably works.
| Platform | Min Version | Year | RAM | Status |
|---|---|---|---|---|
| Android | 7.0 Nougat | 2016 | 1GB | ⚠ Basic |
| Android | 8.0 – 15 | 2017+ | 1GB+ | ✓ Full support |
| iOS | 15.1 | 2021 | 2GB | ⚠ Basic |
| iOS | 16.0+ | 2022+ | 2GB+ | ✓ Full support |
Capabilities
Features
Everything you need to repurpose old devices as dedicated homelab displays.
Multi-Origin
Connect to Grafana, Prometheus, K9s, any web URL, or SSH terminals. Switch between them like TV channels.
CRT Themes
Three authentic phosphor themes — amber (P3), green (P1), and blue (P7) — with scanlines, vignette, and glow effects.
Server-Side Rendering
The bridge server does all the heavy lifting with ChromeDP. Your old tablet just displays the stream — zero processing required.
Smart Charging
Built-in battery protection keeps your always-on device between safe charge levels. Prevents swelling and extends battery life.
Kiosk Mode
Lock the device to RetroDash with auto-start on boot, immersive fullscreen, and back button override. Perfect for wall mounts.
Remote Config
Configure origins, quality, and switching via the bridge server's REST API. No need to touch the tablet after initial setup.
Kubernetes-Native
Deploy to any Kubernetes cluster with the official Helm chart or Kustomize manifests. OCI registry, liveness/readiness probes, and PVC included.
Health Probes
Dedicated liveness (/healthz) and readiness (/readyz) endpoints let Kubernetes restart the pod automatically if the browser hangs.
Prometheus Metrics
Custom application metrics and Go runtime stats exposed at /metrics. Scrape directly from Prometheus or Grafana Agent.
Structured Logging
JSON-formatted logs with configurable log level. Works out of the box with Loki, Fluentd, and any log aggregator in your stack.
Multi-Arch Images
Docker images built for AMD64 and ARM64. Runs on x86 servers, Apple Silicon, and Raspberry Pi without any configuration changes.
In Action
Gallery
Real homelab setups running RetroDash on repurposed tablets.
Plans
Simple Pricing
Free forever for basic use. Pro unlocks the full experience.
Free
$0
- 1 origin (dashboard source)
- All 3 CRT themes
- MJPEG streaming
- Basic quality settings
- No multi-origin switching
- No kiosk mode
- No smart charging
Pro
$7.99 one-time
- Unlimited origins
- All 3 CRT themes
- Auto channel switching
- Adaptive quality
- Kiosk mode + auto-boot
- Smart battery protection
- Remote configuration
Resources
Guides & Documentation
Everything you need to get RetroDash running in your homelab.
Quick Start Guide
Set up the bridge server and connect your first device in under 5 minutes.
Configuration
All environment variables, quality tuning, authentication, and DNS resolution.
Origins & Switching
Add Grafana dashboards and terminal commands. Switch between them like TV channels.
API Reference
Full REST API docs: health, stream, touch relay, and origins management.
Deployment Guide
Production setup for Raspberry Pi, low-power devices, and homelab stacks.
Architecture
System design, component hierarchy, concurrency model, and project structure.
Grafana Dashboards
Pre-built Golden Signals dashboards optimized for tablet kiosk mode — no scroll, CRT-ready.
Open Source
Contribute
RetroDash is open source and built for the homelab community. We welcome contributions of all kinds.
Developers
Code Contributions
The bridge server is written in Go with 100% test coverage. Pick an issue, fork the repo, and submit a PR.
- Go 1.24+ with golangci-lint
- 100% test coverage required
- CI validates lint + tests automatically
- Multi-arch Docker builds (AMD64 + ARM64)
Community
Report & Discuss
Found a bug? Have a feature idea? Open an issue on GitHub. Every bit of feedback helps make RetroDash better.
- Bug reports with reproduction steps
- Feature requests and ideas
- Documentation improvements
- Share your homelab setup
Give your old tablet a new life
Download RetroDash for free. Set up in minutes. Your homelab will thank you.