Hi everyone,
I built a desktop GUI app, not a CLI, as this is already in place. This graphical application solves the cross-instance migration problem in a few clicks.
The killer use case (and why I built it)
You have a copy of database.sqlite from an n8n instance, but you don’t have a running n8n you can point the CLI at. Maybe the box died, maybe it’s a Docker volume snapshot, maybe it’s a backup from six months ago, maybe you just never ran n8n export:workflow because you didn’t realise you’d need it. Either way, you now have a SQLite file in front of you and no obvious path back to your flows.
The app reads that database directly. Pick the file in a dialog, get a list of every workflow and credential it contains, click Export. Done. You don’t need to spin up an n8n to read your own data back out.
What it does, exactly
Two source modes that the app can flip between without disconnecting:
- SQLite database file — read directly. Required if you want credentials, since n8n’s Public API doesn’t expose a credential read endpoint.
- Remote n8n via Public API — URL + API key. Workflows only.
What you can do per source:
| Operation | from a SQLite DB file | from a connected remote n8n |
|---|---|---|
| List / search workflows | yes | yes |
| Export workflows to JSON files | yes | yes |
| Push workflows to a remote n8n via API | yes | yes |
| Import local workflow JSON files into the connected instance | — | yes (dedicated Import tab) |
| List / search credentials | yes | — (no credential read endpoint in the n8n Public API) |
| Export credentials to JSON (encrypted blob) | yes | — |
| Export credentials to JSON (decrypted, with the source encryption key) | yes | — |
| Push decrypted credentials to a remote n8n via API | yes | — |
Workflow JSON is written in the n8n editor’s “Download” format, so files paste straight into the canvas, import via the GUI’s “Import from File”, or work with n8n import:workflow. Server-managed fields (parentFolderId, activeVersionId, etc.) are stripped automatically so cross-instance imports don’t break.
Credential JSON has two shapes:
- Encrypted blob — same as
n8n export:credentialsproduces. Useful for restoring onto an instance that shares the same encryption key. - Decrypted — the app decrypts in-process with the source encryption key you supply. The plaintext JSON imports cleanly with
n8n import:credentialson the target, which re-encrypts with its own key on the way in. This is the path for cross-instance migration.
Stuff that’s properly built
- Windows binaries are code-signed via Microsoft’s Azure Trusted Signing — SmartScreen and standard antivirus tools recognise the signature on first run. Cert chain ends at the verified identity “David Soden”.
- In-app auto-update from GitHub releases. The app downloads and applies the new version directly; no browser bounce.
- Built-in Logs button surfaces the application log file for support requests.
- macOS builds will be code-signed and notarized.
Where to get it
Landing page with download buttons: https://n8n-export-wizard.davidsoden.com/
Releases: Releases · dtsoden/n8n-export-app · GitHub
What I want from you
- Bug reports — especially around credential decryption on different n8n versions or unusual workflow shapes.
- Edge cases I haven’t thought of (folders, archived workflows, workflow_history, credential schemas added in newer versions).
- “I wish it also did X” feedback before I lock the v1.x feature surface.
Reply here, open an issue on GitHub, or DM me. Thanks for taking a look and I hope is help someone…