An n8n community node package that adds a Poolside Chat Model sub-node, connecting Poolside's Laguna models to n8n's AI Agents and chains through Poolside's OpenAI-compatible inference API.
It is a thin wrapper: your parameters are passed through to the endpoint as-is. There is no request or response rewriting.
Install from within n8n:
- Go to Settings → Community Nodes.
- Select Install a community node.
- Enter the package name
@poolsideai/n8n-nodes-poolside. - Agree to the risks of installing community nodes and select Install.
After installation the node appears in the nodes panel under AI → Language Models.
For self-hosted installs you can also install it manually:
mkdir -p ~/.n8n/nodes
cd ~/.n8n/nodes
npm install @poolsideai/n8n-nodes-poolsideThen restart n8n.
- Sign in to platform.poolside.ai.
- Open the API Keys tab.
- Select New key and copy the value.
The key is shown only once — store it somewhere safe before closing the dialog. If you lose it, create a new key.
Create a Poolside credential in n8n with:
| Field | Description |
|---|---|
| API Key | The key from platform.poolside.ai. Sent as Authorization: Bearer <key>. |
| Base URL | Defaults to https://inference.poolside.ai/v1. Editable — see Self-hosted deployments. |
The credential test issues GET {baseUrl}/models; a green check means the key and base URL are both good.
- Add an AI Agent (or any chain node that takes a language model) to your workflow.
- Click the Model connector below the Agent.
- Choose Poolside Chat Model.
- Select your Poolside credential.
- Pick a model from the Model dropdown — the list is loaded live from
GET /modelson your configured base URL.
Tool calling works through the Agent's normal tool connections, since Poolside's API is OpenAI-shaped.
All options are optional; leave the collection empty to use the endpoint's defaults.
| Option | Default | Notes |
|---|---|---|
| Sampling Temperature | 0.7 |
Range 0–2, one decimal place. Lower is more deterministic. |
| Maximum Number of Tokens | -1 |
Max tokens to generate. -1 leaves it unset. Laguna models cap output at 32,768 tokens. |
| Timeout | 360000 |
Maximum request duration in milliseconds. |
| Max Retries | 2 |
Number of retry attempts on a failed request. |
| Thinking | true |
Whether the model reasons before answering. Sent as chat_template_kwargs.enable_thinking. See Thinking and structured output. |
Laguna models have native reasoning, and Poolside Platform enables thinking by default. The reasoning text arrives in the message content, which breaks n8n nodes that need a strictly formatted reply.
If you see:
Model output doesn't fit required format
…on one of these nodes, turn Thinking off in the Poolside Chat Model's options:
- Text Classifier
- Information Extractor
- Sentiment Analysis
- Any chain using a Structured Output Parser
These nodes prompt for bare JSON and then parse the message text. When thinking is on, the reply can lead with reasoning prose, so parsing fails. Because it depends on how the model chooses to reason about each input, the failure is often intermittent — some items succeed and a later one fails.
Turning Thinking off also makes tool calling more reliable, particularly when forcing a specific call with tool_choice.
Leave Thinking on for open-ended reasoning work: AI Agent steps, code analysis, and generation, where the reasoning improves quality and no rigid output shape is required.
If you leave the option untouched, the node sends nothing and the endpoint's own default applies. Setting it explicitly to true requests thinking regardless of the endpoint default.
Note on reasoning content: the node does not post-process responses, so
reasoning_contentreturned by the API is not re-sent on follow-up requests. Poolside recommends preserving it across turns in agentic workflows; if you hit quality issues in long multi-step agent runs, this is the likely cause.
If you run Poolside in your own environment, override Base URL on the credential to point at your deployment's OpenAI-compatible endpoint:
https://<deployment-host>/openai/v1
The model picker and the credential test both follow this override, so the dropdown lists the models your deployment actually serves.
- Node.js
>=22.22, and run n8n on a Node version n8n itself supports. See Connection error below — newer Node releases than n8n supports break outbound requests for all AI nodes, not just this one. - Requires an n8n version in which community chat-model sub-nodes can connect to the AI Agent's Model input — i.e. AI Agent v2 or newer. Older n8n versions allow-listed only built-in models on that input, so a community chat model will not connect there.
If the node fails immediately with a bare Connection error. and no HTTP status, check the Node version running n8n:
node --versionn8n 2.32 declares engines.node: >=22.22. On Node 24+ or 26, requests fail before leaving the process with an internal invalid onError method, surfaced in the UI as Connection error.
The cause is a dependency mismatch inside n8n, not in this package. @n8n/ai-utilities pins undici@^6, while recent Node versions bundle an undici@7-era fetch internally. When the SDK hands its undici@6 dispatcher to the newer global fetch, the handler interface no longer matches and the request is rejected.
This affects every n8n AI node that routes through getProxyAgent, including the built-in OpenAI Chat Model — so if Poolside fails this way, the built-in nodes will too.
Fix: run n8n on a supported Node version.
# Homebrew
brew install node@22
PATH="$(brew --prefix node@22)/bin:$PATH" npx n8n
# nvm
nvm install 22 && nvm use 22 && npx n8n- Requires an n8n version that provides
@n8n/ai-node-sdk. This package has zero runtime dependencies and uses n8n's official AI node SDK, supplied by the host. See Zero runtime dependencies. - No response post-processing. Reasoning output is passed through as the API returns it; see Thinking and structured output.
reasoning_contentis not echoed back on follow-up requests. Poolside recommends preserving it across turns in agentic workflows; if you hit quality issues in long multi-step agent runs, this is the likely cause.
This package declares no runtime dependencies, which n8n's verified-community-node
rules require. It builds the chat model through n8n's official AI node SDK:
"n8n": { "n8nNodesApiVersion": 1, "aiNodeSdkVersion": 1 },
"peerDependencies": { "@n8n/ai-node-sdk": "*", "n8n-workflow": "*" }@n8n/ai-node-sdk is supplied by the host n8n installation, so nothing extra is
installed alongside the node. Using it means the model is constructed from the same
@langchain/openai copy n8n itself loads, and n8n's token-usage tracing, proxy
support and retry handling are wired up automatically.
Publishing uses npm trusted publishing: the
workflow authenticates with a short-lived OIDC token instead of a stored npm token, and
npm generates provenance automatically. There is no NPM_TOKEN secret to manage.
npm cannot create a new package via OIDC — a trusted publisher can only be configured on a package that already exists. So the first version must be published once by hand.
Provenance is skipped here because it requires a CI OIDC provider and cannot be generated from a local machine:
npm login
npm publish --provenance=falseIf your ~/.npmrc maps the @poolsideai scope to another registry (GitHub Packages,
for example), override it for this command so the package reaches npmjs:
npm publish --provenance=false --@poolsideai:registry=https://registry.npmjs.orgThen configure the trusted publisher on npmjs.com under the package's Settings → Trusted Publisher:
| Field | Value |
|---|---|
| Publisher | GitHub Actions |
| Organization or user | poolsideai |
| Repository | n8n-poolside-node |
| Workflow filename | publish.yml (filename only, no path) |
| Environment name | leave blank |
| Allowed actions | npm publish |
All fields are case-sensitive and must match exactly.
- Bump the version and commit.
- Tag it and push:
git tag v0.1.1 && git push origin v0.1.1 - Create a GitHub Release from the tag.
The workflow then runs typecheck → lint → build → smoke test → npm publish, with no
credentials involved.
- GitHub-hosted runner. Self-hosted runners are not supported.
id-token: writepermission on the job.- npm >= 11.5.1. Node 22 bundles npm 10.x, so the workflow runs
npm install -g npm@latestfirst; without it npm silently falls back to token auth. repository.urlmust match the GitHub repo exactly, or provenance fails.- Public repository. Provenance is not generated from private repos, even for public packages.
npm install # install dependencies
npm run typecheck # tsc --noEmit
npm run build # compile to dist/ and copy the icon
npm test # smoke test the compiled output
npm pack # produce a tarball for local installationTo try the tarball in a live n8n instance:
npm pack
mkdir -p ~/.n8n/nodes
cd ~/.n8n/nodes
npm install /path/to/poolsideai-n8n-nodes-poolside-0.1.2.tgzThen restart n8n.