reference
Troubleshooting
Common problems and how to fix them.
Most Glyph issues fall into a small set of categories. Try the relevant section first; if your issue isn't here, check the GitHub issues.
Container issues
Backend container is unhealthy
Check the logs:
docker compose logs backendCommon causes:
- Missing
.envvariable - the error mentions which one - Database not ready - wait 30 seconds after first start, the backend retries
- Bad
SECRET_KEY- must be at least 32 characters - Port 8000 already in use on the host (only matters in dev)
Database connection refused
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'db'")
- The
dbcontainer hasn't finished starting. Wait for its health check to pass. MYSQL_PASSWORDin.envdoesn't match what MySQL was initialized with. If you changed it after the first run, drop the volume (volumes/mysql) and start fresh - or update theglyphuser's password directly via SQL.
Frontend shows a blank page
Open the browser console:
Failed to fetchwith the wrong URL →NEXT_PUBLIC_API_URLis wrong- CORS error →
CORS_ORIGINSdoesn't include your frontend URL - No console errors but blank → check that the frontend container is healthy
Authentication issues
OAuth redirect URI mismatch
The redirect_uri MUST match the registered callback URL for this application.
The callback URL on github.com / gitlab.com must exactly match APP_URL/api/auth/<provider>/callback. Common gotchas:
httpvshttps- Trailing slash
- Different port
localhostvs your IP / domain
Update both: the OAuth app on the provider AND APP_URL in .env.
Wrong password loops back to login
Should no longer happen - fixed in recent releases. The 401 interceptor was excluded for auth endpoints. If you still see this, hard-refresh the browser to drop a cached old build.
Lost admin access to a workspace
Use the database directly:
docker exec -it glyph-db mysql -u glyph -p"$MYSQL_PASSWORD" glyphUPDATE workspace_members
SET role = 'admin'
WHERE user_id = (SELECT id FROM users WHERE email = 'you@example.com')
AND workspace_id = '<workspace_uuid>';Email issues
Invitations not sending
Check backend logs for SMTP/API errors:
docker compose logs backend | grep -iE 'email|smtp|resend|sendgrid|mailgun'Common causes:
- No provider configured → expected; share the link manually (see Inviting Members)
- Bad API key → 401 in logs, regenerate the key on your provider
- Sender domain not verified → 403 in logs, verify in your provider's dashboard
- Gmail SMTP without App Password → use a Google App Password, not your regular password
Emails go to spam
Set up SPF, DKIM, and DMARC for EMAIL_FROM's domain. Each provider's docs explain the required DNS records.
Import / project issues
"Upload N files to this site?" alert when picking a folder
This is the browser's native security dialog for <input webkitdirectory>. There is no way to suppress it from JavaScript.
Solution: drag the folder onto the drop zone instead. Drag-and-drop uses a different API that doesn't trigger the dialog.
"File not found" after importing
If the file path contains brackets [, ], percent-encoding bugs in older versions caused 404s. Update to the latest release - this is fixed.
For other "file not found" cases, sync the project (top-right button) to refresh the file tree index.
Project import seems stuck
Initial sync runs in the background. For large repos, expect 1-5 minutes. Check:
docker compose logs backend | tail -50Look for Cloning into 'data/<project_id>' and git pull output. If the clone fails (bad PAT, network issue), the project shows in the workspace but with no commits.
Cannot upload files larger than X MB
client_max_body_size in your reverse proxy is too low. Set it to at least 200M for nginx (Caddy is unlimited by default). See Reverse Proxy.
Search issues
Search returns no results
- Trigger a project sync (top-right button on the project page) to reindex.
- Check Meilisearch is healthy:
docker compose ps. - Wipe and rebuild: see Search Engine.
Search shows wrong results from a deleted project
Project deletion removes its index. If results persist:
docker compose restart meilisearchIf still wrong, wipe volumes/meilisearch/ and resync all projects.
Performance
Slow file tree load
Large repos with tens of thousands of files are slow on first load. Glyph caches the file tree per commit - second load is fast.
If consistently slow, your MySQL or Meilisearch container may be CPU-starved. Check docker stats.
Editor lag
The Tiptap editor is fast for documents up to a few hundred KB. If you're hitting the limit, split the doc across multiple files (it's how the model is designed anyway).
Still stuck?
Open an issue on the GitHub repository with:
- Glyph version (
docker compose exec backend python -c "from app import __version__; print(__version__)") - Relevant logs (
docker compose logs --tail 200) - Steps to reproduce
- Expected vs. actual behavior