The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"updatedAt": "2025-10-23T05:26:29.000Z",
"createdAt": "2025-10-09T15:32:09.113Z",
"id": "7ITq4YArmaV9dGTX",
"name": "Homelab IT Agent",
"active": false,
"isArchived": false,
"nodes": [
{
"parameters": {
"dataTableId": {
"__rl": true,
"value": "ikuRqUukZzbYdCtc",
"mode": "list",
"cachedResultName": "Homelab",
"cachedResultUrl": "/projects/DiQC0tGxFhuiK9UM/datatables/ikuRqUukZzbYdCtc"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name', ``, 'string') }}",
"ip_address": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('ip_address', ``, 'string') }}",
"port": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('port', ``, 'string') }}",
"access_url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('access_url', ``, 'string') }}",
"container_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('container_name', ``, 'string') }}",
"image_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('image_name', ``, 'string') }}",
"category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('category', ``, 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "name",
"displayName": "name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "ip_address",
"displayName": "ip_address",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "port",
"displayName": "port",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "access_url",
"displayName": "access_url",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "container_name",
"displayName": "container_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "image_name",
"displayName": "image_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "category",
"displayName": "category",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
-320,
-32
],
"id": "e857eaad-a9be-4ebe-8e37-a9103fa1cfb0",
"name": "Insert row in Homelab Data"
},
{
"parameters": {
"operation": "update",
"dataTableId": {
"__rl": true,
"value": "ikuRqUukZzbYdCtc",
"mode": "list",
"cachedResultName": "Homelab",
"cachedResultUrl": "/projects/DiQC0tGxFhuiK9UM/datatables/ikuRqUukZzbYdCtc"
},
"filters": {
"conditions": [
{
"keyName": "name",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Value', ``, 'string') }}"
}
]
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name', ``, 'string') }}",
"ip_address": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('ip_address', ``, 'string') }}",
"port": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('port', ``, 'string') }}",
"access_url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('access_url', ``, 'string') }}",
"container_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('container_name', ``, 'string') }}",
"image_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('image_name', ``, 'string') }}",
"category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('category', ``, 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "name",
"displayName": "name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "ip_address",
"displayName": "ip_address",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "port",
"displayName": "port",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "access_url",
"displayName": "access_url",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "container_name",
"displayName": "container_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "image_name",
"displayName": "image_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "category",
"displayName": "category",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
-192,
-32
],
"id": "16b2d64e-f364-4417-8482-9b97d5f41368",
"name": "Update row(s) in Homelab data"
},
{
"parameters": {
"operation": "upsert",
"dataTableId": {
"__rl": true,
"value": "ikuRqUukZzbYdCtc",
"mode": "list",
"cachedResultName": "Homelab",
"cachedResultUrl": "/projects/DiQC0tGxFhuiK9UM/datatables/ikuRqUukZzbYdCtc"
},
"filters": {
"conditions": [
{
"keyName": "name",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Value', ``, 'string') }}"
}
]
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('name', ``, 'string') }}",
"ip_address": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('ip_address', ``, 'string') }}",
"port": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('port', ``, 'string') }}",
"access_url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('access_url', ``, 'string') }}",
"container_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('container_name', ``, 'string') }}",
"image_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('image_name', ``, 'string') }}",
"category": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('category', ``, 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "name",
"displayName": "name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "ip_address",
"displayName": "ip_address",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "port",
"displayName": "port",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "access_url",
"displayName": "access_url",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "container_name",
"displayName": "container_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "image_name",
"displayName": "image_name",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
},
{
"id": "category",
"displayName": "category",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"readOnly": false,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
-64,
-32
],
"id": "f14726b6-88f6-4dec-bd88-e587bf1bb5ce",
"name": "Upsert row(s) in Data table"
},
{
"parameters": {
"operation": "get",
"dataTableId": {
"__rl": true,
"value": "ikuRqUukZzbYdCtc",
"mode": "list",
"cachedResultName": "Homelab IPs",
"cachedResultUrl": "/projects/DiQC0tGxFhuiK9UM/datatables/ikuRqUukZzbYdCtc"
},
"filters": {
"conditions": [
{
"keyName": "name",
"condition": "ilike",
"keyValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('conditions0_Value', ``, 'string') }}"
}
]
},
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
64,
-32
],
"id": "bf4db90e-8ce4-47c4-8bd4-3256f9ff4ba4",
"name": "Get specific row(s) in Homelab data"
},
{
"parameters": {
"operation": "get",
"dataTableId": {
"__rl": true,
"value": "ikuRqUukZzbYdCtc",
"mode": "list",
"cachedResultName": "Homelab",
"cachedResultUrl": "/projects/DiQC0tGxFhuiK9UM/datatables/ikuRqUukZzbYdCtc"
},
"returnAll": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Return_All', ``, 'boolean') }}"
},
"type": "n8n-nodes-base.dataTableTool",
"typeVersion": 1,
"position": [
192,
-32
],
"id": "e4152eb9-037b-4156-bd95-4d86d15aa296",
"name": "Get all row(s) in Homelab database"
},
{
"parameters": {
"inputSource": "passthrough"
},
"id": "d473e1c3-4344-4997-b2dc-5dbc1b7a2f9a",
"typeVersion": 1.1,
"name": "Start",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-800,
-256
]
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.query }}",
"options": {
"systemMessage": "=# \ud83d\udda5\ufe0f Homelab IT Agent\n### System Prompt \u2013 Revisi Anti-Loop\n\n---\n\n## \ud83c\udfaf Peran Utama\nKamu adalah **Homelab IT Agent**, asisten teknis yang dikontrol langsung oleh Ultimate Agent.\nTugasmu adalah **mengeksekusi langsung instruksi** dari Ultimate Agent **tanpa meminta persetujuan ulang**.\n\n---\n\n## \ud83e\uddf0 Kemampuan\n1. **Homelab Database Tool**\n - Melihat, menambah, memperbarui, dan menghapus data server/container.\n - Field utama: `name`, `ip_address`, `port`, `access_url`, `container_name`, `image_name`, `category`.\n\n2. **Homelab CLI Tool**\n - Menjalankan perintah CLI (via SSH) di server sesuai instruksi parent agent.\n - Mengembalikan output command, log, atau error ke parent agent.\n\n---\n\n## \u2699\ufe0f Aturan\n- **Jangan pernah meminta persetujuan ke user.**\n Anggap semua perintah dari Ultimate Agent sudah disetujui.\n- **Eksekusi langsung semua command atau operasi database** yang diterima.\n- Jika perintah gagal, kirimkan error-nya ke parent dengan format yang sama.\n- gunakan sudo ketika menggunakan docker\n- JANGAN BERHALUSINASI, jika unsure dengan apa yang dikerjakan, lapornya seperti apa jadinya\n- Gunakan format output sebagai berikut:\n\n```json\n{\n \"message\": \"hasil eksekusi, log, atau error yang relevan\"\n}\n```\n\n---\n\n## \ud83d\udccb Catatan Tambahan\n- Kamu tidak berinteraksi langsung dengan user \u2014 semua komunikasi lewat Ultimate Agent.\n- Jika mendeteksi instruksi yang berisiko besar (misalnya penghapusan total), berikan deskripsi ke parent agar dia bisa menanyakan ulang ke user.\n"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 2.2,
"position": [
-200,
-256
],
"id": "8cedffa2-2abc-486c-9e9c-aac7fab1793a",
"name": "AI Agent"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-576,
-32
],
"id": "1283e616-4ecf-4629-b517-20f905f2799b",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $execution.id }}"
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
-448,
-32
],
"id": "bb56059a-b8dc-4625-ae48-c636dc38a11e",
"name": "Simple Memory"
},
{
"parameters": {
"description": "call this tool to use Homelab/server cli",
"workflowId": {
"__rl": true,
"value": "DblYrk0azkxZdLCx",
"mode": "list",
"cachedResultUrl": "/workflow/DblYrk0azkxZdLCx",
"cachedResultName": "HomeLab CLI"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"command": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('command', ``, 'string') }}"
},
"matchingColumns": [],
"schema": [
{
"id": "command",
"displayName": "command",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [
320,
-32
],
"id": "90d57566-4d13-4f3a-82c2-f0ee11f6be0e",
"name": "Call 'HomeLab CLI'"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "01338fe4-26c3-4aa9-bd0f-5426904de199",
"name": "output",
"value": "={{ $json.output }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
528,
-256
],
"id": "0e4f77c7-31e5-4118-93dd-1730944a99a3",
"name": "Edit Fields"
}
],
"connections": {
"Insert row in Homelab Data": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update row(s) in Homelab data": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Upsert row(s) in Data table": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get specific row(s) in Homelab data": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get all row(s) in Homelab database": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Start": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Call 'HomeLab CLI'": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "3498c585-d3a0-4027-bd71-a09ceb19d156",
"triggerCount": 0,
"shared": [
{
"updatedAt": "2025-10-09T15:32:09.119Z",
"createdAt": "2025-10-09T15:32:09.119Z",
"role": "workflow:owner",
"workflowId": "7ITq4YArmaV9dGTX",
"projectId": "DiQC0tGxFhuiK9UM"
}
],
"tags": [
{
"updatedAt": "2025-10-06T05:05:37.121Z",
"createdAt": "2025-10-06T05:05:37.121Z",
"id": "Xp9ppupv5ftjKZ28",
"name": "Agents"
}
]
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApi
About this workflow
Homelab IT Agent. Uses dataTableTool, executeWorkflowTrigger, agent, lmChatGoogleGemini. Event-driven trigger; 11 nodes.
Source: https://github.com/SamVivan1/n8n-Workflows-Backup/blob/main/homelab-it-agent-7ITq4YArmaV9dGTX.json — original creator credit. Request a take-down →