https://github.com/hra42/picoclaw-dashboard
Live status dashboard for PicoClaw on Raspberry Pi Zero 2W with Argon POD display
https://github.com/hra42/picoclaw-dashboard
dashboard display golang monitoring picoclaw raspberry-pi
Last synced: about 1 month ago
JSON representation
Live status dashboard for PicoClaw on Raspberry Pi Zero 2W with Argon POD display
- Host: GitHub
- URL: https://github.com/hra42/picoclaw-dashboard
- Owner: hra42
- License: unlicense
- Created: 2026-03-23T05:18:08.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-23T20:08:44.000Z (about 1 month ago)
- Last Synced: 2026-05-23T22:10:00.271Z (about 1 month ago)
- Topics: dashboard, display, golang, monitoring, picoclaw, raspberry-pi
- Language: Go
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# picoclaw-dashboard
A lightweight Go tool that renders a live status dashboard for [PicoClaw](https://picoclaw.net/) on an [Argon POD](https://argon40.com/en-de/collections/argon-pod-series) 2.8" display (320x240 framebuffer) attached to a Raspberry Pi Zero 2W.
Shows an animated crab mascot and key metrics like uptime, model name, Discord status, memory usage, and message count — all updating on independent cadences.

## Features
- **Single binary** — sole dependency is `golang.org/x/image` for bitmap font rendering
- **Animated crab** — 2-frame ASCII art toggling every 1.5 seconds
- **Live metrics** — uptime, status, model, Discord, memory, messages, last activity
- **Color-coded values** — green/yellow/red based on health thresholds
- **Graceful degradation** — shows `--` placeholders when PicoClaw is offline
- **Dev mode** — renders to PNG instead of framebuffer for testing without hardware
- **Minimal footprint** — designed for RPi Zero 2W, ~6 MB binary, <15 MB RAM
## Data Sources
| Source | Cadence | Metrics |
|--------|---------|---------|
| `GET localhost:18790/health` | 5s | Uptime, status, memory, version |
| `~/.picoclaw/config.json` | 30s | Model name, Discord enabled |
| `~/.picoclaw/workspace/state/state.json` | 30s | Gateway state |
| `~/.picoclaw/workspace/sessions/*.jsonl` | 30s | Message count, last activity |
## Building
Requires Go 1.25+.
```bash
# Local build
make build
# Cross-compile for Raspberry Pi Zero 2W (ARM64)
make build-arm64
# Run in dev mode (outputs PNG to /tmp/dashboard.png)
make dev
```
## Configuration
```
Usage:
picoclaw-dashboard [flags]
Flags:
-dev Write PNG to /tmp/dashboard.png instead of framebuffer
-fb string Framebuffer device path (default "/dev/fb0")
-home string PicoClaw home directory (default "~/.picoclaw")
-health string Health endpoint URL (default "http://localhost:18790/health")
```
## Deployment
Copy the binary and service file to the Pi:
```bash
scp picoclaw-dashboard-arm64 picoclaw-dashboard.service pi@yourpi.local:/tmp/
```
Then on the Pi:
```bash
# Install
sudo cp /tmp/picoclaw-dashboard-arm64 /usr/local/bin/picoclaw-dashboard
sudo chmod +x /usr/local/bin/picoclaw-dashboard
# Set up systemd service
sudo cp /tmp/picoclaw-dashboard.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable picoclaw-dashboard
sudo systemctl start picoclaw-dashboard
```
Or use the Makefile shortcut (configure `PI_HOST`):
```bash
make deploy PI_HOST=pi@yourpi.local
```
### Service management
```bash
sudo systemctl status picoclaw-dashboard # Check status
sudo systemctl restart picoclaw-dashboard # Restart
sudo systemctl stop picoclaw-dashboard # Stop
sudo journalctl -u picoclaw-dashboard -f # Tail logs
```
## License
This project is released into the public domain under the [Unlicense](LICENSE).