No description
- Rust 61.8%
- TypeScript 26.9%
- HTML 8.1%
- JavaScript 1.8%
- Dockerfile 0.6%
- Other 0.8%
Cuppa 🍵
Container UPdates, Personalised Additions
Note
This is a fork of sergi0g/cup under active development.
See CHANGELOG.md for what's changed in this fork.
Quick Start
Prerequisites: Rust, Bun, Docker daemon running.
# Clone
git clone https://codeberg.org/falkheiland/cuppa
cd cuppa
# Build (frontend + binary)
./build.sh cargo build
# Run web UI — then open http://localhost:8000 in your browser
./target/debug/cuppa serve
# Or: check for updates via CLI
./target/debug/cuppa check
For a release build use ./build.sh cargo build --release — binary ends up in target/release/cuppa.
# Stop the server
kill $(pgrep -f "cuppa serve")
Docker
Pull from Docker Hub and run:
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8000:8000 \
--name cuppa \
falkheiland/cuppa:latest
Open http://localhost:8000 in your browser.
# Stop
docker stop cuppa && docker rm cuppa
To build locally instead:
docker build -t cuppa .
docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8000:8000 \
--name cuppa \
cuppa
Screenshots 📷
Features ✨
- Extremely fast. Cuppa takes full advantage of your CPU and is highly optimized, resulting in lightning fast speed. On a Raspberry Pi 5, it took 3.7 seconds for 58 images!
- Supports most registries, including Docker Hub, ghcr.io, Quay, lscr.io, Amazon ECR Public (public.ecr.aws), Microsoft Container Registry (mcr.microsoft.com) and even Gitea (or derivatives)
- Doesn't exhaust any rate limits. This is especially relevant with Docker Hub reducing its pull limits for unauthenticated users.
- Beautiful CLI and web interface for checking on your containers any time.
- The binary is tiny! At the time of writing it's just 5.4 MB. No more pulling 100+ MB docker images for such a simple program.
- JSON output for both the CLI and web interface so you can connect Cuppa to integrations. It's easy to parse and makes webhooks and pretty dashboards simple to set up!
API Endpoints
| Method | Path | Description |
|---|---|---|
GET |
/api/v3/json |
Full JSON response — images, metrics, loading flag, last_updated, version |
GET |
/api/v3/refresh |
Trigger a refresh; blocks until complete, returns OK |
GET |
/api/v2/json |
Simple JSON response — one bool per image reference |
GET |
/api/v2/refresh |
Same as v3/refresh |
The loading field in /api/v3/json is true while the initial check is still running.