n8n-nodes-nilai 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Robert Moore
3
+ Copyright (c) 2026 Nillion
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,20 +1,20 @@
1
1
  # n8n-nodes-nilai
2
2
 
3
- Use [Nillion **nilAI**](https://docs.nillion.com/build/private-llms/overview) — private LLM inference that runs inside a **Trusted Execution Environment (TEE)** — directly in your n8n workflows, with **built-in cryptographic verification** of every response.
4
-
5
3
  This is an [n8n community node](https://docs.n8n.io/integrations/community-nodes/). It lets you add private, verifiable AI to any workflow with nothing more than an API key.
6
4
 
5
+ It uses [Nillion nilAI](https://docs.nillion.com/build/private-llms/overview): a private LLM inference that runs inside a Trusted Execution Environment (TEE), with built-in cryptographic verification of both every response and the enclave itself.
6
+
7
7
  ## Why nilAI?
8
8
 
9
9
  Ordinary AI nodes send your data to a provider you have to trust. nilAI is different:
10
10
 
11
- - **Private by construction.** Models run inside a TEE (a hardware-isolated, encrypted enclave). The operator including Nillion cannot see your prompts or the model's output.
12
- - **Verifiable.** Every response is cryptographically signed *inside* the enclave. This node verifies that signature against the enclave's public key, so you can *prove* the answer came from a genuine Nillion TEE and was not altered in transit. The result is exposed as a `tee_verified` field.
13
- - **Drop-in.** nilAI is OpenAI-compatible, so anything you do with a normal LLM summarisation, classification, triage, extraction, Q&A works here, privately.
11
+ - **Private by construction.** Models run inside a TEE, a hardware-isolated, encrypted enclave. The operator, including Nillion, cannot see your prompts or the model's output.
12
+ - **Verifiable two ways.** Every response is cryptographically signed inside the enclave, and the node verifies that signature against the enclave's public key (`tee_verified`). The node also verifies the enclave's AMD SEV-SNP hardware attestation against AMD's certificate chain (`attestation_verified`), so you can prove the answer came from a genuine, attested Nillion TEE running the expected build, rather than just hoping it did.
13
+ - **Drop-in.** nilAI is OpenAI-compatible, so anything you do with a normal LLM (summarisation, classification, triage, extraction, Q&A) works here, privately.
14
14
 
15
15
  ### What is a TEE, briefly?
16
16
 
17
- A Trusted Execution Environment is a secure region of a CPU/GPU that runs code in an encrypted, hardware-isolated enclave. Data inside is invisible to the host operating system, the cloud provider and the operator. The hardware can produce a signed *attestation* proving which code is running and that it is genuinely inside a real enclave. nilAI runs LLMs inside TEEs and signs each response, turning "trust us" into "verify it yourself."
17
+ A Trusted Execution Environment is a secure region of a CPU or GPU that runs code in an encrypted, hardware-isolated enclave. Data inside is invisible to the host operating system, the cloud provider and the operator. The hardware can produce a signed *attestation* proving which code is running and that it is genuinely inside a real enclave. nilAI runs LLMs inside TEEs and signs each response, turning "trust us" into "verify it yourself."
18
18
 
19
19
  ## Installation
20
20
 
@@ -24,16 +24,17 @@ In n8n: **Settings → Community Nodes → Install**, then enter `n8n-nodes-nila
24
24
 
25
25
  ## Credentials
26
26
 
27
- Create a **nilAI API** credential and paste your API key. Get one for free at the [Nillion developer portal](https://developer.nillion.com/nilai). The base URL defaults to Nillion mainnet.
27
+ Create a **nilAI API** credential and paste your API key. Get one at the [Nillion developer portal](https://developer.nillion.com/nilai). The base URL defaults to Nillion mainnet.
28
28
 
29
29
  ## Usage
30
30
 
31
- Add the **nilAI** node, pick a model (loaded live from your endpoint), and enter a prompt. Output fields:
31
+ Add the **nilAI** node, pick a model (loaded live from your endpoint), set your **Instructions** (the task) and **Input** (the content to act on), and run. Output fields:
32
32
 
33
33
  | Field | Meaning |
34
34
  |---|---|
35
35
  | `text` | The model's response |
36
36
  | `tee_verified` | `true` if the response signature verified against the enclave's public key |
37
+ | `attestation` | The enclave's hardware-attestation result, including `attestation_verified` and the individual checks |
37
38
  | `signature` | The raw TEE signature (secp256k1 / ECDSA) |
38
39
  | `usage` | Token usage |
39
40
 
@@ -41,7 +42,10 @@ Turn off **Simplify Output** to receive the full raw nilAI response.
41
42
 
42
43
  ## How verification works
43
44
 
44
- nilAI signs each response inside the enclave (secp256k1 ECDSA over SHA-256). This node fetches the enclave's public key from `/v1/public_key`, reconstructs the exact signed bytes from the raw response, and verifies the signature — all locally, with no external dependencies.
45
+ Two independent checks, both run locally with no external dependencies:
46
+
47
+ - **Response signature (`tee_verified`).** nilAI signs each response inside the enclave (secp256k1 ECDSA over SHA-256). The node fetches the enclave's public key, reconstructs the exact signed bytes from the raw response, and verifies the signature.
48
+ - **Enclave attestation (`attestation_verified`).** The node fetches the enclave's AMD SEV-SNP attestation report, fetches the chip's certificate and AMD's certificate chain, and verifies the chain up to AMD's root, the report signature, the TCB values, that debug mode is off, the launch measurement against a known-good build, and that the report binds the live TLS session.
45
49
 
46
50
  ## Resources
47
51
 
@@ -50,14 +50,14 @@ class NilAi {
50
50
  ],
51
51
  properties: [
52
52
  {
53
- displayName: 'Model',
53
+ displayName: 'Model Name or ID',
54
54
  name: 'model',
55
55
  type: 'options',
56
56
  typeOptions: {
57
57
  loadOptionsMethod: 'getModels',
58
58
  },
59
- default: 'google/gemma-4-26B-A4B-it',
60
- description: 'The model to run inside the nilAI TEE. Loaded live from your nilAI endpoint.',
59
+ default: '',
60
+ description: 'The model to run inside the nilAI TEE. Loaded live from your nilAI endpoint. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
61
61
  },
62
62
  {
63
63
  displayName: 'Instructions',
@@ -67,7 +67,7 @@ class NilAi {
67
67
  rows: 2,
68
68
  },
69
69
  default: '',
70
- description: "What you want the model to do, e.g. 'Summarise this in 3 sentences and 3-5 key bullet points'.",
70
+ description: 'What you want the model to do, e.g. \'Summarise this in 3 sentences and 3-5 key bullet points\'',
71
71
  hint: 'Plain text — the task only. Keep your data out of here (put that in Input). Leave empty to send just the Input as-is.',
72
72
  },
73
73
  {
@@ -87,7 +87,7 @@ class NilAi {
87
87
  name: 'simplify',
88
88
  type: 'boolean',
89
89
  default: true,
90
- description: "Whether to return a clean result instead of nilAI's full raw response object.",
90
+ description: 'Whether to return a clean result instead of nilAI\'s full raw response object',
91
91
  hint: 'On: tidy output — just the answer, the verification results and token usage. Off: the complete raw nilAI response (every field), handy for debugging.',
92
92
  },
93
93
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-nilai",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Use Nillion nilAI — private LLM inference in a TEE, OpenAI-compatible — directly in n8n, with built-in cryptographic verification of every response.",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -13,22 +13,24 @@
13
13
  "confidential-computing"
14
14
  ],
15
15
  "license": "MIT",
16
- "homepage": "https://github.com/iamrobertmoore/n8n-nodes-nilai",
16
+ "homepage": "https://github.com/NillionNetwork/n8n-nilai-node",
17
17
  "author": {
18
18
  "name": "Robert Moore",
19
19
  "email": "iamrobertmoore@gmail.com"
20
20
  },
21
21
  "repository": {
22
22
  "type": "git",
23
- "url": "git+https://github.com/iamrobertmoore/n8n-nodes-nilai.git"
23
+ "url": "git+https://github.com/NillionNetwork/n8n-nilai-node.git"
24
24
  },
25
25
  "engines": {
26
- "node": ">=18.10"
26
+ "node": ">=22.0"
27
27
  },
28
28
  "main": "index.js",
29
29
  "scripts": {
30
30
  "build": "rm -rf dist && tsc && mkdir -p dist/nodes/NilAi dist/credentials && cp nodes/NilAi/nilai.svg dist/nodes/NilAi/nilai.svg && cp nodes/NilAi/nilai.svg dist/credentials/nilai.svg",
31
31
  "dev": "tsc --watch",
32
+ "typecheck": "tsc --noEmit",
33
+ "check-version": "node bin/check-version.js",
32
34
  "prepublishOnly": "npm run build"
33
35
  },
34
36
  "files": [
@@ -53,6 +55,7 @@
53
55
  "devDependencies": {
54
56
  "@types/node": "^20.11.0",
55
57
  "n8n-workflow": "^2.16.0",
58
+ "semver": "^7.7.2",
56
59
  "typescript": "^5.6.0"
57
60
  }
58
61
  }