AutomationFlowsAI & RAG › Homelab IT Agent

Homelab IT Agent

Homelab IT Agent. Uses dataTableTool, executeWorkflowTrigger, agent, lmChatGoogleGemini. Event-driven trigger; 11 nodes.

Event trigger★★★☆☆ complexityAI-powered11 nodesData Table ToolExecute Workflow TriggerAgentLm Chat Google GeminiMemory Buffer WindowTool Workflow
AI & RAG Trigger: Event Nodes: 11 Complexity: ★★★☆☆ AI nodes: yes

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 →

Download .json
{
  "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.

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 →

More AI & RAG workflows → · Browse all categories →