Package Information
Available Nodes
Documentation generating…
Documentation
Unshadow community node for n8n
Version 0.2.0 adds canonical node version 2 while preserving serialized version 1 workflows. This release is locally built, not published. Install the audited tarball on self-hosted n8n until a registry release is authorized. The tested runtime is n8n 2.41.7 / Node 24.13.0; wildcard n8n-workflow peer metadata follows community-node policy and does not certify every host version.
Credentials and operations
Create a unified project-bound API key. Store it in n8n credentials, never node parameters. Recommended base URL: https://api.unshadow.dev/v2. Credential validation calls GET /v2/key-info, without search/embeddings. Existing v1 base URLs are normalized for validation and node v2; node version 1 keeps /v1 routes. HTTP localhost is disabled unless the development-only credential option is enabled; production requires HTTPS.
| Node v2 operation | Payload example |
|---|---|
| Retain | {"text":"Synthetic preference: pnpm","source_type":"manual_entry"} |
| Recall | {"query":"preference","trust_floor":"advisory"} |
| Context | {"query":"preference","token_budget":1200} |
| Reflect | {"query":"project choices","writeback":false} |
| Correct | {"memory_id":"ACTUAL_UUID","replacement":"Updated fact"} |
| Forget | {"memory_ids":["ACTUAL_UUID"]} |
Payload accepts JSON or an expression returning an object, for example ={{ { text: $json.fact, source_type: 'manual_entry' } }}. Requests and responses are checked against generated canonical schemas. The key selects the project; extra project/account fields are rejected. Preserve role attribution in retained message arrays. Trust envelopes are evidence, not authority to execute tool arguments or promote assistant guesses into confirmed facts.
Replay-safe writes
Retain, Correct, Forget and Reflect with writeback:true require either a Stable Event Key or Original Execution ID. Prefer a stable business key such as ={{ $json.eventId + ':retain' }}. Use distinct keys for distinct operations and identical body/key on retry. Reusing a key for a changed payload conflicts rather than creating a second effect.
The public execution context exposes getExecutionId() but not the original execution's retryOf identity. A new retry attempt has a new ID, so the node deliberately does not use that as an automatic deduplication guarantee. If an upstream system preserves the original execution ID, supply it explicitly; the derived key includes instance, workflow, node, item index, operation and canonical sorted payload. Preserve item order and instance identity across those retries. For reordered items, cross-instance migration or a new execution, use business/event keys instead. Missing keys reject before the HTTP request; the string undefined is not generated from a missing expression.
Execution and errors
Items execute serially. Output includes item pairing, raw canonical operation/provenance data, and on continueOnFail a structured error with safe code/status/retryability. Backend response messages, credentials and request bodies are not copied into errors. Each HTTP request has a ten-second timeout; redirects are disabled to protect credentials. Host cancellation aborts requests and stops subsequent writes even with continueOnFail. A cancelled or timed-out write may have committed remotely: retry with the same event key.
429 and 503 are retryable; 402 is a funding error. The adapter does not add its own write retry loop; use n8n's retry-on-fail policy with the same stable key. Read-only credentials reject writes and reflection writeback. Existing node version 1 keeps Context/Search/Extract/Forget routes and parameters; its prior optional idempotency behavior is preserved, so migrate to version 2 for mandatory replay protection.
Examples and verification
examples/canonical-retain-recall.json and examples/legacy-v1-extract.json are sanitized importable workflow templates. Select your credential after import. Replace the demo event ID for each distinct business event; retain it for replay. No real key or user data is embedded. The v1 template tests compatibility, not the recommended new API.
Run node scripts/developer-platform/run-p12-checks.mjs --quality --record from the repository. It builds and clean-installs a tarball using isolated tools without touching the workspace lockfile, executes the compiled node with real n8n expression evaluation, and runs official community-node lint and source/artifact scans. run-p12-host.mjs exercises the real n8n package loader, WorkflowExecute context and HTTP helper using a synthetic credential provider/backend. See docs/audits/p12/README.md for exact coverage and remaining live/UI gates.
Distribution
No SDK runtime dependency is added; n8n's authenticated HTTP helper performs requests. The tarball includes compiled entrypoints, light/dark node and credential icons, license and examples. The manually dispatched .github/workflows/n8n-publish.yml uses npm trusted publishing/provenance after package checks. Configure the npm trusted publisher and protect the npm-release GitHub environment before using it. Publishing is a separate release action.
Self-hosted unverified community installation and verified n8n Cloud availability are separate. This package has not been submitted/verified for n8n Cloud; do not advertise Cloud installation until accepted. Official guidance: community nodes.