openjutsu
One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.
Disc ripping and media organization with a reactive web dashboard
MediaPython · TypeScriptGitHub @JsakkosOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Engram is a modern disc ripping and media organization tool with a reactive web dashboard. Unlike headless automation tools, Engram provides full visibility into the ripping process with intelligent Human-in-the-Loop intervention for ambiguous content.
Taken from the repository README
Loading the full README.
Read the full README ↗STRANGENEWWORLDS_SEASON3)| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Automatic drive detection | Yes | Yes | No |
| Staging folder auto-import | Yes | Yes | Yes |
| MakeMKV ripping | Yes | Yes | Yes |
| Episode matching (ASR) | Yes | Yes | Yes |
| Web dashboard & API | Yes | Yes | Yes |
| Tool auto-detection | Yes | Yes | Yes |
| TheDiscDB / TMDB lookup | Yes | Yes | Yes |
Windows has full automatic disc detection via kernel32 APIs. Linux has native optical-drive detection via /sys/block and blkid. On macOS, the backend and dashboard run fully, but disc insertion must be triggered via the staging import API.
On all platforms, Engram supports a staging folder workflow: drop a folder of pre-ripped MKV files into the staging directory and Engram will auto-detect, classify, match, and organize them. This is the primary workflow on systems without optical drives. See Linux / macOS setup for details.
PATH — see installing FFmpeg, or Troubleshooting if it isn't foundNo Python or Node.js required — the Config Wizard opens in your browser on first launch. Download the build for your platform from the Releases page, extract it, and run the engram executable:
| Platform | Download | Run |
|---|---|---|
| Windows | engram-win-x64.zip | engram.exe |
| Linux (x64) | engram-linux-x64.tar.gz | ./engram/engram |
| Linux (arm64 / Jetson) | engram-linux-arm64.tar.gz | ./engram/engram |
| macOS | engram-macos-arm64.tar.gz | ./engram/engram |
Keep your libraries, staging folder and backups outside the folder you extract Engram into: an update replaces that whole folder.
On Linux arm64 (e.g. NVIDIA Jetson), download engram-linux-arm64.tar.gz. ASR runs on the CPU out of the box; GPU acceleration needs an on-device build step — see Jetson setup.
On macOS, download engram-macos-arm64.tar.gz. It runs natively on Apple Silicon (M1/M2/M3/M4) and transparently on Intel Macs via Rosetta 2. macOS has no automatic optical-drive detection — use the staging-folder workflow (see Linux / macOS setup).
FFmpeg is required for episode matching. Engram auto-detects it on your
PATH(Windows:winget install Gyan.FFmpeg, then restart Engram). If the Config Wizard reports FFmpeg missing, see installing FFmpeg and Troubleshooting.
git clone https://github.com/Jsakkos/engram.git
cd engram
# Backend
cd backend
uv sync
cd ..
# Frontend
cd frontend
npm install
cd ..
For GPU-accelerated transcription (optional):
cd backend
uv sync --extra gpu
An NVIDIA GPU speeds up episode matching considerably. GPU acceleration is opt-in: enable it in
Settings → Matching → GPU Acceleration, which downloads the CUDA runtime on demand — this works
in the prebuilt standalone build too (macOS and AMD GPUs run on CPU). The uv sync --extra gpu above
is the from-source shortcut that installs those libraries via pip. See
Performance & Hardware for GPU setup, storage recommendations, and
concurrency tuning.
Then start the two dev servers in separate terminals:
# Backend (API on port 8000)
cd backend
uv run uvicorn app.main:app
# Frontend (dashboard on port 5173)
cd frontend
npm run dev
Open http://localhost:5173 in your browser. See the installation guide for distro-specific prerequisites and verification steps.
Run Engram as a container with the optical drive passed through from the host:
git clone https://github.com/Jsakkos/engram.git
cd engram
# Set MAKEMKV_APP_KEY (and PUID/PGID) in docker-compose.yml, then:
docker compose up -d
Open http://localhost:8000 and complete the setup wizard. MakeMKV is compiled
into the ./config volume on first start (one-time), so the image itself ships
no MakeMKV binaries. Optical-disc ripping requires a real Linux host with a
drive — Docker Desktop on Windows/macOS can run the UI but can't pass through
/dev/sr0. See the Docker deployment guide for
volumes, device passthrough, GPU notes, and troubleshooting.
On first launch the Config Wizard walks you through setup: MakeMKV path, library paths, TMDB token, and more. Settings are stored in the database and editable from the Settings page.
eyJ..., not the shorter v3 API Key.An optional backend/.env file can override server-level defaults:
| Variable | Description | Default |
|---|---|---|
DATABASE_URL | SQLite connection string | sqlite+aiosqlite:///./engram.db |
HOST | Server bind address | 127.0.0.1 |
PORT | Server port | 8000 |
DEBUG | Enable simulation endpoints | false |
See the configuration guide for the full walkthrough and field reference.
Full documentation is published at jsakkos.github.io/engram.
Questions, ideas, or just want to share what you're ripping? Join the Engram community on Discord. It's the fastest way to get help, follow development, and talk to other users.
Bugs and feature requests: in Discord, run /bug or /feature. Trace, our support bot, asks for what's missing, checks for an existing issue, and drafts a GitHub issue that you file with one click. Attach the job's diagnostics bundle and it reads the logs for you. For a quick question, post in the #ask-engram forum, mention @Trace, or use /ask. Prefer GitHub? Open an issue directly. Full guide: Getting Help & Reporting Issues.
AGPL-3.0. See LICENSE.
And thank you to Engram's community contributors 💜