Composite nodes

Hi all.

I would like to contribute an idea regarding ‘Composite nodes’.

The functionalities would comprise of (not limited to):

  • Group multiple nodes into a single composite node
  • The input of the 1st node of the group will become the input of the composite
    • Similarly, the last output(s) of the group will become the output(s) of the composite
  • This would be done from the main editor ui
  • Shouldn’t require custom nodes or dev work
  • To edit a composite node, one could just double-click/click on settings and a mini editor-ui/separate editor section would open up with only the comprising nodes

This will help by:

  • significantly reducing the time/increasing the convenience required to create the same set of, often used, nodes e.g.
    Composite Node1 =
    HTTP Request to a particular API -> Response formatting -> Another operation -> Output

  • Also, these composites should be easily ‘save-able’ within a sort of ‘my library’ via the main editor-ui

For inspiration, i’ve used another no-code tool, Appgyver, a demo of which is shown below:

I believe this can greatly improve a user’s efficiency along with further expanding the extensibility of n8n.

What do you guys think?

agree. building blocks to n8n are solid. the next step is to think of reuse in the platform.

the issue I see in thinking is currently nodes do not seemingly enforce or dictate their input interfaces

you could expose these black boxes of reuse as api…

maybe merge this idea with Store customized nodes for reusability

1 Like

@shrey-42 you’ve got my vote!

Internally, we have discussed such a feature including the ability to “promote” specific parameters to the parent workflow level. This way, when you open this composite node, you have a shortlist of the parameters that need to be configured.

Community members - please do upvote if you’d like to see this in n8n.

Meanwhile, @shrey-42 and @georgejeffcock have you used the Execute Workflow node yet? While it’s not exactly like composite/ grouped nodes, it would allow you to have modular workflows for common actions and reuse them across other workflows.

1 Like

“This way, when you open this composite node, you have a shortlist of the parameters that need to be configured.” exactly…this shift of thinking would be a departure from how n8n works but Interface-based programming - Wikipedia I think is a welcome pivot to get modular thinking and focus on scaling users development code base…less is more

That’s great to know, that this functionality is already in the pipeline.

Indeed, i do use it quite a bit.

3 Likes

To be honest, did I actually want to have that functionality in the first version of n8n already as I really believe in its power and what possibilities it would open. Especially also looking in what it enables in other tools like Nuke where they are called Gizmos.

Anyway, when I then however looked into what would be needed it implement, I realized that it would require quite some work (and so time) to do it properly, and so left it out for now. Think was the totally right decision back then, as you have to prioritzeif you ever want to launch. But now, that the team is growing and we have more resources available it is definitely something we will look into again.
Sadly however no ETA yet, as we are also working on so many other features already which right now have higher priority, like for example user management. The reason for that is that the lack of them currently blocks the broader adoption of n8n. And even though I agree that having these composite nodes would be super amazing, does the lack of them not mean that somebody would not start using n8n.
So please bear with us, we do our best to get this and other great features out as fast as possible.

Looking forward to the cool composite nodes the community will build once they are ready. In the meantime also happy about any suggestions of how we should name them as naming something is very often one of the hardest parts :wink:

6 Likes

@jan EXACTLY

u have got to a great position where u have enthusiastic community demanding more as they like the product, imagine if they did not.

Stick to your guns currently of more mvp, table stakes functionality BUT build them in a way that does not prevent these future requests ever being realised because of base product technical debt making it impossible

Noted that n8n is not even version 1.0, it is 0.x

Reuse :recycle: will be top of the agenda for enterprise customers in the future and GOVERANCE

2 Likes

What would also be handy is if there is the possibility to display the flow itself directly in the current flow as a group and not as a single node.
As an example Davinci Fusion allows you to simply fold the groups together or unfold them again.

2 Likes

That’s a really cool idea!
+1 From me.

Maybe an easier solution to this problem would be to expand the functionality of the “Execute Workflow” node, like the following:

  • Basic additions:

    1. Add Search functionality to it:
      • like the in the insert function of the “MySQL” node, where you can search for tables in the MySQL database.
    2. Naming of the “Execute Workflow” node:
      • The Name or at least the description of the node which is shown in the Editor should change to the Name of the workflow it executes.
  • Advanced additions:

    1. Add Icons to workflows:
      • With adding user definable icons to workflows, the icon of the “Execute Workflow” node then could automatically change to the icon of the workflow it executes.
    2. Add UUID to workflows:
      • For easier sharing of workflows with this kind of functionality a UUID per workflow would be needed, as the current ID used for workflows changes depending on when it gets added to a n8n instance and how many workflows it has at that moment.

The most important changes for me would be 1 and 2, as those add the most value with the least effort.
3 would a really nice to have, as it adds quite some visual differentiation when multiple of those nodes get used.

The following feature request is mostly the same and could be merged with this topic:

1 Like

This idea just wouldn’t leave me alone last night.

In the last 5 hours, I somewhat learned how to create a custom node and created a mashup of the ‘Execute Workflow’ node and the ‘N8N API’ node.
(The code for it is a total mess right now …)
I cannot get the description of the node to change to the name, only to the ID of the workflow /:

But I’ve already used it in the last hour (only on the local testing instance) for some splitting up workflows, and it is really nice when selecting a workflow, as long as it has a good name :sweat_smile:.

1 Like

Hello @jan. Two years later do you still plan on working on ways to create more reusable “composite nodes” that could declare their inputs / outputs ?

That’s the last very powerfull addition missing to make n8n the ultimate automation platform IMO :smile:

I am once again having need for that idea as i have a row nodes that I want to use multiple times in different places.

It feels like there is no good way to handle that situation as i only see the following options:

  • A: Copy the nodes → Just like copy pasting the same code it is messy and may lead to inconsistency
  • B: Use Execute Workflow → As I don’t have a node-like view of the in/out format it feels messy and attracting bugs

In my dreams I could use this functionality to build a library of sort of custom nodes that are just another workflow. This would make n8n faster and more easy to use as well as feel not as messy, more cleand-up, stable and production like.
Right now without this it makes my workflows often feel like the package in this xkcd.

2 Likes