FSFluxSave

Documentation

FluxSave runs with SQLite, the local filesystem, an in-process queue and local FFmpeg. No cloud account, no paid API, no subscription.

Two commands

Install

git clone <your-fork> fluxsave
cd fluxsave
npm install
npm run setup   # checks ffmpeg + yt-dlp, creates ./data, writes .env
npm run dev     # or: docker compose up -d

The setup script verifies Node, FFmpeg and yt-dlp, creates the data directories, initializes SQLite and writes a default environment file.

Zero-cost defaults

Environment

FREE_MODE=true
PORT=3000
DATABASE_URL=./data/database/fluxsave.db
DOWNLOAD_DIR=./data/downloads
TEMP_DIR=./data/temp
TEMP_FILE_TTL=1800
MAX_FILE_SIZE=2GB
MAX_CONCURRENT_JOBS=2
MAX_BATCH_SIZE=10
ENABLE_HISTORY=false
ENABLE_AI=false
ENABLE_API=true
ENABLE_REDIS=false
OLLAMA_URL=http://localhost:11434

Monorepo

Project layout

apps/
  web/        FluxSave interface
  api/        REST API (Fastify)
  worker/     download + FFmpeg worker
  admin/      admin surface
packages/
  shared/ media/ extractors/
  security/ database/ config/
data/
  database/ downloads/ temp/ logs/

Redis, PostgreSQL and S3 can be swapped in later behind the same interfaces without rewriting the application.

URL in, media object out

Analysis pipeline

  1. 1Normalize URL
  2. 2Validate URL
  3. 3Security validation
  4. 4Detect platform
  5. 5Select extractor
  6. 6Extract metadata
  7. 7Extract available formats
  8. 8Return normalized media object

What FluxSave will not do

Safety and scope

  • No DRM, login, paywall or security circumvention of any kind.
  • No private-content extraction and no credential collection.
  • No arbitrary shell input — yt-dlp arguments are built from a strict whitelist.
  • No cloud transcription or paid AI; optional summaries run through a local Ollama instance.
  • You are responsible for downloading only content you own or are authorized to download.