n8n wires the services you already use into automated workflows: a form is submitted, so a spreadsheet row is created, a message is sent and an API is called — built in a visual editor, with a JavaScript or Python step wherever you need one. Running it yourself means the API keys and the data flowing through those workflows never leave your infrastructure.
What you would use it for
- Automate repetitive work across SaaS tools — CRM, email, spreadsheets, chat — without writing and operating a separate service for each job.
- Receive webhooks from other systems, then transform, filter and forward them; webhook URLs point straight at the app’s domain.
- Build AI agents that call tools and models with your own API keys, with execution history stored locally.
What Keenrig handles for you
- Workflows, credentials and the encryption key live in one persistent volume — updating or redeploying the app does not lose them (tested: the encryption key survives a container replacement).
- The data directory is handed to the `node` user the image runs as, so the app can write on its very first boot.
- `WEBHOOK_URL` is set from the app’s first domain, and usage telemetry back to n8n is switched off.
- Health checked at `/healthz`; pinned to digest `sha256:87e0bab2…` of release 2.41.6.
What it does not do. This is single-container mode with SQLite: right for individuals and small teams, with no queue mode and no multiple replicas. It needs at least 1 GB of memory — n8n uses about 700 MB while idle. The credential encryption key lives in the volume: lose the volume and every saved credential becomes undecryptable, so back it up. n8n is distributed under the Sustainable Use License, which is not an OSI open-source licence — read its terms before commercial use.