Migration guide
Moving a workflow from n8n
Most of an n8n workflow has a direct equivalent here and rebuilding one is an afternoon, not a project. One concept changes shape, and several have no equivalent at all. Both lists are below, and the second one is the more useful of the two.
Read this before you start
If the workflow you are thinking of moving is mostly connectors, do not move it. n8n reaches far more applications than we do and you would be trading something that works for something shorter. Move the workflow where the hard part is a decision: triage this inbound request, read this document and route it, decide whether this needs a human.
Nothing here needs an export or an import tool. You rebuild the workflow on the canvas, which for the workflows worth moving takes less time than converting one would.
Structure and access
| n8n | SMELT Studio | Worth knowing |
|---|---|---|
| Workflow | Workflow | Same idea. Versions are kept in the app, and you can look at an earlier one and go back to it. |
| Node | Block | Same idea, different word. The palette is shorter and weighted towards decisions rather than connectors. |
| Credentials | Connections | Connected once per workspace and referenced by blocks, rather than pasted into each one. |
| Projects | Projects | Workflows are grouped into projects the same way. |
| Sharing a project with colleagues | Team workspaces with owner, admin, member and viewer roles | Shared workspaces are on the Business plan and above. |
Triggers
| n8n | SMELT Studio | Worth knowing |
|---|---|---|
| Webhook node used as a trigger | Webhook trigger | Both give the workflow its own URL. Ours also issues a signing secret you send in the x-webhook-secret header. |
| Respond to Webhook | Respond to Webhook block | Answers the caller inside the same request rather than after the fact. |
| Schedule Trigger | Schedule trigger | Cron expression or a plain interval. |
| Manual execution | Manual trigger | Run it from the builder and watch the trace fill in. |
| n8n Form Trigger | Form trigger | Both host the form page for you. Ours validates the submitted fields on the server, not only in the browser. |
Logic, data and failure
| n8n | SMELT Studio | Worth knowing |
|---|---|---|
| HTTP Request | HTTP block | Any REST API. The host is resolved once and private and link-local addresses are refused, so a rebinding DNS answer cannot turn the block into an SSRF. |
| Code node | Code block | JavaScript, sandboxed in WebAssembly with no network and no filesystem, bounded by a fuel budget, a wall-clock deadline and a memory ceiling. Python does not map. |
| IF | Conditional block | Two branches, same shape. |
| Switch | Switch block | Many branches from one value. |
| Merge | Merge block | Joins branches back together. |
| Loop Over Items | Loop block | Iterates a list. Parallel fan-out is shown on the canvas. |
| Wait | Wait block | Pauses a run. The run is checkpointed while it waits rather than held in memory. |
| Edit Fields (Set) | Set variable and Transform blocks | Set writes a named value. Transform reshapes an output. |
| Expressions in double braces | References in double braces | Same syntax. Every field that accepts one has a data pane listing the fields the previous blocks really produced on the last run, with the value beside each. Click a row and the reference is written where you were typing. |
| Continue on fail, Error Trigger | Retry policy, the error port, and a Stop and Error block | Retries are per block with a bounded attempt count. The error port is a second output you wire wherever you want failures to go. |
The AI parts
| n8n | SMELT Studio | Worth knowing |
|---|---|---|
| AI Agent node | A published agent, pinned by version into an Agent block | This is the one real change. See below. |
| Tool sub-nodes attached to the agent | Tools configured on the agent itself | Configured once on the agent. Content safety is the tool kind that reaches a run today; the others are saved on the agent but not yet passed through, so check this one against your workflow before you rely on it. |
| Memory sub-node | Agent memory | Off unless you switch it on, capped per agent, and available on the Pro plan and above. You can read and delete everything an agent has remembered. |
| Vector store nodes and retrieval | Knowledge bases and the Retrieve block | Documents are ingested into a knowledge base, and the Retrieve block queries it inside a workflow. |
| Execute Sub-workflow, used for reuse | Publish an agent and pin it, or let one agent delegate to another | Delegation runs inside a single run with a depth limit and a cycle guard. It is on the Pro plan and above. |
| Calling an external MCP server | Custom MCP block, or an MCP server attached to an agent as a tool | On the Pro plan and above. The reverse direction does not map, see below. |
The one concept that changes shape
n8n now builds agents as standalone artifacts in a project, with a publish history you can restore or revert, so the shape is closer than it used to be. The difference left is where the version is chosen.
n8n's restore acts on the agent: you move the agent back to an earlier version, and every workflow using it follows.
Here the version is chosen by the workflow block. You build the agent once in your workspace, publish it, and each block references the agent and an exact version. Publishing version four does nothing to the workflows pinned to version three until you promote them, so a shared agent can be updated for one workflow without touching the rest. The agent's own page tells you which workflows use it.
Practically, that changes the order you work in. Build and publish the agent, then drop it into a workflow, rather than configuring an agent inside the workflow that needed it.
What does not map
These have no equivalent here. If one of them is load bearing in your setup, do not start the migration.
Self-hosting does not map. There is no way to run SMELT Studio on your own hardware. n8n's Community edition is free to self-host and we have nothing comparable.
Python in the Code node does not map. The Code block runs JavaScript only.
Community nodes and npm packages do not map. The Code block installs nothing and has no network access. Anything external goes through the HTTP block, where it is visible on the canvas.
Acting as an MCP server does not map. n8n documents a trigger for it:
Use the MCP Server Trigger node to allow n8n to act as a Model Context Protocol (MCP) server, making n8n tools and workflows available to MCP clients.
We can call an external MCP server as a tool. We cannot be one, so another AI client cannot reach in and run your workflow that way.
Git-based source control and environments do not map. Workflow versions live in the app, and you can compare and restore them there. There is no branch, no pull request and no promotion between environments.
A built-in table of rows does not map. There is no store for structured data between runs. Use a database you already own and reach it over HTTP.
Graded evaluations do not map. There is nowhere in the app to build a test set for an agent and score it.
The answer to "do you support X"
If X has a REST API, you can reach it today. The HTTP block calls any endpoint, with your own headers, query parameters and JSON body, and the response comes back as a typed output the next block can reference.
It is guarded rather than open. The host is resolved once, private, loopback and link-local addresses are refused, and the request is then sent to the address that was checked, with the original host header preserved. A DNS answer that changes underneath you does not turn into an SSRF against our network or yours.
Inbound, a webhook trigger gives a workflow its own ingest URL and a signing secret you send in the x-webhook-secret header, and a Respond to Webhook block lets the workflow answer the caller in the same request. Schedule, form, chat and manual triggers sit alongside it, as do triggers for the providers in the palette.
This is a capability, not an apology for a short list. It is also why we do not publish a connector count: it would be a scoreboard for a game we deliberately are not playing.
What a run costs, while it is running
Runs are metered in credits. Each block reports its credits and duration as it finishes, the trace shows the credits a delegated agent call consumed, and your workspace usage shows credits drawn against the monthly allowance on your plan. The number is in the app while the work happens rather than on a model provider invoice four weeks later.
This is not a claim about being inexpensive, and we would rather you did not read it as one. It is one predictable number covering orchestration, inference, retries and key management. If your objection is price per token, connect your own OpenAI or Anthropic key and the meter stops entirely.
Plans are monthly. See pricing for the allowances on each tier.
After you have rebuilt one
Run it a few times and open the trace. Run history is kept for thirty days on every plan, so give it a fortnight of real traffic before deciding whether the second workflow is easier to build than the first. That is the only question this product is trying to win.
The full comparison, including where n8n is the better buy, is on the n8n comparison page.
What we do not have
Better you read this from us than find it in a comment thread. Each of these ends some evaluations, and it should.
- No self-host. There is no way to run SMELT Studio on your own infrastructure. Our typed contracts are published and inspectable, so the shape of the architecture is not a secret, but that is weaker than being able to run the thing yourself and we are not going to dress it up as an advantage.
- No Data Tables. There is no built-in store for structured rows between runs. Keep that state in a database you already own and reach it over HTTP.
- No evaluations surface. There is no place in the app to assemble a test set for an agent, score it, and watch the score move when you change a prompt. If a graded regression suite is a condition of putting an agent near a customer, we do not meet it yet.
- No embeddable chat widget. You cannot drop a SMELT chat onto your own website. A hosted form is the only public entry point we offer, and it is a form, not a conversation.
- No MCP server. SMELT can call an external MCP server as a tool. It cannot be one, so another AI client cannot reach into SMELT and run your workflow that way.
- Agent memory is a capped list. An agent decides what to remember, and recall is by semantic search rather than a raw read-back. The list is still capped per agent, and the least recently used entries fall off the end. Treat it as recall between runs, not as a knowledge store.
If one of these is a condition of your buying, say so at [email protected] rather than working around it.
Sources
Every claim about another product on this page is checked against that product's own published pricing or documentation, and the date of the last check is recorded in this page's source. Competitors ship quickly, and a page like this goes stale by default rather than by neglect. If something here has gone out of date, tell us at [email protected] and we will correct the page.
Try it against your own workflow
The free tier runs real workflows. Build the one you are unhappy with elsewhere and see whether the second change is easier than the first.