# synergycodes/workflowbuilder architecture

> Architecture diagram of the GitHub repository synergycodes/workflowbuilder, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/synergycodes/workflowbuilder
- Repository: https://github.com/synergycodes/workflowbuilder

## Overview

Workflow Builder is a white-label workflow editor and durable orchestration stack. A user edits a diagram in the SDK or AI Studio, saves it through the backend, starts a run, and observes its events; human-decision steps can suspend execution until a person responds. The backend coordinates versions, runs, and decisions with Temporal, while a worker executes node types and records run state. The repository also includes an MCP documentation and API-symbol service. Unsampled subsystem links are included only where the README documents them; paths identify the supported implementation areas.

Main entry points: [`apps/backend/src/server.ts`](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/server.ts) (Backend HTTP API), [`apps/ai-studio/src/app/app.tsx`](https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/app/app.tsx) (AI Studio app), [`packages/mcp-server/src/server.ts`](https://github.com/synergycodes/workflowbuilder/blob/main/packages/mcp-server/src/server.ts) (MCP tool server), [`apps/execution-worker/src/engines/temporal/worker.ts`](https://github.com/synergycodes/workflowbuilder/blob/main/apps/execution-worker/src/engines/temporal/worker.ts) (Execution worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Workflow editing and observation"]
  node_sdk["Editor SDK"]
  node_studio["AI Studio app<br/>[app.tsx]"]
  node_open["Open workflow or run<br/>[open-from-url.ts]"]
  node_runview["Live run view<br/>[log-panel.tsx]"]
  node_decisionui["Decision controls"]
end

subgraph group_backend["Execution backend"]
  node_api["Backend HTTP API<br/>[server.ts]"]
  node_workflowroutes["Workflow routes<br/>[workflows.ts]"]
  node_executionroutes["Execution and decision routes<br/>[executions.ts]"]
  node_visualizeroutes["Visualization routes<br/>[visualize.ts]"]
  node_db[("Postgres state<br/>[schema.ts]")]
end

subgraph group_runtime["Temporal runtime"]
  node_engine["Temporal plugin engine<br/>[plugin.ts]"]
  node_temporal[("Temporal service")]
  node_worker["Execution worker<br/>[worker.ts]"]
  node_executors["Node executors"]
  node_eventstore[("Run event persistence<br/>[database.ts]")]
end

subgraph group_docs["MCP documentation service"]
  node_mcp["MCP tool server<br/>[server.ts]"]
  node_doctools["Documentation tools"]
  node_symboltools["Symbol tools"]
  node_corpus[("Docs and symbol corpus<br/>[build-corpus.ts]")]
end

node_user(("Workflow user"))

node_user -->|"edits workflows"| node_studio
node_user -->|"uses editor"| node_sdk
node_studio -->|"embeds"| node_sdk
node_studio -->|"shows run state"| node_runview
node_studio -->|"renders decisions"| node_decisionui
node_open -->|"fetches snapshots"| node_api
node_user -->|"submits verdict"| node_decisionui
node_sdk -->|"sends workflow JSON"| node_api
node_api -->|"routes requests"| node_workflowroutes
node_api -->|"routes requests"| node_executionroutes
node_api -->|"routes requests"| node_visualizeroutes
node_api -.->|"persists state"| node_db
node_api -.->|"starts and controls runs"| node_engine
node_api -->|"delivers decisions"| node_temporal
node_temporal -->|"dispatches activities"| node_worker
node_worker -->|"registers node handlers"| node_executors
node_worker -->|"writes events"| node_eventstore
node_eventstore -.->|"streams run events"| node_runview
node_api -->|"accepts decisions"| node_decisionui
node_api -->|"adapts visualizations"| node_visualizeroutes
node_mcp -->|"registers handlers"| node_doctools
node_mcp -->|"registers handlers"| node_symboltools
node_mcp -.->|"serves corpus"| node_corpus
node_doctools -.->|"searches docs"| node_corpus
node_symboltools -.->|"resolves symbols"| node_corpus

click node_sdk "https://github.com/synergycodes/workflowbuilder/tree/main/packages/sdk/src/features"
click node_studio "https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/app/app.tsx"
click node_open "https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/app/open-from-url.ts"
click node_runview "https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/components/execution/log-panel.tsx"
click node_decisionui "https://github.com/synergycodes/workflowbuilder/tree/main/apps/ai-studio/src/components/human-decision"
click node_api "https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/server.ts"
click node_workflowroutes "https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/workflows.ts"
click node_executionroutes "https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/executions.ts"
click node_visualizeroutes "https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/visualize.ts"
click node_db "https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/db/schema.ts"
click node_engine "https://github.com/synergycodes/workflowbuilder/blob/main/packages/temporal/src/plugin.ts"
click node_worker "https://github.com/synergycodes/workflowbuilder/blob/main/apps/execution-worker/src/engines/temporal/worker.ts"
click node_executors "https://github.com/synergycodes/workflowbuilder/tree/main/apps/execution-worker/src/executors"
click node_eventstore "https://github.com/synergycodes/workflowbuilder/blob/main/apps/execution-worker/src/database.ts"
click node_mcp "https://github.com/synergycodes/workflowbuilder/blob/main/packages/mcp-server/src/server.ts"
click node_doctools "https://github.com/synergycodes/workflowbuilder/tree/main/packages/mcp-server/src/tools"
click node_symboltools "https://github.com/synergycodes/workflowbuilder/tree/main/packages/mcp-server/src/symbols"
click node_corpus "https://github.com/synergycodes/workflowbuilder/blob/main/packages/mcp-server/src/corpus/build-corpus.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sdk,node_studio,node_open,node_runview,node_decisionui,node_user toneBlue
class node_api,node_workflowroutes,node_executionroutes,node_visualizeroutes,node_db toneAmber
class node_engine,node_temporal,node_worker,node_executors,node_eventstore toneMint
class node_mcp,node_doctools,node_symboltools,node_corpus toneRose
```

## Components

### Workflow editing and observation

- [Editor SDK](https://github.com/synergycodes/workflowbuilder/tree/main/packages/sdk/src/features): `packages/sdk/src/features`
- [AI Studio app](https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/app/app.tsx): `apps/ai-studio/src/app/app.tsx`
- [Open workflow or run](https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/app/open-from-url.ts): `apps/ai-studio/src/app/open-from-url.ts`
- [Live run view](https://github.com/synergycodes/workflowbuilder/blob/main/apps/ai-studio/src/components/execution/log-panel.tsx): `apps/ai-studio/src/components/execution/log-panel.tsx`
- [Decision controls](https://github.com/synergycodes/workflowbuilder/tree/main/apps/ai-studio/src/components/human-decision): `apps/ai-studio/src/components/human-decision`

### Execution backend

- [Backend HTTP API](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/server.ts): `apps/backend/src/server.ts`
- [Workflow routes](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/workflows.ts): `apps/backend/src/routes/workflows.ts`
- [Execution and decision routes](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/executions.ts): `apps/backend/src/routes/executions.ts`
- [Visualization routes](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/routes/visualize.ts): `apps/backend/src/routes/visualize.ts`
- [Postgres state](https://github.com/synergycodes/workflowbuilder/blob/main/apps/backend/src/db/schema.ts): `apps/backend/src/db/schema.ts`

### Temporal runtime

- [Temporal plugin engine](https://github.com/synergycodes/workflowbuilder/blob/main/packages/temporal/src/plugin.ts): `packages/temporal/src/plugin.ts`
- **Temporal service**
- [Execution worker](https://github.com/synergycodes/workflowbuilder/blob/main/apps/execution-worker/src/engines/temporal/worker.ts): `apps/execution-worker/src/engines/temporal/worker.ts`
- [Node executors](https://github.com/synergycodes/workflowbuilder/tree/main/apps/execution-worker/src/executors): `apps/execution-worker/src/executors`
- [Run event persistence](https://github.com/synergycodes/workflowbuilder/blob/main/apps/execution-worker/src/database.ts): `apps/execution-worker/src/database.ts`

### MCP documentation service

- [MCP tool server](https://github.com/synergycodes/workflowbuilder/blob/main/packages/mcp-server/src/server.ts): `packages/mcp-server/src/server.ts`
- [Documentation tools](https://github.com/synergycodes/workflowbuilder/tree/main/packages/mcp-server/src/tools): `packages/mcp-server/src/tools`
- [Symbol tools](https://github.com/synergycodes/workflowbuilder/tree/main/packages/mcp-server/src/symbols): `packages/mcp-server/src/symbols`
- [Docs and symbol corpus](https://github.com/synergycodes/workflowbuilder/blob/main/packages/mcp-server/src/corpus/build-corpus.ts): `packages/mcp-server/src/corpus/build-corpus.ts`

### Other components

- **Workflow user**

## Connections

- Workflow user → AI Studio app: edits workflows
- Workflow user → Editor SDK: uses editor
- AI Studio app → Editor SDK: embeds (evidence: `apps/ai-studio/src/app/app.tsx`)
- AI Studio app → Live run view: shows run state (evidence: `apps/ai-studio/src/app/app.tsx`)
- AI Studio app → Decision controls: renders decisions (evidence: `apps/ai-studio/src/app/app.tsx`)
- Open workflow or run → Backend HTTP API: fetches snapshots (evidence: `apps/ai-studio/src/app/open-from-url.ts`)
- Workflow user → Decision controls: submits verdict
- Editor SDK → Backend HTTP API: sends workflow JSON
- Backend HTTP API → Workflow routes: routes requests (evidence: `apps/backend/src/server.ts`)
- Backend HTTP API → Execution and decision routes: routes requests (evidence: `apps/backend/src/server.ts`)
- Backend HTTP API → Visualization routes: routes requests (evidence: `apps/backend/src/server.ts`)
- Backend HTTP API → Postgres state: persists state
- Backend HTTP API → Temporal plugin engine: starts and controls runs
- Backend HTTP API → Temporal service: delivers decisions
- Temporal service → Execution worker: dispatches activities
- Execution worker → Node executors: registers node handlers (evidence: `apps/execution-worker/src/engines/temporal/worker.ts`)
- Execution worker → Run event persistence: writes events (evidence: `apps/execution-worker/src/engines/temporal/worker.ts`)
- Run event persistence → Live run view: streams run events
- Backend HTTP API → Decision controls: accepts decisions
- Backend HTTP API → Visualization routes: adapts visualizations (evidence: `apps/backend/src/server.ts`)
- MCP tool server → Documentation tools: registers handlers (evidence: `packages/mcp-server/src/server.ts`)
- MCP tool server → Symbol tools: registers handlers (evidence: `packages/mcp-server/src/server.ts`)
- MCP tool server → Docs and symbol corpus: serves corpus (evidence: `packages/mcp-server/src/server.ts`)
- Documentation tools → Docs and symbol corpus: searches docs (evidence: `packages/mcp-server/src/tools/get-doc/handler.ts`)
- Symbol tools → Docs and symbol corpus: resolves symbols
