{"id":51856290,"url":"https://github.com/ellmos-ai/n8n-workflow-manager","last_synced_at":"2026-07-24T01:03:49.971Z","repository":{"id":340249961,"uuid":"1164356206","full_name":"ellmos-ai/n8n-workflow-manager","owner":"ellmos-ai","description":"Local-first n8n workflow manager with visual graph viewer, REST API, CLI, and multi-server sync","archived":false,"fork":false,"pushed_at":"2026-06-25T21:43:44.000Z","size":1246,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-25T23:12:18.161Z","etag":null,"topics":["ai-agents","automation","fastapi","flask","llm-agents","local-first","mcp","n8n","n8n-workflows","open-source","python","python-cli","rest-api","visual-workflow","web-ui","workflow","workflow-automation","workflow-manager","workflow-sync"],"latest_commit_sha":null,"homepage":"https://github.com/ellmos-ai/n8n-workflow-manager#readme","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ellmos-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://paypal.me/lukasgeiger2507"]}},"created_at":"2026-02-23T01:33:03.000Z","updated_at":"2026-06-25T21:43:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ellmos-ai/n8n-workflow-manager","commit_stats":null,"previous_names":["lukisch/n8n-workflow-manager","ellmos-ai/n8n-workflow-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ellmos-ai/n8n-workflow-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellmos-ai%2Fn8n-workflow-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellmos-ai%2Fn8n-workflow-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellmos-ai%2Fn8n-workflow-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellmos-ai%2Fn8n-workflow-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ellmos-ai","download_url":"https://codeload.github.com/ellmos-ai/n8n-workflow-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellmos-ai%2Fn8n-workflow-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35822076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-23T02:00:06.683Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","automation","fastapi","flask","llm-agents","local-first","mcp","n8n","n8n-workflows","open-source","python","python-cli","rest-api","visual-workflow","web-ui","workflow","workflow-automation","workflow-manager","workflow-sync"],"created_at":"2026-07-24T01:03:49.116Z","updated_at":"2026-07-24T01:03:49.937Z","avatar_url":"https://github.com/ellmos-ai.png","language":"Python","funding_links":["https://paypal.me/lukasgeiger2507"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"assets/banner.svg\" width=\"100%\" alt=\"n8n-workflow-manager banner\"\u003e\n\n# n8n Workflow Manager\n\n**[Deutsche Version](README_de.md)** · **English**\n\n\u003e Local-first workflow review, editing, history, and multi-server sync for n8n.\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n## What it does\n\n- Visual graph viewer and working browser editor for n8n workflow JSON.\n- SQLite-backed version history and decision audit for every mutation.\n- Rollback through the REST API or CLI.\n- Per-workflow/per-server pull/push bindings using the n8n public API and cursor pagination.\n- JSON and Markdown export, validated imports, and bundled generic templates.\n- FastAPI REST API, Swagger UI, and a terminal CLI.\n\nThe application is local-first: it binds to `127.0.0.1` by default and stores\nconfiguration and runtime data in per-user directories rather than inside the\ninstalled package or source checkout.\n\n## Install and start\n\n```bash\npip install git+https://github.com/ellmos-ai/n8n-workflow-manager.git\nn8n-manager serve\n```\n\nOpen \u003chttp://127.0.0.1:8100\u003e. Interactive API documentation is at\n\u003chttp://127.0.0.1:8100/docs\u003e.\n\nFor development:\n\n```bash\ngit clone https://github.com/ellmos-ai/n8n-workflow-manager.git\ncd n8n-workflow-manager\npython -m pip install -e \".[dev]\"\npython -m pytest -q\n```\n\n## CLI examples\n\nMutations that can replace or remove state require a short decision. It is\nstored with workflow history.\n\n```bash\nn8n-manager import workflow.json --decision \"Import reviewed customer workflow\"\nn8n-manager list\nn8n-manager history 1\nn8n-manager export 1 --format md\n\nn8n-manager servers --add production https://n8n.example.com YOUR_API_KEY --default\nn8n-manager push 1 --decision \"Deploy reviewed version\"\nn8n-manager pull\nn8n-manager rollback 1 2 --decision \"Restore last known-good version\"\n```\n\nTLS verification is on by default. `--no-verify-tls` exists for controlled\nlocal environments with self-signed certificates; do not use it across\nuntrusted networks.\n\n## Builder API\n\n```bash\ncurl -X POST http://127.0.0.1:8100/api/workflows/build \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Webhook forwarder\",\n    \"decision\": \"Create a reviewed draft\",\n    \"nodes\": [\n      {\"type\": \"n8n-nodes-base.webhook\", \"name\": \"Trigger\", \"parameters\": {\"path\": \"hook\"}},\n      {\"type\": \"n8n-nodes-base.httpRequest\", \"name\": \"Forward\", \"parameters\": {\"url\": \"https://api.example.com\"}}\n    ],\n    \"connections\": [{\"from_node\": \"Trigger\", \"to_node\": \"Forward\"}]\n  }'\n```\n\nSee [API_REFERENCE.md](docs/API_REFERENCE.md) for the mutation and history\ncontracts.\n\n## Configuration and data\n\n`n8n-manager status` prints the effective paths. Relative `db_path` values are\nresolved below the user data directory.\n\n| Platform | Configuration | Runtime data |\n|---|---|---|\n| Windows | `%APPDATA%\\n8n-workflow-manager` | `%LOCALAPPDATA%\\n8n-workflow-manager` |\n| macOS | `~/Library/Application Support/n8n-workflow-manager` | same directory |\n| Linux | `${XDG_CONFIG_HOME:-~/.config}/n8n-workflow-manager` | `${XDG_DATA_HOME:-~/.local/share}/n8n-workflow-manager` |\n\nOverrides: `N8N_MANAGER_CONFIG`, `N8N_MANAGER_CONFIG_DIR`, and\n`N8N_MANAGER_DATA_DIR`. Start with [config.example.json](config.example.json).\nThe default `trusted_hosts` accepts only loopback Host headers; explicitly list\nthe reviewed public hostname when using an authenticated reverse proxy.\n\n## Docker\n\n```bash\ndocker compose up --build -d\n```\n\nThe Compose port is bound to `127.0.0.1:8100`, and state is mounted below\n`runtime/`. The image runs as an unprivileged user.\n\n## Remote n8n setup\n\nThe setup command expects Docker to have been installed according to the remote\nhost's operating-system policy. It installs a pinned official n8n image on a\nloopback-only port; it does not run a remote `curl | sh` installer.\n\n```bash\nn8n-manager setup --host your-server --user deploy --ssh-key ~/.ssh/id_ed25519\n# Follow the printed ssh -L ... tunnel command, then open http://127.0.0.1:5678\n```\n\nSSH uses batch mode and `StrictHostKeyChecking=accept-new`. For public service,\nprovide an authenticated TLS reverse proxy. Do not expose either n8nManager or\nthe generated n8n listener directly to the internet.\n\n## Manager + MCP pairing\n\n`n8n-workflow-manager` and\n[n8n-manager-mcp](https://github.com/ellmos-ai/n8n-manager-mcp) are designed as\na pair: the MCP server is the AI action layer, while this project is the human\nstate-and-history layer with visual review, per-workflow decisions, versions,\nand rollback. A client can read `/api/workflows/{id}/history` before submitting\nthe required decision for a mutation.\n\nThe authoritative decision log lives here and is client-independent, so the\nsame review trail can cover the MCP server, `curl`, the CLI, or the web UI.\nConversational context can additionally come from a pull-based history index\nsuch as [ctx](https://github.com/ctxrs/ctx) (Apache-2.0).\n\n## Verification\n\nThe release contract is documented in [RELEASE_GATE.md](RELEASE_GATE.md). The\ncore local gates are:\n\n```bash\npython -m pytest -q\npython -m ruff check n8nManager tests\npython -m bandit -q -r n8nManager -lll\npython -m pip_audit\npython -m build\n```\n\n## License\n\nMIT; see [LICENSE](LICENSE). Use at your own risk; no warranty or maintenance\ncommitment is provided.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fellmos-ai%2Fn8n-workflow-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fellmos-ai%2Fn8n-workflow-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fellmos-ai%2Fn8n-workflow-manager/lists"}