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
- 1Normalize URL
- 2Validate URL
- 3Security validation
- 4Detect platform
- 5Select extractor
- 6Extract metadata
- 7Extract available formats
- 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.