GrubDrops

Self-hosted Twitch & Kick
drops miner

Set it once and forget it. GrubDrops banks the watch-time, auto-claims drops, and switches channels across multiple accounts. Web UI, one docker compose up.

Go + Docker SvelteKit web UI runs on a Raspberry Pi self-hosted
GrubDrops Home page: what each account is mining across Twitch and Kick
Games page: chosen games in priority order, with per-account game lists Inventory page: drops in progress and every claimed drop

What it does

🎯 Chosen games

It only mines the games you pick, in one global list in your priority order. Nothing else burns watch-time.

🟣🟢 Twitch and Kick

Several accounts on each platform, all tracked on one page.

✅ Game-aware

Confirms the stream is on the right game before crediting, so you never mine the wrong channel.

🔒 Your credentials stay yours

Twitch uses the official device-code login; Kick uses a session you export. No passwords sent anywhere.

🔔 Discord notifications

Per-event-type toggles for claims, auth, and discovery.

🥧 Light enough for a Pi

One Go binary and a SQLite file. arm64 images ship for Raspberry Pi.

Run it

Published image, single compose file. Start it, open http://localhost:8080 and create the admin login.

services:
  miner:
    image: ghcr.io/aalejandrofer/grubdrops:latest
    restart: unless-stopped
    ports: ["8080:8080"]
    environment:
      GRUB_SECURE_COOKIES: "0"   # 1 behind HTTPS
      TZ: Europe/London
    volumes:
      - ./data:/data
      - /var/run/docker.sock:/var/run/docker.sock   # Kick only
mkdir -p data && sudo chown 65532:65532 data
docker compose up -d