Package Information
Downloads: 0 weekly / 0 monthly
Latest Version: 0.1.11
Author: Trustplane Core Team
Documentation
n8n-nodes-trustplane
Community-style n8n node package for Trustplane-signed n8n workflows.
Status
- Current version:
0.1.11 - Stable demo path:
Trustplane HTTP Requestin default mode - Optional migration path: HTTP Request compatibility mode
Scope (v1)
- Trustplane-signed outbound HTTP requests
- Manual credentials (tenant/api/client/key/private key)
- Auto-enroll operation via trust-anchor proof (
POST /enroll-requests) - Response mapping with Trustplane decision headers
Install
Self-hosted n8n from npm
In n8n:
Settings->Community Nodes- Install package:
n8n-nodes-trustplane - Restart n8n if prompted
Local dev from this repository
From this repository root:
./scripts/wedge3_demo_up.sh
This starts self-hosted n8n and mounts this package as a custom extension.
Release
Before publishing:
cd integrations/n8n-nodes-trustplane
npm ci
npm run release:check
Publish:
From repository root:
./scripts/publish_n8n_node.sh
Or manually:
cd integrations/n8n-nodes-trustplane
npm ci
npm test
npm pack --dry-run
npm publish --access public
Release checklist:
- Bump
package.jsonversion using semver. - Add a changelog entry in
CHANGELOG.md. - Run
npm run release:check. - Verify example workflow JSON files still import cleanly.
- Publish to npm.
- Update any docs/runbooks that mention the previous version.
Node Operations
Trustplane HTTP Request
Signed Request
- Builds canonical signing path from URL (or optional override)
- Signs proof and generates
x-tp-*headers - Sends request to target API
- Returns response data plus Trustplane decision metadata:
tp.decisiontp.reasontp.requestIdtp.auditId(alias oftp.requestId)tp.auditUrl(ifauditBaseUrlconfigured)signedRequest(full signed packet for deterministic replay demos)
- On non-2xx responses, throws an execution error in n8n with status/decision/reason/request id (unless "continue on fail" is enabled)
Compatibility mode:
- Optional toggle for users migrating from n8n's built-in
HTTP Requestnode - Adds native-feeling request fields:
- query params JSON
- request headers JSON
- body mode: none / JSON / text
- Adds richer output metadata:
http.statusCodehttp.headershttp.methodhttp.url
- Default Trustplane mode remains unchanged to preserve existing happy paths
Replay/stale demo options:
Replay Signed Request From Input=true:- resends
method,url,headers, andbodyfrom input JSON without re-signing
- resends
Use Signing Overrides From Input=true:- reads
nonce,timeBucket,sessionIdfrom input JSON before signing - useful for stale timestamp / deterministic security demos
- reads
Auto Enroll (Trust Anchor)
- Checks for existing auth material first:
- workflow cached key (same control URL + tenant + client + API + proof kind)
- credential key (if tenant/client/API match)
- If found and still fresh (within
Expected Key TTL Secondsminus refresh skew), reuses it and skips new enrollment. - If not found (or
Force Re-Enroll=true), generates a fresh Ed25519 keypair and callsPOST /enroll-requestswith:tenant_idclient_idpublic_key_b64urlproof_kindproof_payloadauto_approve
- Returns:
enrollment.requestIdenrollment.keyIdreused+reuseSource(workflow_cacheorcredential) when reusedtpAuthobject (tenant/api/client/key/privateKey/publicKey + localenrolledAt/keyExpiresAt) for downstreamSigned Requestnodes
Recommended demo settings:
Expected Key TTL Seconds = 1800Refresh Skew Seconds = 60
Production sizing note:
- Server key TTL and max active keys are enforced by Trustplane (
CLIENT_KEY_TTL_SECONDS,MAX_ACTIVE_KEYS_PER_CLIENT). - Short client-side refresh intervals can exhaust active keys.
- Capacity rule:
required_clients = ceil((server_key_ttl_seconds / client_rotation_seconds) / max_active_keys_per_client)
Autonomous proof notes:
oidc: requires a fresh OIDC JWT (replay protection applies).aws_iid: ifProof Payloadis empty andUse TP_OIDC_TOKEN Env Fallback=true, node auto-fetches EC2 IID document+signature from IMDSv2.
Credentials
Credential type: Trustplane API
tenantIdapiIdclientIdkeyIdauditBaseUrl(optional, for audit deep-links)privateKey(base64url Ed25519 private key)bucketSeconds
Quick Start
Existing happy path
- Create a
Trustplane APIcredential with your tenant / api / client / key / private key. - Add
Trustplane HTTP Request. - Use
Signed Request. - Set
Method,URL, optionalPath Override, and optional JSON body.
Auto-enroll happy path
- Add
Trustplane HTTP Request. - Set
Operation = Auto Enroll (Trust Anchor). - Use your tenant/client/api IDs and trust-anchor proof settings.
- Feed the output
tpAuthobject into a downstreamSigned Requestnode.
HTTP compatibility mode
- Enable
HTTP Request Compatibility Mode. - Set
MethodandURL. - Put query params in
Query Params (JSON)if needed. - Put headers in
Request Headers (JSON). - Choose
Body Mode:NoneJSONText
- Keep Trustplane auth material via credential or upstream
tpAuth.
Example Target Routes
For the marketplace wedge demo, use routes behind the existing mock gateway:
GET /api/crm/customersGET /api/crm/contactsGET /api/crm/dealsPUT /api/crm/deals/:idPOST /api/crm/workflows/:id/triggerGET /api/crm/contacts/export
Canonical Workflows
examples/wedge3-allowed-auto-enroll.jsonexamples/wedge3-denied-scope.jsonexamples/wedge3-denied-replay.jsonexamples/wedge3-denied-stale.jsonexamples/wedge3-rate-limit.jsonexamples/wedge3-agent-tool-customers.json(tool workflow)examples/wedge3-ai-agent-orchestrator.json(AI Agent + tool wiring)
AI Agent Wiring (n8n built-in Agent node)
For agent-native demos, import both workflow templates above:
wedge3-agent-tool-customers.jsonis called as a tool and performs Trustplane auto-enroll + signed customer fetch.wedge3-ai-agent-orchestrator.jsonuses:AI Agent(@n8n/n8n-nodes-langchain.agent)OpenAI Chat Model(@n8n/n8n-nodes-langchain.lmChatOpenAi)Call n8n Workflow Tool(@n8n/n8n-nodes-langchain.toolWorkflow)
- Set the tool node
workflowIdto the imported tool workflow ID. - Agent output should include
decision,reason,request_id, andaudit_urlfrom tool data for demo evidence.
Troubleshooting
Workflow is not active and cannot be executed
- Activate the workflow used by
Call n8n Workflow Tool - Ensure it starts with
When Executed by Another Workflow
auto_enroll_not_approved
- Check trust anchor issuer/account/region constraints
- For
aws_iid, verify IMDSv2 access from the n8n host - Check the
reasonvalue returned in the node error
Trustplane request denied/failed
- Inspect:
statustp.decisiontp.reasontp.requestId
- Then open the
audit_urlif configured
Webhook HTML mode returns undefined
- Your previous node must return
json.html Respond to Webhookshould use{{$json.html}}- Add header:
Content-Type: text/html; charset=utf-8
Visual Webhook Mode (optional)
For a browser-friendly demo page:
- Start from
wedge3-allowed-auto-enroll.json. - Replace trigger with
Webhook(GET, respond usingRespond to Webhooknode). - Final code node returns
{ json: { html: "<html>...</html>" } }. Respond to Webhookreturns{{$json.html}}with headerContent-Type: text/html; charset=utf-8.