Generate production-quality SVG+PNG technical diagrams from natural language descriptions.
Nodes = services/components. Group into horizontal layers (top→bottom or left→right).
<rect> containers group related services0 0 960 600 or 0 0 960 800Label every arrow with data type ("embeddings", "query", "context"). Wider arrows for primary paths.
Top-to-bottom preferred. Diamond = decision, rounded rect = process, parallelogram = I/O.
5 layers: Input → Agent Core (LLM) → Memory → Tools → Output
store(), retrieve(), forget(), consolidate()#dcfce7 fill + ✓; unsupported: #f9fafb fillcx=480, cy=280ConceptShapeUser / HumanCircle head + body pathLLM / ModelRounded rect, double border, ⚡AgentHexagon or double-border rectMemory (short-term)Dashed-border rounded rectMemory (long-term)Solid cylinderVector StoreCylinder with grid linesGraph DB3 overlapping circlesTool / FunctionRect with ⚙ iconAPI GatewayHexagonQueue / StreamHorizontal pipe/tubeDocumentFolded-corner rectBrowser / UIRect with 3-dot titlebarDecisionDiamond
Flow TypeColorStrokeDashPrimary data#2563eb blue2px solidnoneControl/trigger#ea580c orange1.5px solidnoneMemory read#059669 green1.5px solidnoneMemory write#059669 green1.5px5,3Async/event#6b7280 gray1.5px4,2Embedding#7c3aed purple1px solidnoneFeedback/loop#7c3aed purple1.5px curvednone
Always include a legend when 2+ arrow types are used.
references/styles.md for exact colorsreferences/icons.md for known productspython3 scripts/svg2png.py <file.svg> or rsvg-convertEstimate complexity:
Generation method:
Python method (recommended for complex SVGs):
bash
python3 << 'EOF'
svg_content = '''<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 600">
...complete SVG here...
</svg>'''
with open('/path/to/output.svg', 'w') as f:
f.write(svg_content)
print("Generated output.svg")
EOF
0 0 960 600 default; 0 0 960 800 tall; 0 0 1200 600 wide<style>font-family: system-ui, Helvetica, sans-serif</style> — no external @import<defs>: arrow markers, gradients, filters, clip paths<marker> with markerEnd, sized markerWidth="10" markerHeight="7"<feDropShadow> sparinglyM x1,y1 C cx1,cy1 cx2,cy2 x2,y2 cubic bezierRAG Pipeline: Query → Embed → VectorSearch → Retrieve → LLM → Response Agentic RAG: Query → Embed → VectorSearch → Agent loop (Tool use) → LLM → Response Agentic Search: Query → Planner → [Search / Calculator / Code] → Synthesizer → Response Mem0 Memory: Input → Memory Manager → [Write: VectorDB + GraphDB] → [Read: Retrieve+Rank] → Context Multi-Agent: Orchestrator → [SubAgent A / B / C] → Aggregator → Output Tool Call Flow: LLM → Tool Selector → Tool Execution → Parser → LLM (loop)
ProblemFixPNG blank/blackRemove @import url() — use system fonts onlyrsvg-convert not foundUse python3 scripts/svg2png.py fallbackSVG cut off at bottomIncrease ViewBox heightText overflowingtext-anchor="middle" + shorten labelMarker undefinedEnsure <marker id="..."> in <defs>Arrow crossing nodesUse orthogonal routing or bezier detour
./[derived-name].svg and ./[derived-name].png--output /path/#NameBackgroundBest For1Flat Icon (default)WhiteBlogs, docs, slides2Dark Terminal#0f0f1aGitHub, dev articles3Blueprint#0a1628Architecture docs4Notion CleanWhiteNotion, wikis5Glassmorphism#0d1117 gradientProduct sites, keynotes6Claude Official#f8f6f3 warm creamAnthropic-style diagrams7OpenAI OfficialPure whiteOpenAI-style diagrams
Load references/styles.md for exact color tokens and patterns.