{ "name": "n8n", "version": "2.20.0", "description": "n8n Workflow Automation Tool", "main": "dist/index", "types": "dist/index.d.ts", "scripts": { "clean": "rimraf dist .turbo", "typecheck": "tsc --noEmit", "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && pnpm run build:data", "build:data": "node scripts/build.mjs", "buildAndDev": "pnpm run build && pnpm run dev", "dev": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch\" \"nodemon --delay 1\"", "dev:worker": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch\" \"nodemon worker\"", "dev:webhook": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch\" \"nodemon webhook\"", "format": "biome format --write .", "format:check": "biome ci .", "lint": "eslint . --quiet", "lint:fix": "eslint . --fix", "start": "node ../../scripts/os-normalize.mjs --dir bin n8n", "test": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest", "test:unit": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --config=jest.config.unit.js", "test:integration": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --config=jest.config.integration.js", "test:dev": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --watch", "test:sqlite": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --config=jest.config.integration.js --no-coverage", "test:sqlite:migrations": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --config=jest.config.migration.js --no-coverage", "test:sqlite:migrations:tc": "N8N_LOG_LEVEL=silent DB_SQLITE_POOL_SIZE=4 DB_TYPE=sqlite jest --config=jest.config.migration.testcontainers.js --no-coverage", "test:postgres": "N8N_LOG_LEVEL=silent DB_TYPE=postgresdb DB_POSTGRESDB_SCHEMA=alt_schema DB_TABLE_PREFIX=test_ jest --config=jest.config.integration.js --no-coverage", "test:postgres:migrations": "N8N_LOG_LEVEL=silent DB_TYPE=postgresdb DB_POSTGRESDB_SCHEMA=alt_schema DB_TABLE_PREFIX=test_ jest --config=jest.config.migration.js --no-coverage", "test:postgres:migrations:tc": "N8N_LOG_LEVEL=silent DB_TYPE=postgresdb DB_POSTGRESDB_SCHEMA=alt_schema DB_TABLE_PREFIX=test_ jest --config=jest.config.migration.testcontainers.js --no-coverage", "test:postgres:tc": "N8N_LOG_LEVEL=silent jest --config=jest.config.integration.testcontainers.js --no-coverage", "test:postgres:integration:tc": "N8N_LOG_LEVEL=silent jest --config=jest.config.integration.testcontainers.js --no-coverage --testPathIgnorePatterns=/test/migration/", "test:mariadb": "echo true", "test:win": "set N8N_LOG_LEVEL=silent&& set DB_SQLITE_POOL_SIZE=4&& set DB_TYPE=sqlite&& jest", "test:dev:win": "set N8N_LOG_LEVEL=silent&& set DB_SQLITE_POOL_SIZE=4&& set DB_TYPE=sqlite&& jest --watch", "test:sqlite:win": "set N8N_LOG_LEVEL=silent&& set DB_SQLITE_POOL_SIZE=4&& set DB_TYPE=sqlite&& jest --config=jest.config.integration.js", "test:postgres:win": "set N8N_LOG_LEVEL=silent&& set DB_TYPE=postgresdb&& set DB_POSTGRESDB_SCHEMA=alt_schema&& set DB_TABLE_PREFIX=test_&& jest --config=jest.config.integration.js --no-coverage", "test:mariadb:win": "echo true", "watch": "tsc-watch -p tsconfig.build.json --onCompilationComplete \"tsc-alias -p tsconfig.build.json\"" }, "bin": { "n8n": "./bin/n8n" }, "keywords": [ "automate", "automation", "IaaS", "iPaaS", "n8n", "workflow" ], "engines": { "node": ">=22.16" }, "files": [ "bin", "templates", "dist" ], "devDependencies": { "@n8n/backend-test-utils": "workspace:*", "@n8n/typescript-config": "workspace:*", "@redocly/cli": "^1.28.5", "@types/aws4": "^1.5.1", "@types/bcryptjs": "^2.4.2", "@types/compression": "^1.7.5", "@types/convict": "^6.1.1", "@types/cookie-parser": "^1.4.8", "@types/express": "catalog:", "@types/flat": "^5.0.5", "@types/formidable": "^3.4.5", "@types/json-diff": "^1.0.0", "@types/jsonwebtoken": "catalog:", "@types/lodash": "catalog:", "@types/psl": "^1.1.0", "@types/replacestream": "^4.0.1", "@types/shelljs": "^0.8.11", "@types/sshpk": "^1.17.4", "@types/superagent": "^8.1.9", "@types/swagger-ui-express": "^4.1.8", "@types/syslog-client": "^1.1.2", "@types/uuid": "catalog:", "@types/validator": "^13.7.0", "@types/ws": "^8.18.1", "@types/xml2js": "catalog:", "@types/yargs-parser": "21.0.0", "@vvo/tzdb": "^6.141.0", "concurrently": "^8.2.0", "esbuild": "^0.25.0", "ioredis-mock": "^8.8.1", "mjml": "^4.15.3", "n8n-containers": "workspace:*", "openapi-types": "^12.1.3", "ts-essentials": "^7.0.3" }, "dependencies": { "@1password/connect": "1.4.2", "@ai-sdk/anthropic": "2.0.61", "@apidevtools/json-schema-ref-parser": "12.0.2", "@aws-sdk/client-secrets-manager": "3.808.0", "@azure/identity": "catalog:", "@azure/keyvault-secrets": "4.8.0", "@chat-adapter/linear": "^4.26.0", "@chat-adapter/slack": "^4.26.0", "@chat-adapter/state-memory": "^4.26.0", "@chat-adapter/telegram": "^4.26.0", "@google-cloud/secret-manager": "5.6.0", "@modelcontextprotocol/sdk": "1.26.0", "@n8n/agents": "workspace:*", "@n8n/ai-node-sdk": "workspace:*", "@n8n/ai-utilities": "workspace:*", "@n8n/ai-workflow-builder": "workspace:*", "@n8n/api-types": "workspace:*", "@n8n/backend-common": "workspace:*", "@n8n/chat-hub": "workspace:*", "@n8n/client-oauth2": "workspace:*", "@n8n/config": "workspace:*", "@n8n/constants": "workspace:*", "@n8n/db": "workspace:*", "@n8n/decorators": "workspace:*", "@n8n/di": "workspace:*", "@n8n/errors": "workspace:*", "@n8n/expression-runtime": "workspace:*", "@n8n/instance-ai": "workspace:*", "@n8n/n8n-nodes-langchain": "workspace:*", "@n8n/permissions": "workspace:*", "@n8n/syslog-client": "workspace:*", "@n8n/task-runner": "workspace:*", "@n8n/typeorm": "catalog:", "@n8n/utils": "workspace:*", "@n8n/workflow-sdk": "workspace:*", "@n8n_io/ai-assistant-sdk": "catalog:", "@n8n_io/license-sdk": "2.25.0", "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-trace-otlp-proto": "^0.213.0", "@opentelemetry/instrumentation": "^0.213.0", "@opentelemetry/resources": "^2.6.0", "@opentelemetry/sdk-node": "^0.213.0", "@opentelemetry/sdk-trace-node": "^2.6.0", "@opentelemetry/semantic-conventions": "^1.40.0", "@parcel/watcher": "^2.5.1", "@rudderstack/rudder-sdk-node": "catalog:", "@sentry/node": "catalog:sentry", "aws4": "1.11.0", "axios": "catalog:", "bcryptjs": "2.4.3", "bull": "4.16.4", "cache-manager": "5.2.3", "change-case": "4.1.2", "chat": "^4.26.0", "class-transformer": "0.5.1", "class-validator": "0.14.0", "compression": "1.8.1", "convict": "6.2.5", "cron": "catalog:", "cookie-parser": "1.4.7", "csrf": "3.1.0", "dotenv": "17.2.3", "express": "5.1.0", "express-handlebars": "8.0.1", "express-openapi-validator": "5.5.3", "express-prom-bundle": "8.0.0", "express-rate-limit": "7.5.0", "fast-glob": "catalog:", "fast-json-patch": "catalog:", "flat": "5.0.2", "flatted": "catalog:", "formidable": "3.5.4", "handlebars": "4.7.9", "helmet": "8.1.0", "http-proxy-middleware": "^3.0.5", "infisical-node": "1.3.0", "ioredis": "5.3.2", "isbot": "3.6.13", "isolated-vm": "^6.0.2", "jose": "^6.2.2", "json-diff": "1.0.6", "jsonschema": "1.4.1", "jsonwebtoken": "catalog:", "ldapts": "4.2.6", "lodash": "catalog:", "luxon": "catalog:", "n8n-core": "workspace:*", "n8n-editor-ui": "workspace:*", "n8n-nodes-base": "workspace:*", "n8n-workflow": "workspace:*", "nanoid": "catalog:", "nodemailer": "catalog:", "oauth-1.0a": "2.2.6", "open": "7.4.2", "openid-client": "6.5.0", "otpauth": "9.1.1", "p-cancelable": "2.1.1", "p-lazy": "3.1.0", "p-limit": "^3.1.0", "pg": "catalog:", "picocolors": "catalog:", "pkce-challenge": "5.0.0", "posthog-node": "3.2.1", "prettier": "^3.6.2", "prom-client": "15.1.3", "psl": "1.9.0", "raw-body": "3.0.0", "reflect-metadata": "catalog:", "replacestream": "4.0.3", "samlify": "2.10.0", "semver": "7.5.4", "shelljs": "0.8.5", "simple-git": "catalog:", "source-map-support": "0.5.21", "sqlite3": "5.1.7", "sshpk": "1.18.0", "sucrase": "3.35.0", "swagger-ui-express": "5.0.1", "undici": "^7.16.0", "uuid": "catalog:", "validator": "13.15.22", "ws": "8.17.1", "xml2js": "catalog:", "xmllint-wasm": "3.0.1", "xss": "catalog:", "yaml": "catalog:", "yargs-parser": "21.1.1", "zod": "catalog:", "zod-to-json-schema": "catalog:" } }