{"workflow":{"id":13900,"name":"Scan code repositories for governance issues with GPT-4o and severity-based reports","views":60,"recentViews":1,"totalViews":60,"createdAt":"2026-03-05T16:50:52.155Z","description":"## How It Works\nThis workflow automates end-to-end code repository governance scanning using a multi-agent AI orchestration system. Designed for engineering leads, DevSecOps teams, and CTOs, it replaces manual code audits with a structured, AI-driven compliance and security analysis pipeline. The workflow begins by extracting repository metadata, which is passed to a Governance Orchestrator Agent coordinating four specialised sub-agents: Static Code Analysis, Architectural Compliance, CTO Report Generation, and Security Vulnerability Analysis. Outputs are consolidated into a Structured Governance Output, formatted as a final report, then routed by severity level. Critical findings trigger escalation alerts and are aggregated separately, while medium findings are handled independently. All paths converge to merge analysis results, enrich the final output, and deliver a board-ready governance report with full audit traceability.\n\n## Setup Steps\n1. Configure `Extract Repository Metadata` with your Git provider or repository API credentials.\n2. Set severity thresholds in the `Check Critical Issues Threshold` node to match your governance policy.\n3. Configure `Prepare Escalation Alert` with your notification channel.\n \n## Prerequisites\n- OpenAI or compatible LLM API credentials\n- Git repository access (GitHub, GitLab, or Bitbucket API)\n- Notification channel (Slack, email, or webhook)\n## Use Cases\n- Automated pre-release security and compliance audits\n## Customisation\n- Adjust severity thresholds to match internal risk frameworks\n## Benefits\n- Eliminates manual code audit effort across engineering teams\n","workflow":{"id":"423tAM24Uk8vWVO1","meta":{"instanceId":"b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502"},"name":"Smart code governance scan with severity routing and compliance report","tags":[],"nodes":[{"id":"549c2193-8d14-47f9-a39d-222633a16088","name":"Start Governance Scan","type":"n8n-nodes-base.manualTrigger","position":[256,928],"parameters":{},"typeVersion":1},{"id":"79799d43-0c8f-47ca-b19d-bab1c71905d5","name":"Extract Repository Metadata","type":"n8n-nodes-base.ssh","position":[480,928],"parameters":{"command":"=find {{ $json.repositoryPath }} -type f \\( -name \"*.js\" -o -name \"*.ts\" -o -name \"*.py\" -o -name \"*.java\" -o -name \"*.go\" \\) | head -100"},"typeVersion":1},{"id":"f1634f4b-3e2b-4e8f-8313-afb16af8d519","name":"Governance Orchestrator Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[1272,928],"parameters":{"text":"={{ $json.codebaseData }}","options":{"systemMessage":"You are a Software Governance Orchestrator responsible for coordinating comprehensive code quality and architectural compliance analysis. Your role is to delegate tasks to specialized agents: the Static Code Analysis Agent for detecting anti-patterns and SOLID violations, the Architectural Compliance Agent for validating microservices architecture, and the CTO Report Generation Agent for executive summaries. Coordinate their work and ensure complete coverage of the codebase."},"hasOutputParser":true},"typeVersion":3.1},{"id":"e2eecec5-95bf-4b43-bbda-a4e8f0d8fdc3","name":"Orchestrator Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[704,1152],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"cb409eaf-2754-420f-a176-3edb4140c0d9","name":"Static Code Analysis Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[832,1152],"parameters":{"text":"={{ $fromAI(\"codeFiles\", \"The code files and repository structure to analyze\", \"string\") }}","options":{"systemMessage":"You are a Static Code Analysis Expert specializing in detecting anti-patterns, SOLID principle violations (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), code smells, and maintainability risks. Analyze the provided code files and compute a technical debt index (0-100 scale where 0=no debt, 100=critical). Identify specific violations with file paths, line numbers, severity (critical/high/medium/low), and remediation recommendations. Focus on: cyclomatic complexity, code duplication, tight coupling, god classes, long methods, magic numbers, and poor naming conventions."},"hasOutputParser":true,"toolDescription":"Analyzes source code for anti-patterns, SOLID principle violations, code smells, maintainability risks, and computes a technical debt index. Returns structured analysis with severity ratings and specific line-level findings."},"typeVersion":3},{"id":"e4e0b9fc-c39f-444b-a85a-e026644f61f8","name":"Static Analysis Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[912,1360],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.1},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"08ad314d-7cfa-4d1e-b9dd-c970029d021a","name":"Architectural Compliance Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1120,1152],"parameters":{"text":"={{ $fromAI(\"architectureData\", \"The repository structure and architectural metadata to validate\", \"string\") }}","options":{"systemMessage":"You are an Architectural Compliance Expert specializing in microservices architecture validation. Analyze the codebase structure for: 1) Microservices compliance (service boundaries, API contracts, data ownership, service coupling), 2) Dependency graph stability (circular dependencies, dependency depth, fan-in/fan-out ratios), 3) Scalability constraints (stateful components, shared databases, synchronous coupling, single points of failure). Compute compliance scores (0-100) for each dimension and identify architectural violations with severity ratings and remediation strategies. Focus on: bounded contexts, event-driven patterns, database-per-service, API gateway patterns, and resilience patterns (circuit breakers, bulkheads, timeouts)."},"hasOutputParser":true,"toolDescription":"Validates microservices architecture compliance, analyzes dependency graphs for stability issues, checks scalability constraints, and identifies architectural anti-patterns. Returns structured compliance report with risk scores."},"typeVersion":3},{"id":"289eb137-4135-4ec2-b5d2-adb25ded4522","name":"Architectural Analysis Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1200,1360],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.1},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"9afb42cf-4ac3-4654-b6a8-a8a4d8809ccc","name":"CTO Report Generation Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1408,1152],"parameters":{"text":"={{ $fromAI(\"analysisResults\", \"The combined technical analysis results from code and architecture agents\", \"string\") }}","options":{"systemMessage":"You are a CTO Report Generation Expert who translates technical analysis into executive-level strategic insights. Synthesize the static code analysis and architectural compliance findings into: 1) Risk Matrix (categorize findings by impact vs. likelihood), 2) Remediation Backlog Prioritization (rank issues by business impact, technical debt reduction, and effort required), 3) Compliance Summary (overall health scores, trend analysis, key metrics). Present findings in business terms with ROI implications, resource requirements, and timeline recommendations. Focus on strategic decision-making support rather than technical details."},"hasOutputParser":true,"toolDescription":"Synthesizes technical analysis results into executive-level CTO reports including risk matrices, remediation backlog prioritization, and structured compliance summaries. Produces actionable insights for leadership decision-making."},"typeVersion":3},{"id":"a13811b9-9501-4b15-924c-8dcbd8f74261","name":"Report Generation Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1488,1360],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.2},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"fae9f570-0ade-4e6f-815c-4a55ec136ae9","name":"Structured Governance Output","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1984,1152],"parameters":{"schemaType":"manual","inputSchema":"{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"riskMatrix\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"category\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"impact\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"likelihood\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"severity\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"remediationBacklog\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"issue\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"priority\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"effort\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"businessImpact\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t},\n\t\t\t\t\t\"timeline\": {\n\t\t\t\t\t\t\"type\": \"string\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"complianceSummary\": {\n\t\t\t\"type\": \"object\",\n\t\t\t\"properties\": {\n\t\t\t\t\"technicalDebtIndex\": {\n\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t},\n\t\t\t\t\"architectureComplianceScore\": {\n\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t},\n\t\t\t\t\"overallHealthScore\": {\n\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t},\n\t\t\t\t\"criticalIssuesCount\": {\n\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t},\n\t\t\t\t\"highPriorityCount\": {\n\t\t\t\t\t\"type\": \"number\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"executiveSummary\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"recommendations\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}"},"typeVersion":1.3},{"id":"336cd47c-bc15-4c84-be71-fad2b77dd04b","name":"Format Final Report","type":"n8n-nodes-base.set","position":[2192,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reportGeneratedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-2","name":"repositoryScanned","type":"string","value":"={{ $('Extract Repository Metadata').item.json.stdout }}"},{"id":"id-3","name":"governanceReport","type":"object","value":"={{ JSON.stringify($json) }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"4ad2e870-4848-4009-9584-e0729f477018","name":"Check Critical Issues Threshold","type":"n8n-nodes-base.if","position":[2416,928],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"id-1","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $('Format Final Report').item.json.governanceReport.complianceSummary.criticalIssuesCount }}","rightValue":"5"}]}},"typeVersion":2.2},{"id":"263e78ff-4b89-42b3-b26a-d0d025234ea6","name":"Security Vulnerability Scanner Agent","type":"@n8n/n8n-nodes-langchain.agentTool","position":[1696,1152],"parameters":{"text":"={{ $fromAI('securityContext', 'The code and dependency information to scan for security vulnerabilities', 'string') }}","options":{"systemMessage":"You are a Security Vulnerability Scanner Expert specializing in identifying security risks in codebases. Analyze code for: 1) Injection vulnerabilities (SQL, NoSQL, command injection, XSS), 2) Authentication and authorization flaws, 3) Sensitive data exposure (hardcoded credentials, API keys, PII leakage), 4) Insecure dependencies (outdated libraries with known CVEs), 5) Security misconfigurations, 6) Cryptographic failures. Map findings to OWASP Top 10 categories, provide CVE references where applicable, and assign CVSS scores. Include specific remediation steps for each vulnerability."},"toolDescription":"Scans code for security vulnerabilities including SQL injection, XSS, insecure dependencies, hardcoded secrets, authentication flaws, and OWASP Top 10 risks. Returns vulnerability report with CVE references and remediation guidance."},"typeVersion":3},{"id":"df83aed4-3a5d-401e-8e87-e26fdd0d9752","name":"Security Analysis Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1776,1360],"parameters":{"model":{"__rl":true,"mode":"id","value":"gpt-4o"},"options":{"temperature":0.1},"builtInTools":{}},"credentials":{"openAiApi":{"id":"mv2ECvRtbAK63G2g","name":"OpenAi account"}},"typeVersion":1.3},{"id":"d80bfa9b-96d9-4b69-9894-08177a813765","name":"Aggregate Critical Findings","type":"n8n-nodes-base.aggregate","position":[3312,832],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"89960bd6-e2f9-489c-9fd1-0e5a8f712bd4","name":"Prepare Escalation Alert","type":"n8n-nodes-base.set","position":[2640,832],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"alertType","type":"string","value":"CRITICAL_THRESHOLD_EXCEEDED"},{"id":"id-2","name":"criticalIssuesCount","type":"number","value":"={{ $json.complianceSummary.criticalIssuesCount }}"},{"id":"id-3","name":"escalationRequired","type":"boolean","value":true},{"id":"id-4","name":"alertTimestamp","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-5","name":"fullReport","type":"object","value":"={{ JSON.stringify($json) }}"}]}},"typeVersion":3.4},{"id":"04d64000-10e4-4a75-a8b8-94e42ecdcf76","name":"Log Standard Report","type":"n8n-nodes-base.set","position":[3312,1096],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"reportStatus","type":"string","value":"STANDARD_COMPLIANCE"},{"id":"id-2","name":"loggedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-3","name":"summary","type":"string","value":"={{ $json.executiveSummary }}"}]}},"typeVersion":3.4},{"id":"1bb30211-8614-47c6-bb86-8dbdc65e9051","name":"Route by Severity Level","type":"n8n-nodes-base.switch","position":[2864,832],"parameters":{"rules":{"values":[{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.complianceSummary.overallHealthScore }}","rightValue":30}]}},{"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.complianceSummary.overallHealthScore }}","rightValue":70}]}}]},"options":{}},"typeVersion":3.2},{"id":"07dfb175-1339-49da-a927-ff3d4406b67b","name":"Merge Analysis Paths","type":"n8n-nodes-base.merge","position":[3536,928],"parameters":{},"typeVersion":3},{"id":"e07e59a1-6397-49f3-ba04-bdd3516d376d","name":"Critical Severity Handler","type":"n8n-nodes-base.set","position":[3088,736],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"severityLevel","type":"string","value":"CRITICAL"},{"id":"id-2","name":"actionRequired","type":"string","value":"IMMEDIATE_REMEDIATION"},{"id":"id-3","name":"notificationPriority","type":"string","value":"P1"},{"id":"id-4","name":"escalationPath","type":"string","value":"CTO_DIRECT"}]}},"typeVersion":3.4},{"id":"338e6a92-7811-45de-8583-835ea760030c","name":"Medium Severity Handler","type":"n8n-nodes-base.set","position":[3088,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"severityLevel","type":"string","value":"MEDIUM"},{"id":"id-2","name":"actionRequired","type":"string","value":"SCHEDULED_REMEDIATION"},{"id":"id-3","name":"notificationPriority","type":"string","value":"P2"},{"id":"id-4","name":"escalationPath","type":"string","value":"ENGINEERING_LEAD"}]}},"typeVersion":3.4},{"id":"941713dc-4c2c-41b5-8c3d-c9d630753e5a","name":"Enrich Final Output","type":"n8n-nodes-base.set","position":[3760,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"workflowCompletedAt","type":"string","value":"={{ $now.toISO() }}"},{"id":"id-2","name":"totalAgentsInvolved","type":"number","value":5},{"id":"id-3","name":"analysisDepth","type":"string","value":"COMPREHENSIVE_MULTI_AGENT"},{"id":"id-4","name":"frameworkVersion","type":"string","value":"2.0-ENHANCED"}]}},"typeVersion":3.4},{"id":"755c0191-cafd-487c-87c5-43b38a555193","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1584,304],"parameters":{"color":5,"width":464,"height":320,"content":"## Prerequisites\n- OpenAI or compatible LLM API credentials\n- Git repository access (GitHub, GitLab, or Bitbucket API)\n- Notification channel (Slack, email, or webhook)\n## Use Cases\n- Automated pre-release security and compliance audits\n## Customisation\n- Adjust severity thresholds to match internal risk frameworks\n## Benefits\n- Eliminates manual code audit effort across engineering teams"},"typeVersion":1},{"id":"42baff24-153d-43c8-aca5-15b173f49474","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1056,384],"parameters":{"width":416,"height":224,"content":"## Setup Steps\n1. Configure `Extract Repository Metadata` with your Git provider or repository API credentials.\n2. Set severity thresholds in the `Check Critical Issues Threshold` node to match your governance policy.\n3. Configure `Prepare Escalation Alert` with your notification channel."},"typeVersion":1},{"id":"fa8db4bf-223c-41bb-a122-745a9fae2ff6","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[256,352],"parameters":{"width":720,"height":256,"content":"## How It Works\nThis workflow automates end-to-end code repository governance scanning using a multi-agent AI orchestration system. Designed for engineering leads, DevSecOps teams, and CTOs, it replaces manual code audits with a structured, AI-driven compliance and security analysis pipeline. The workflow begins by extracting repository metadata, which is passed to a Governance Orchestrator Agent coordinating four specialised sub-agents: Static Code Analysis, Architectural Compliance, CTO Report Generation, and Security Vulnerability Analysis. Outputs are consolidated into a Structured Governance Output, formatted as a final report, then routed by severity level. Critical findings trigger escalation alerts and are aggregated separately, while medium findings are handled independently. All paths converge to merge analysis results, enrich the final output, and deliver a board-ready governance report with full audit traceability."},"typeVersion":1},{"id":"898284e8-d79b-4f03-979a-81ed020ae875","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2384,704],"parameters":{"color":7,"width":848,"height":608,"content":"## Severity Routing\n**What** — Routes findings to Critical or Medium severity handlers.\n**Why** — Prioritises escalation paths based on risk level automatically."},"typeVersion":1},{"id":"8bdf27b5-618a-4951-9e39-c85ed36cb825","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2144,720],"parameters":{"color":7,"width":224,"height":816,"content":"## Format Report\n**What** — Consolidates agent outputs into a structured governance report.\n**Why** — Ensures consistent, readable output before severity assessment."},"typeVersion":1},{"id":"d3825d03-4629-493b-9ba4-253844ac13d6","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[192,720],"parameters":{"color":7,"width":1920,"height":816,"content":"## Extract, Orchestrator & Sub-Agents\n**What** — Coordinates static code, architecture, CTO report, and security agents.\n**Why** — Decomposes governance into specialised tasks for higher accuracy."},"typeVersion":1},{"id":"fe43803d-6563-4bf5-8803-7b06971abaf1","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[3248,688],"parameters":{"color":7,"width":784,"height":736,"content":"## Aggregate, Merge & Deliver\n**What** — Aggregates critical findings, merges all analysis paths, enriches output, and logs the standard report.\n**Why** — Unifies parallel outputs into a single audit-ready deliverable with full contextual detail."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"6ab691a7-1580-41b7-a9f2-1dc4181273ba","connections":{"Orchestrator Model":{"ai_languageModel":[[{"node":"Governance Orchestrator Agent","type":"ai_languageModel","index":0}]]},"Enrich Final Output":{"main":[[]]},"Format Final Report":{"main":[[{"node":"Check Critical Issues Threshold","type":"main","index":0}]]},"Log Standard Report":{"main":[[{"node":"Merge Analysis Paths","type":"main","index":0}]]},"Merge Analysis Paths":{"main":[[{"node":"Enrich Final Output","type":"main","index":0}]]},"Start Governance Scan":{"main":[[{"node":"Extract Repository Metadata","type":"main","index":0}]]},"Static Analysis Model":{"ai_languageModel":[[{"node":"Static Code Analysis Agent","type":"ai_languageModel","index":0}]]},"Medium Severity Handler":{"main":[[{"node":"Aggregate Critical Findings","type":"main","index":0}]]},"Report Generation Model":{"ai_languageModel":[[{"node":"CTO Report Generation Agent","type":"ai_languageModel","index":0}]]},"Route by Severity Level":{"main":[[{"node":"Critical Severity Handler","type":"main","index":0}],[{"node":"Medium Severity Handler","type":"main","index":0}]]},"Security Analysis Model":{"ai_languageModel":[[{"node":"Security Vulnerability Scanner Agent","type":"ai_languageModel","index":0}]]},"Prepare Escalation Alert":{"main":[[{"node":"Route by Severity Level","type":"main","index":0}]]},"Critical Severity Handler":{"main":[[{"node":"Aggregate Critical Findings","type":"main","index":0}]]},"Static Code Analysis Agent":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Aggregate Critical Findings":{"main":[[{"node":"Merge Analysis Paths","type":"main","index":1}]]},"CTO Report Generation Agent":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Extract Repository Metadata":{"main":[[{"node":"Governance Orchestrator Agent","type":"main","index":0}]]},"Architectural Analysis Model":{"ai_languageModel":[[{"node":"Architectural Compliance Agent","type":"ai_languageModel","index":0}]]},"Structured Governance Output":{"ai_outputParser":[[{"node":"Governance Orchestrator Agent","type":"ai_outputParser","index":0}]]},"Governance Orchestrator Agent":{"main":[[{"node":"Format Final Report","type":"main","index":0}]]},"Architectural Compliance Agent":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]},"Check Critical Issues Threshold":{"main":[[{"node":"Prepare Escalation Alert","type":"main","index":0}],[{"node":"Log Standard Report","type":"main","index":0}]]},"Security Vulnerability Scanner Agent":{"ai_tool":[[{"node":"Governance Orchestrator Agent","type":"ai_tool","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":30,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":6},"n8n-nodes-base.ssh":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.agentTool":{"count":4},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Cheng Siong Chin","username":"cschin","bio":"Dr. Cheng Siong CHIN is an n8n workflow creator specializing in AI-powered automation, agent orchestration, and intelligent system integrations. He designs and builds end-to-end workflows that combine LLMs, APIs, and data pipelines to streamline complex processes and deliver production-ready automation solutions. Contact me to discuss custom AI workflows and agent architectures.\n","verified":true,"links":["https://gravatar.com/mysticluminary9fa255f7f5"],"avatar":"https://gravatar.com/avatar/54544f98e839bb9dd9a764ad1e6823eeddb6db5138d201e42f291a7b0a73303f?r=pg&d=retro&size=200"},"nodes":[{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":490,"icon":"fa:terminal","name":"n8n-nodes-base.ssh","codex":{"data":{"alias":["remote"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ssh/"}]},"categories":["Core Nodes","Development"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":["Helpers"]}},"group":"[\"input\"]","defaults":{"name":"SSH","color":"#000000"},"iconData":{"icon":"terminal","type":"icon"},"displayName":"SSH","typeVersion":1,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1310,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agentTool","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent Tool","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent Tool","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":16,"name":"DevOps"},{"id":49,"name":"AI Summarization"}],"image":[]}}