Troubleshooting
Common setup and runtime issues, and how to resolve them. If something here doesn't cover your problem, ask Trace, the support bot in the Engram Discord (post in the #ask-engram forum, mention @Trace, or run /bug), or open an issue. A diagnostics bundle makes it much easier to help. See Getting Help & Reporting Issues.
FFmpeg not detected (Windows)
Engram needs FFmpeg for episode matching (it extracts and decodes the audio that speech recognition transcribes). If the Config Wizard's Tools step shows "FFmpeg not found" even though you installed it, it's almost always because FFmpeg isn't on your PATH — not because of the version. Engram doesn't care which FFmpeg version you have; it only needs to be able to run it.
Work through these in order:
1. Confirm FFmpeg actually runs. Open a new PowerShell or Command Prompt window and run:
- If you see version output, FFmpeg is on your
PATH— skip to step 2. - If you see "'ffmpeg' is not recognized…", FFmpeg is installed but not on your
PATH. Go to step 3.
2. Restart Engram. A running program keeps the PATH it was launched with. If you installed FFmpeg (or edited your PATH) while Engram was open, fully close and reopen Engram so it sees the change, then click Re-scan in the Config Wizard.
3. Put FFmpeg where Engram can find it. Pick whichever is easiest:
- Install with winget (recommended) and restart Engram:
-
Add it to your PATH: extract your FFmpeg download, then add the
...\binfolder (the one containingffmpeg.exe) to your systemPATHvia Settings → Edit the system environment variables → Environment Variables. Restart Engram afterward. -
Drop it in a scanned location: copy
ffmpeg.exetoC:\ffmpeg\bin\ffmpeg.exe. Engram scans this path (and the Chocolatey / scoop / winget install locations) automatically — noPATHchange needed. -
Point Engram at it directly: in the Config Wizard (or Settings → Tools), click Override path manually and enter the full path to
ffmpeg.exe— for exampleC:\Users\You\Downloads\ffmpeg\bin\ffmpeg.exe. Enter the path to the.exefile itself, not the folder it lives in. The path is validated immediately and shows the detected version on success.
See Installing FFmpeg for download links.
FFmpeg on Linux / macOS
Install it with your package manager (sudo apt install ffmpeg, sudo dnf install ffmpeg, or brew install ffmpeg). See the Linux / macOS setup guide for details.
MakeMKV not detected
MakeMKV is required for disc ripping. If the Config Wizard can't find it, install it from makemkv.com and, if it still isn't detected, use Override path manually to point at makemkvcon64.exe (typically under C:\Program Files (x86)\MakeMKV\). On Linux, see Linux / macOS setup. Don't forget to enter your MakeMKV license key in the wizard.
TMDB token not working
The TMDB field expects a Read Access Token (v4 auth) — the long string starting with eyJ… — not the shorter v3 "API Key". The wizard validates it as you type. See Configuration for where to find it.
Discord notifications aren't arriving
Engram posts to a Discord webhook when a disc completes, fails, or parks waiting for you. Settings live under Settings, Preferences, Notifications.
First, prove the webhook works. Click Send test message. It tests the webhook you have saved, so if you just pasted a new URL, save before testing. A sample notification should appear in the channel within a second or two. If it doesn't:
- Read the message next to the button. A red cross means Discord refused the post, which usually means the webhook or its channel was deleted: re-create it under Channel Settings, Integrations, Webhooks and paste the fresh URL. An amber warning means the check itself could not run, so the webhook may well be fine and the problem is between your browser and Engram.
- Check that the URL starts with
https://discord.com/api/webhooks/.
The test works but real discs are silent. Check the three per-event toggles. Each event has its own switch, so it's possible to have completions enabled and review notifications turned off, or the reverse.
Notifications arrive but don't alert my phone. Discord does not push notifications for
embed content. Set Review Mention to your user ID (<@123456789012345678>), a role
(<@&987654321098765432>), or @here. That value is sent as the message body, which is
the part Discord actually pings on. To find your user ID, enable Developer Mode in
Discord's Advanced settings, then right-click your name and choose Copy User ID.
Notifications aren't clickable. Set Dashboard URL to the address you use to reach
Engram from other devices, for example http://192.168.1.50:5173. Notifications then link
straight to the job. Leave it blank and notifications still arrive, just without a link.
Every disc in my box set looks the same. Each notification carries a Disc field
built from the disc's volume label plus its disc number, so THE_WIRE_S1 (Disc 3) is
distinct from disc 4. If the field shows only Disc 1, the disc reported no volume label
and Engram has no better identity to use; naming the disc during identification fixes it
for that job.
A track says its only audio is another language
Engram identifies TV episodes by listening to the dialogue and comparing it with English subtitles. When every audio track in a ripped file is another language (an anime disc without an English dub, or a foreign-language bonus episode), Engram does not guess: the track goes to review with a note naming the language, and you assign the episode by hand.
The note says the disc also has English audio. MakeMKV only rips the audio tracks its language settings select, so an English dub on the disc can be missing from the file. In MakeMKV, open Preferences > Language (or adjust the default track selection), add English, and re-rip the track.
On a disc with several audio tracks, Engram always listens to the English one, whichever track the disc marks as the default.
Restoring the database after an upgrade
Engram's database (engram.db) holds your settings and API keys (MakeMKV key, TMDB token, AI and OpenSubtitles keys) along with your job history. Each time Engram starts on a new version, or finds that the database's layout needs updating, it first saves a copy of the database next to it, named engram.db.bak-<previous-version>-<timestamp> (for example engram.db.bak-0.41.0-20261020T153012.123456Z). The first upgrade to a version with this feature names the copy bak-unknown, because no earlier version was recorded. Only the three newest copies are kept. The startup log says when a copy is made: Backed up database to ... before migrating.
Where the database lives:
| Install | Database |
|---|---|
| Packaged app (Windows, Linux, macOS) | ~/.engram/engram.db (on Windows, C:\Users\<you>\.engram\engram.db) |
| Docker | /config/.engram/engram.db inside the /config volume |
| From source | backend/engram.db (or wherever DATABASE_URL points) |
If an upgrade leaves Engram unable to start, or your settings look wrong afterwards, restore the copy:
- Stop Engram completely (quit the app, or stop your Engram container, for example
docker compose stop engram). - In the database folder, move
engram.dbaside, along withengram.db-walandengram.db-shmif they exist. Keep them until you're sure the restore worked. - Copy the backup you want (usually the newest) to
engram.db. - Delete
engram.db.versionso the next start treats the database as coming from the older version. - Start the version of Engram that made the backup (the version is in its name). Starting a newer version will try the same upgrade again, so if the upgrade itself is the problem, stay on the older version and report it with the startup log.
If a backup can't be written (for example, the disk is full), Engram logs a warning and starts anyway.
Diagnostics bundle
When reporting a problem, attach a diagnostics bundle so the logs and environment come with it. From the dashboard, open a job's detail view and download its diagnostic .zip, or fetch the overall report from GET /api/diagnostics/report. Secrets (API keys, tokens) are redacted automatically.
In Discord, drop the .zip into your thread with Trace: it reads the versions, job state and log errors for you, and attaches a summary to the GitHub issue when your report is filed. See Attaching a diagnostics bundle.