18+ Adults Only

This site discusses software for indexing adult content. You must be of legal age in your jurisdiction to enter.

Take me out
goon

Self-hosted
scene catalog
for grown-ups.

Goon indexes scene metadata from TPDB & StashDB, deduplicates across 30+ public tubes, and serves a fast mobile client. Zero ads. Zero tracking. Your data stays on your VPS.

Android only · self-hosted backend required · 18+

What it does

Goon is not a tube. It does not host, transcode, or proxy content. It is a metadata aggregator + mobile UI for finding scenes that are already publicly available.

Multi-source ingest

TPDB & StashDB metadata + 30+ public tubes. Cross-source deduplication via perceptual-hash thumbnails + title-Levenshtein matching.

Per-performer backfill

A continuous worker walks performers by staleness and back-fills tube scenes for the longest-stale first. Completeness over recency.

Smart stream resolution

yt-dlp for mainstream tubes + P.A.C.K.E.R. unpacker for JWPlayer hosters + WebView fallback for IP-bound CDNs. Streams direct from source, no transcoding.

Mobile-first UI

React Native + Expo. Scene grid, performer pages, watch history, favorites, hold-to-preview thumbnails. Built for thumb scrolling.

Privacy by default

App lock (PIN + biometrics), FLAG_SECURE screenshot block, age gate. No analytics. No telemetry unless YOU configure Sentry with your own DSN.

100% self-hosted

One docker compose up -d and you own the API, the DB, the worker. No SaaS dependencies. Your search history is yours.

In the app

Screen-shots from a real install — censored where needed.

Scenes grid
Scene detail
Performer page
Favorites

Quick start

5 commands. Backend runs in 30 seconds on any Docker host.

$ git clone https://github.com/goon-foss/goon.git
$ cd goon && cp .env.example .env
$ # edit .env: set TPDB_API_TOKEN, STASHDB_API_KEY, API_KEYS
$ docker compose up -d
$ curl localhost:8000/health
{"status":"ok"}

Then download the APK above, point it at your backend, paste an API key. Full docs in the README.