Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SkyArch AI: Universal Multi-Cloud Diagram Generator

An AI-powered architecture diagramming tool that converts natural language prompts into professional cloud diagrams for AWS, Azure, Google Cloud (GCP), and common DevOps tooling.

Key Features

  • Multi-Cloud Native — deep support for AWS, Azure, GCP, and DevOps icons (Terraform, GitHub, Jenkins)
  • NVIDIA AI Engine — powered by meta/llama-3.3-70b-instruct via NVIDIA's free API; no cloud account required
  • Dual Output Pipeline — PNG preview rendered by Python + native Draw.io XML for full editability
  • Terraform IaC — one-click generation of production-ready HCL from any diagram
  • Interactive Canvas — drag, edit, and re-sync nodes via React Flow
  • Rate-Limited API — 20 req/min per IP; CORS locked to configured origin

Tech Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, Tailwind CSS, Framer Motion
BackendNode.js, Express, TSX
AI EngineNVIDIA API (OpenAI-compatible) — meta/llama-3.3-70b-instruct
Diagram EnginePython diagrams library + Graphviz
ExportDraw.io XML (dagre layout), PNG (base64)
InfrastructureDocker & Docker Compose

Getting Started

Prerequisites (Local)

  • Node.js 18+
  • Python 3.10+ with pip install diagrams
  • Graphviz: brew install graphviz / apt-get install graphviz
  • A free NVIDIA API key from build.nvidia.com

Local Setup

# 1. Clone and install
git clone <repo-url>&&cd aws-diagram-ui
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env and set NVIDIA_API_KEY=your_key_here# 3. Start backend (terminal 1)
npm run server
# 4. Start frontend (terminal 2)
npm run dev

Open http://localhost:5173.

Docker (Recommended)

The Docker image bundles Python, Graphviz, and all dependencies.

docker run -p 3001:3000 \
-e NVIDIA_API_KEY=your_key_here \
-e NODE_ENV=production \
ashishkasaudhan/aws-diagram-ui:latest

Or with Docker Compose for persistent diagram storage:

services:
skyarch:
image: ashishkasaudhan/aws-diagram-ui:latestports:
- "3001:3000"environment:
- NVIDIA_API_KEY=your_key_here
- NODE_ENV=productionvolumes:
- ./generated-diagrams:/app/generated-diagrams
docker-compose up -d

Open http://localhost:3001.

Environment Variables

VariableDescriptionDefault
NVIDIA_API_KEYFree API key from build.nvidia.com(required)
NVIDIA_MODELModel to usemeta/llama-3.3-70b-instruct
CORS_ORIGINAllowed frontend originhttp://localhost:5173
PORTBackend server port3001
NODE_ENVSet to production to serve built frontend(unset)

Architecture Flow

  1. Prompt — user describes architecture in plain English
  2. AI (NVIDIA) — LLM returns a structured JSON (nodes, edges, clusters)
  3. Python code genutils/pythonConvert.ts converts JSON to diagrams Python code
  4. MCP renderuniversal_diagram_mcp.py injects imports and runs Graphviz → PNG
  5. Draw.io gensrc/utils/drawioGenerator.ts converts same JSON to Draw.io XML (dagre layout)
  6. Response — PNG (base64) + Draw.io XML + original JSON sent to frontend

How to Add More Icons

1. Register the class in universal_diagram_mcp.py

INSTALLED_IMPORTS= {
# ..."MWAA": "diagrams.aws.analytics", # add here
}

2. Add an alias if needed (in the inject_imports function)

BAD_ALIASES= {
# ..."Airflow": "MWAA",
}

3. Update the AI prompt in server.ts

Add the new type to the NODE TYPES section of the generateDiagramCode system prompt so the AI knows it can use it.

Editing Diagrams

  1. Generate a diagram.
  2. Click Export DOT to download the .drawio file.
  3. Open in draw.ioFile > Open from > Device.
  4. All shapes are native Draw.io vector icons — fully editable with connectors.

API Reference

See docs/INTEGRATION_GUIDE.md for full REST API documentation.

Documentation

DocDescription
Integration GuideREST API reference and integration patterns
Solution ArchitectureTechnical deep-dive into the MCP and AI pipeline
Docker InstructionsContainerized setup details
TroubleshootingCommon issues and fixes
RoadmapPlanned features

License

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages