n8n-alternative.com◆Migration guide · commands checked October 2026◆Open source

Migration guide

Migrate from n8n to Open-Source Kortix

Kortix is the open-source AI Operating System (AI OS) you move an n8n automation to when the job stops fitting a fixed flowchart and becomes open-ended work an agent has to finish on its own. Kortix runs each session in an isolated Linux sandbox, keeps the whole configuration as files in one git repo you own, and lands every change as a change request a person reviews.

n8n workflow
→
Agent + skills
n8n node
→
Connector call
n8n execution
→
Session + change request
In one line

Most of the move is a rename; the canvas becomes text you edit and diff.

When

1When to move off n8n

n8n is a workflow automation platform that connects nodes on a visual canvas to automate a process. n8n's own docs define a workflow as "a collection of nodes connected together to automate a process," and an execution as one run of that workflow. The model is a strong fit for work you can draw in advance: the same steps, in the same order, every time.

Keep that work on n8n. Move a job to Kortix when the work is open-ended. Research the accounts on a list. Reproduce a failing checkout and open a fix. Read a support thread and draft the reply. Chase an invoice. A Kortix agent plans, calls tools, and finishes a multi-step run; you review the result instead of wiring every branch. The Kortix docs draw the same split: n8n for a fixed flowchart, Kortix for open-ended work an agent does on its own computer.

What moves with you: schedules and webhooks become Kortix triggers, integrations become connectors, stored credentials become connector accounts brokered server-side, and your process logic becomes an agent and its skill files in the repo.

What does not move: the visual canvas and n8n's per-item data structure. Kortix replaces the canvas with text you edit and diff.

Concept map

2What maps cleanly and what does not

n8n conceptKortix equivalent
WorkflowAgent plus skills: markdown the harness runs
NodeConnector or tool: one callable action
Trigger nodeTrigger in kortix.yaml: cron, webhook, monitor
CredentialsConnector account: credential brokered server-side
ExecutionSession plus change request
Sub-workflowSkill or subagent
CanvasFiles in one git repo

Two differences are worth planning for. An n8n node runs in the order you wire it, while a Kortix agent chooses its tool calls at run time, so you describe the outcome and the agent picks the path. An n8n execution is a log of a run, while a Kortix session keeps a git branch named after the session and opens a change request, so the work outlives the sandbox and reaches your default branch only after review.

Step by step

3Migrate step by step

Every command below appears in the Kortix docs. Install the CLI, scaffold a project, declare your connectors and triggers, run a session, then merge the change request.

1. Install and sign in

curl -fsSL https://kortix.com/install | bash
kortix login

kortix login opens your browser, then picks your account and a default project for you. Kortix ships a CLI for macOS and Linux; there is no Windows binary yet.

2. Create the project

kortix init my-app
cd my-app
kortix ship

kortix init scaffolds a project directory whose kortix.yaml declares kortix_version: 2 and runs the OpenCode harness. kortix ship creates the project in Kortix Cloud on its first run, then pushes your code; run it again any time to sync local changes. To adopt an existing repo, clone the project with kortix projects clone <project-id> instead of scaffolding.

3. Move integrations and schedules into kortix.yaml

Connectors are declared in kortix.yaml, or in a file it lists under imports:. The Kortix manifest reference lists every key. A manifest that wires one agent to all connectors and runs a weekday digest looks like this:

kortix_version: 2
default_agent: kortix

agents:
  kortix:
    file: agents/kortix.md
    connectors: all
    secrets: all

triggers:
  - slug: daily-digest
    type: cron
    agent: kortix
    cron: "0 0 9 * * 1-5"
    timezone: America/Los_Angeles
    prompt: |
      Summarize yesterday's commits. Open a CR against main.

You can add the same trigger from the CLI. kortix triggers add edits your local kortix.yaml only, and kortix ship pushes it:

kortix triggers add daily-digest --type cron \
  --cron "0 0 9 * * 1-5" --timezone America/Los_Angeles \
  --prompt "Summarize yesterday's activity and save it as a daily note."
kortix ship
kortix triggers ls

A cron expression is a 6-field form: second, minute, hour, day, month, weekday. The schedule goes live once the manifest lands on your default branch. For an event-driven flow that n8n handled with a webhook trigger, set a signing secret and add a webhook trigger instead:

kortix secrets set WEBHOOK_SECRET=<a-random-value>
kortix triggers add new-lead --type webhook \
  --secret-env WEBHOOK_SECRET \
  --prompt "A new lead arrived: {{ body.name }} ({{ body.email }}). Add it to the CRM."

Kortix builds the webhook URL from your project id and the trigger slug, verifies each request's signature against WEBHOOK_SECRET, then starts a session with the request body available in the prompt. The Kortix trigger docs cover webhook and monitor triggers as well as cron.

4. Start a session

kortix sessions new --prompt "Build the login page"
kortix sessions chat

kortix sessions new starts a session; the agent works in its own sandbox, on its own branch, so your project is untouched. kortix sessions chat attaches you to watch progress and reply.

5. Review and merge the change request

kortix cr ls
kortix cr diff 1
kortix cr merge 1

Replace 1 with the CR number from kortix cr ls. kortix cr diff 1 shows the unified patch; kortix cr merge 1 merges it into your default branch. Nothing reaches that branch until you merge, and a session can never merge the change request it opened itself, so the agent cannot land its own work.

What changes

4What you gain

  1. One repo you own. Agents, skills, memory, connector config and triggers are files, so you grep the whole company, diff any change, and roll any part of it back.
  2. Any model, your keys. Pick the model per agent, per session or per message, bring your own API key, or point at your own OpenAI-compatible endpoint.
  3. Self-host anywhere. Run the same stack on your laptop, a VPS, your VPC or on-prem with kortix self-host start, or use managed cloud.
  4. A human gate on every change. Set each tool call to Allow, Ask or Block; an Ask holds the call until a person approves it, and merging stays a person's decision.
  5. A sandbox per task. Each session boots its own isolated Linux machine with your repo and tools already on it, and thousands run in parallel with no crossover.

Kortix also reaches the tools you already use: 3,000+ apps in a click, plus any MCP, OpenAPI, GraphQL or raw HTTP API, with credentials brokered server-side so they never enter the sandbox. See Kortix.

Safety

5Rollback and safety

The move is non-destructive. A session works on its own branch, and kortix cr merge is the only path to your default branch, so nothing changes in your live project until you approve it. Firing a trigger starts a session; it does not create a commit on its own.

kortix.yaml is versioned in git like everything else. Kortix validates the manifest when you run kortix ship and again when a change request merges, so a broken manifest stops at review instead of reaching main. If a merge is wrong, revert the merge commit. If a change request is not ready, leave it open until you are.

Next

6Where to go next

If the work is open-ended and you want it to finish on its own, start here: Try Kortix.