Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
15 contributors

Users who have contributed to this file

@janober @tanay1337 @thomasleveil @BHesseldieck @ivov @that-one-tom @YEriin @philclifford @netroy @mieky @manojtrek @alexgrozav

Contributing to n8n

Great that you are here and you want to contribute to n8n


Code of conduct

This project and everyone participating in it are governed by the Code of Conduct which can be found in the file By participating, you are expected to uphold this code. Please report unacceptable behavior to

Directory structure

n8n is split up in different modules which are all in a single mono repository.

The most important directories:

Development setup

If you want to change or extend n8n you have to make sure that all needed dependencies are installed and the packages get linked correctly. Here a short guide on how that can be done:



We suggest using Node.js version 16.9 or newer for development purposes.

After that we recommend enabling Node.js corepack with corepack enable, and pnpm with corepack prepare pnpm --activate.

IMPORTANT: If you have installed Node.js via homebrew, you'll need to run brew install corepack, since homebrew explicitly removes npm and corepack from the node formula.

IMPORTANT: If you are on windows, you'd need to run corepack enable and corepack prepare pnpm --activate in a terminal as an administrator.

Build tools

The packages which n8n uses depend on a few build tools:


apt-get install -y build-essential python


yum install gcc gcc-c++ make


npm add -g windows-build-tools

pnpm workspaces

n8n is split up in different modules which are all in a single mono repository. To facilitate the module management, pnpm workspaces are used. This automatically sets up file-links between modules which depend on each other.

Actual n8n setup

IMPORTANT: All the steps below have to get executed at least once to get the development setup up and running!

Now that everything n8n requires to run is installed the actual n8n code can be checked out and set up:

  1. Fork the n8n repository

  2. Clone your forked repository

    git clone<your_github_username>/n8n.git
  3. Go into repository folder

    cd n8n
  4. Add the original n8n repository as upstream to your forked repository

    git remote add upstream
  5. Install all dependencies of all modules and link them together:

    pnpm install
  6. Build all the code:

    pnpm build


To start n8n execute:

pnpm start

To start n8n with tunnel:

./packages/cli/bin/n8n start --tunnel

Development cycle

While iterating on n8n modules code, you can run pnpm dev. It will then automatically build your code, restart the backend and refresh the frontend (editor-ui) on every change you make.

  1. Start n8n in development mode:
    pnpm dev
  2. Hack, hack, hack
  3. Check if everything still runs in production mode
    pnpm build
    pnpm start
  4. Create tests
  5. Run all tests
    pnpm test
  6. Commit code and create a pull request

Test suite

The tests can be started via:

pnpm test

If that gets executed in one of the package folders it will only run the tests of this package. If it gets executed in the n8n-root folder it will run all tests of all packages.

Create custom nodes

IMPORTANT: Avoid use of external libraries to ensure your custom nodes can be reviewed and merged quickly.

Learn about using the node dev CLI to create custom nodes for n8n.

More information can be found in the documentation of n8n-node-dev, a small CLI which helps with n8n-node-development.

Create a new node to contribute to n8n

Follow this tutorial on creating your first node for n8n.

Checklist before submitting a new node

There are several things to keep in mind when creating a node. To help you, we prepared a checklist that covers the requirements for creating nodes, from preparation to submission. This will help us be quicker to review and merge your PR.

Extend documentation

The repository for the n8n documentation on can be found here.

Contributor License Agreement

That we do not have any potential problems later it is sadly necessary to sign a Contributor License Agreement. That can be done literally with the push of a button.

We used the most simple one that exists. It is from Indie Open Source which uses plain English and is literally only a few lines long.

A bot will automatically comment on the pull request once it got opened asking for the agreement to be signed. Before it did not get signed it is sadly not possible to merge it in.