This workflow follows the Agent → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.
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
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow implements an AI-powered "Local Event Finder" agent. It takes user criteria (like event type, city, date, and interests), uses a suite of search tools (Brave Web Search, Brave Local
This n8n workflow implements an AI-powered agent that intelligently uses the Brave Search API (via an external MCP service like Smithery) to perform both web and local searches. It understands natural
Apertura. Uses executeWorkflowTrigger, dataTable, agent, lmChatOpenAi. Event-driven trigger; 20 nodes.
This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n.
Drowning in Notion pages and manual updates? Tired of scattered information and endless searching? This n8n workflow is your ultimate AI-Powered Notion Resource Agent, transforming your knowledge base