--- title: SnapOtter emoji: 🦦 colorFrom: indigo colorTo: purple sdk: docker app_port: 7860 pinned: false license: agpl-3.0 fullWidth: true short_description: Self-hosted file toolkit — 200+ convert/OCR/PDF tools --- # SnapOtter on a Hugging Face Docker Space (CPU) [SnapOtter](https://docs.snapotter.com/) is an open-source, self-hosted file-processing toolkit: 200+ image / video / audio / PDF / document tools (convert, compress, crop, merge, split, OCR, transcribe, convert-presets) behind a web UI, a REST API and pipelines. This Space runs the **official upstream image** (`snapotter/snapotter:latest`, linux/amd64) in **embedded mode** — no external Postgres/Redis — on free CPU Basic hardware (2 vCPU / 16 GB RAM / 50 GB disk). It is deployed for the `psychoguineapig.com` box, which retired its local SnapOtter container on 2026-10-14 to reclaim ~8.6 GB of disk and ~200 MiB of RAM; running it here costs the host nothing. ## What works and what does not - ✅ All 222 non-AI tools: image resize/crop/convert/compress/watermark, video trim/mute/remux, audio convert/normalize/trim, PDF merge/split/compress/rotate/protect, file conversions. - ⚠️ AI bundles (background removal, upscale, face enhance, transcription) need `/dev/shm` and are slow on 2 vCPU; the platform does not let a Space set `shm_size`, so expect some AI tools to fail or crawl. Install bundles from **Settings → AI Features** at your own risk. - ⚠️ **This Space is ephemeral.** HF Spaces have no persistent volume any more, so the embedded database, users and the file library all reset whenever the container is rebuilt or restarted. Treat it as a scratch tool, not storage. - ⚠️ Free CPU Basic Spaces sleep after ~48 h idle; the next visit wakes the Space (cold start ≈ 1–2 min, including the 8 GB image boot). ## Ports `app_port: 7860` and `ENV PORT=7860` — both sides pinned to the platform's convention. ## Auth `AUTH_ENABLED` defaults to `true` with a first-run admin account (`DEFAULT_USERNAME` / `DEFAULT_PASSWORD` supplied as Space **secrets**, never in this repo), and `SKIP_MUST_CHANGE_PASSWORD` is not set by us — the operator changes it on first login. The instance sits behind a Cloudflare Access wall at `snapotter.psychoguineapig.com` as well, so the app login is defence in depth rather than the only gate on the public Hub URL.