n8n/packages/cli
Garrit Franke 35fe5daef1
perf(editor): gate node search behind a per-user rate limit and process-wide concurrency cap
Ports the multi-tenant containment from #30294:

- GET /workflows/search-nodes is rate limited per user (120/min); the
  client debounces its keystrokes, which no human can sustain past this
  ceiling.
- The service runs at most one scan per process (pLimit(1)) with a short
  queue of 4, shedding excess with 429. A per-user rate limit cannot
  bound load on a shared database: #30294 measured 66x (SQLite) / 56x
  (Postgres) workflow-list degradation from 20 users each inside their
  own limit; capped at one concurrent scan the same scenario measured
  ~1.3x. In multi-main setups the ceiling is per instance, which is the
  intent: it bounds what a single process can demand of the shared DB.

The command-bar composable already treats a failed request as empty
results, so a shed search degrades gracefully client-side.

Verified: service unit 19/19, integration 23/23 (new shed test) on both
SQLite and Postgres 16; controller unit 11/11; typecheck + lint clean.
2026-08-12 16:36:53 +02:00
..
bin
scripts docs(API): Generate OpenAPI docs from Zod DTOs and PublicApiController decorators (#34540) 2026-08-04 08:00:54 +00:00
src perf(editor): gate node search behind a per-user rate limit and process-wide concurrency cap 2026-08-12 16:36:53 +02:00
templates feat(Form Trigger Node): Add credential connect UI for end-user credentials (#35347) 2026-08-05 10:14:11 +00:00
test perf(editor): gate node search behind a per-user rate limit and process-wide concurrency cap 2026-08-12 16:36:53 +02:00
AGENTS.md chore(core): Lock the @n8n/typeorm import ratchet and document the boundary (no-changelog) (#34370) 2026-07-21 08:26:21 +00:00
BREAKING-CHANGES.md
eslint.config.mjs refactor(API): Migrate GET /workflows/{id} to the decorator pattern (no-changelog) (#35830) 2026-08-10 12:54:55 +00:00
nodemon.json
package.json feat(core): Migrate the instance MCP server to the MCP TypeScript SDK v2 (#35467) 2026-08-07 01:16:47 +00:00
tsconfig.build.json feat: Add @n8n/telemetry event registry with typed track() support (no-changelog) (#34662) 2026-07-23 16:09:54 +00:00
tsconfig.json feat: Add @n8n/telemetry event registry with typed track() support (no-changelog) (#34662) 2026-07-23 16:09:54 +00:00
vitest.config.base.ts feat: Add @n8n/telemetry event registry with typed track() support (no-changelog) (#34662) 2026-07-23 16:09:54 +00:00
vitest.config.integration.testcontainers.ts chore: Remove references to Jest (#33282) 2026-07-01 09:03:25 +00:00
vitest.config.integration.ts refactor(core): Tidy agent-eval runner and rating-persistence internals (no-changelog) (#35424) 2026-08-04 10:42:20 +00:00
vitest.config.migration.testcontainers.ts chore: Remove references to Jest (#33282) 2026-07-01 09:03:25 +00:00
vitest.config.migration.ts chore: Remove references to Jest (#33282) 2026-07-01 09:03:25 +00:00
vitest.config.ts test: Migrate cli package from Jest to Vitest (#31804) 2026-06-29 21:19:56 +03:00
vitest.tsc-entity-transform.ts chore: Consolidate ts tooling catalog (#34310) 2026-07-16 10:10:12 +00:00
vitest.workspace-externals.ts test: Migrate cli package from Jest to Vitest (#31804) 2026-06-29 21:19:56 +03:00