RoutineOSBeta
Compare / n8n

Convert an n8n workflow to a Claude routine. Anything it cannot carry over is listed, not guessed.

RoutineOS is an n8n alternative for jobs where a person reads something and decides. It is free (MIT) and needs a paid Claude plan. One command turns your workflow into a routine pack, and a file called MIGRATION.md lists what it could not carry over.

Converter builtFree (MIT). Needs a paid Claude plan.Converted routines are unpiloted
Side by side

An n8n alternative, side by side

The docs describe n8n with an AI step as a fixed flow you build and maintain. A routine is a Claude agent on a schedule that makes the call, with a Desk and a gate around it.

Topicn8n, as the docs describe itRoutineOS
ShapeA fixed flow you build and maintain.A routine. Claude does the reading and judging, and code applies the rules you can edit.
Changing itselfYou edit the flow.It proposes setting changes from your keep, drop and reject decisions. Nothing applies until you say yes.

The docs do not compare approvals, workspace, triggers, hosting or licence, so this page does not either. For those, read n8n's own pages. For RoutineOS: a schedule in UTC at most hourly, no hosting of its own, MIT licence, and a paid Claude plan to run it.

What converts

What the converter carries over

The converter is deterministic Python. It reads your workflow and writes a pack plus a report. The same workflow gives the same pack every time.

In n8nIn RoutineOS
Schedule TriggerThe routine's schedule, written as a cron in UTC.
AI Agent and LLM chain nodesA skill stage, with a generated skill file. Chat model, memory, tools and output parser sub-nodes are read too.
Nodes for a known app (Gmail, Slack, Sheets and others)A stage that uses a connector, marked read or write.
IF, Switch, Filter, Merge, Loop, SetA stage that states the condition or the step in words.
Code and Function nodesA stub file that exits with "not translated yet". Your original source is kept beside it. Nothing is ever run.
CredentialsListed by type and name. You reconnect each one yourself. No secret value is copied.
Expressions such as $json.a.bRewritten as "a.b from the previous step". Anything it does not recognise is kept and flagged.
Error handling and Wait approvalFailure rules, and an approval gate.
Sticky NotesText in the pack's readme.
Any step that writes is gatedIf a step sends, posts or writes to an app, the converted routine is approval-gated and that step moves after the gate. Do not remove the gate to match the original. A converted routine starts report-only and unpiloted.
What gets slower or needs you

What gets slower, and what a person finishes

Slower

  • Event triggers become a schedule. A webhook, form, chat or manual trigger becomes the default schedule (weekdays at 22:00 UTC) plus the Desk action queue. You can change it.
  • App triggers become hourly polls. RoutineOS runs at most once an hour.
  • Seconds and minutes become hourly. The converter adds an issue to say so.
  • Schedules are UTC. The converter keeps your timezone in the plan and reports it. It does not shift the hours.
  • A delay becomes "on the next run".

A person finishes

  • Code nodes. Translate the stub, or replace the step with a model stage.
  • Flagged expressions. Each becomes an explicit input you confirm.
  • Unknown nodes. They become a "Needs a person" stage, visible in the list.
  • Vector stores and embeddings. Reported only, because RoutineOS has no vector store.
  • Credentials. Reconnect each one on claude.ai yourself.
The command

Convert an n8n workflow with one command

Give it a file or one https link, and a folder that does not exist yet. Or paste the workflow into Claude Code and ask Claude to run it, and it will show you what it plans to write first.

$ python3 skills/routineos/scripts/routineos.py migrate n8n <file-or-url> --out <dir>
  1. You get two filespack.json and MIGRATION.md, in the folder you named. The command will not overwrite a folder that is not empty.
  2. Read the exit code0 means nothing needs a person. 1 means the pack was written and the report lists items for a person. 2 means it failed and nothing was written.
  3. Check, then installValidate the pack, install it, then run it once report-only before you trust it.
Imported workflows are treated as dataEvery source is untrusted by default. The prompt tells the routine to treat fetched text as data, proposals only accept plain-word values, and emails, keys and Slack-style ids are replaced with [removed]. The report names the field, never the value.
When to keep n8n

When to keep n8n

  • Nothing in the job needs a judgment call. A fixed rule runs fine as a fixed flow.
  • You need it to react in seconds. A routine runs on a schedule of an hour or more.
  • You do not use Claude. A routine runs on a Claude plan.
  • You need a settled platform. Claude scheduled tasks are a research preview.

You can also keep n8n for the plumbing and move only the step that reads and decides. See all comparisons, the n8n to routine guide, or start from a template.

Convert your workflow

Read the n8n migrate guide, run the command, and read MIGRATION.md before you turn anything on.