# intersystems-community/sco-workbench architecture

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

- Interactive diagram: https://gitdiagram.com/intersystems-community/sco-workbench
- Repository: https://github.com/intersystems-community/sco-workbench

## Overview

SCO Workbench guides application builders from instance setup and sample-data loading through data modeling, source integration, cube and KPI authoring, and dashboarding or issue review. The Angular workbench calls a Node API; that backend persists drafts and sessions locally and uses IRIS APIs to inspect or change SCO artifacts. An optional AI assistant can answer instance questions and guide forms, while users retain final save, build, and deploy actions. README capabilities inform the map; some subsystem links are documented rather than verified in sampled source.

Main entry points: [`backend/src/server/app.ts`](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/app.ts) (HTTP API), [`frontend/src/app/workbench/workbench.ts`](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/workbench/workbench.ts) (Workbench shell), [`backend/src/iris/index.ts`](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/iris/index.ts) (IRIS SCO instance), [`backend/src/agent/agent.ts`](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/agent/agent.ts) (Agent runtime)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Workbench UI"]
  node_workbench["Workbench shell<br/>[workbench.ts]"]
  node_sampleui["Sample data"]
  node_modelui["Data model"]
  node_integrationui["Data integration"]
  node_cubeui["Analytics cubes<br/>[bi-cubes.ts]"]
  node_kpiui["Business KPIs<br/>[kpi.ts]"]
  node_dashboardui["Dashboards<br/>[dashboard.ts]"]
  node_issueui["Issue management"]
  node_assistantui["AI assistant<br/>[assistant-panel.ts]"]
end

subgraph group_api["Workbench API"]
  node_api["HTTP API<br/>[app.ts]"]
  node_agent["Agent runtime<br/>[agent.ts]"]
  node_tools["Agent tools<br/>[index.ts]"]
  node_sessions[("Sessions and drafts<br/>[sqlite.ts]")]
end

subgraph group_domain["SCO authoring"]
  node_sample["Sample-data loader"]
  node_integration["Integration pipeline"]
  node_cube["Cube authoring<br/>[cube-routes.ts]"]
  node_dashboard["Chart and KPI queries<br/>[cube-query.ts]"]
end

subgraph group_integrations["Connected systems"]
  node_iris["IRIS SCO instance<br/>[index.ts]"]
end

node_builder(("Application builder"))
node_ai_provider(("Claude provider"))
node_sources(("Data sources"))

node_builder -->|"uses"| node_workbench
node_workbench -->|"opens"| node_sampleui
node_workbench -->|"opens"| node_modelui
node_workbench -->|"opens"| node_integrationui
node_workbench -->|"opens"| node_cubeui
node_workbench -->|"opens"| node_kpiui
node_workbench -->|"opens"| node_dashboardui
node_workbench -->|"opens"| node_issueui
node_workbench -->|"opens"| node_assistantui
node_sampleui -->|"loads data via"| node_api
node_modelui -->|"manages model via"| node_api
node_integrationui -->|"configures via"| node_api
node_cubeui -->|"authors via"| node_api
node_kpiui -->|"manages via"| node_api
node_dashboardui -->|"queries via"| node_api
node_issueui -->|"reviews via"| node_api
node_assistantui -->|"chats via"| node_api
node_api -->|"dispatches chat"| node_agent
node_agent -->|"invokes"| node_tools
node_agent -->|"stores session"| node_sessions
node_api -->|"persists drafts"| node_sessions
node_api -->|"routes sample loads"| node_sample
node_api -->|"routes integration"| node_integration
node_api -->|"routes cube work"| node_cube
node_api -->|"routes analytics"| node_dashboard
node_sample -->|"loads SCO tables"| node_iris
node_integration -->|"introspects"| node_sources
node_integration -->|"deploys pipeline"| node_iris
node_cube -->|"compiles and builds"| node_iris
node_dashboard -->|"executes MDX"| node_iris
node_tools -->|"acts on instance"| node_iris
node_agent -.->|"requests completions"| node_ai_provider

click node_workbench "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/workbench/workbench.ts"
click node_sampleui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/load-sample-data/load-sample-data.ts"
click node_modelui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/business-process/business-process.ts"
click node_integrationui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/data-integration/data-integration.ts"
click node_cubeui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/bi-cubes/bi-cubes.ts"
click node_kpiui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/kpi/kpi.ts"
click node_dashboardui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/dashboard/dashboard.ts"
click node_issueui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/issue-management/issue-management.ts"
click node_assistantui "https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/assistant/assistant-panel.ts"
click node_api "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/app.ts"
click node_agent "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/agent/agent.ts"
click node_tools "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/tools/index.ts"
click node_sessions "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/db/sqlite.ts"
click node_sample "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/sample-data-routes.ts"
click node_integration "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/introspect-routes.ts"
click node_cube "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/cube-routes.ts"
click node_dashboard "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/dashboard/cube-query.ts"
click node_iris "https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/iris/index.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_workbench,node_sampleui,node_modelui,node_integrationui,node_cubeui,node_kpiui,node_dashboardui,node_issueui,node_assistantui toneBlue
class node_api,node_agent,node_tools,node_sessions toneAmber
class node_sample,node_integration,node_cube,node_dashboard toneMint
class node_iris toneRose
class node_builder,node_ai_provider,node_sources toneIndigo
```

## Components

### Workbench UI

- [Workbench shell](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/workbench/workbench.ts): `frontend/src/app/workbench/workbench.ts`
- [Sample data](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/load-sample-data/load-sample-data.ts): `frontend/src/app/load-sample-data/load-sample-data.ts`
- [Data model](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/business-process/business-process.ts): `frontend/src/app/business-process/business-process.ts`
- [Data integration](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/data-integration/data-integration.ts): `frontend/src/app/data-integration/data-integration.ts`
- [Analytics cubes](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/bi-cubes/bi-cubes.ts): `frontend/src/app/bi-cubes/bi-cubes.ts`
- [Business KPIs](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/kpi/kpi.ts): `frontend/src/app/kpi/kpi.ts`
- [Dashboards](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/dashboard/dashboard.ts): `frontend/src/app/dashboard/dashboard.ts`
- [Issue management](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/issue-management/issue-management.ts): `frontend/src/app/issue-management/issue-management.ts`
- [AI assistant](https://github.com/intersystems-community/sco-workbench/blob/main/frontend/src/app/assistant/assistant-panel.ts): `frontend/src/app/assistant/assistant-panel.ts`

### Workbench API

- [HTTP API](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/app.ts): `backend/src/server/app.ts`
- [Agent runtime](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/agent/agent.ts): `backend/src/agent/agent.ts`
- [Agent tools](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/tools/index.ts): `backend/src/tools/index.ts`
- [Sessions and drafts](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/db/sqlite.ts): `backend/src/db/sqlite.ts`

### SCO authoring

- [Sample-data loader](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/sample-data-routes.ts): `backend/src/server/sample-data-routes.ts`
- [Integration pipeline](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/introspect-routes.ts): `backend/src/server/introspect-routes.ts`
- [Cube authoring](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/server/cube-routes.ts): `backend/src/server/cube-routes.ts`
- [Chart and KPI queries](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/dashboard/cube-query.ts): `backend/src/dashboard/cube-query.ts`

### Connected systems

- [IRIS SCO instance](https://github.com/intersystems-community/sco-workbench/blob/main/backend/src/iris/index.ts): `backend/src/iris/index.ts`

### Other components

- **Application builder**
- **Claude provider**
- **Data sources**

## Connections

- Application builder → Workbench shell: uses
- Workbench shell → Sample data: opens
- Workbench shell → Data model: opens
- Workbench shell → Data integration: opens
- Workbench shell → Analytics cubes: opens
- Workbench shell → Business KPIs: opens
- Workbench shell → Dashboards: opens
- Workbench shell → Issue management: opens
- Workbench shell → AI assistant: opens
- Sample data → HTTP API: loads data via
- Data model → HTTP API: manages model via
- Data integration → HTTP API: configures via
- Analytics cubes → HTTP API: authors via
- Business KPIs → HTTP API: manages via
- Dashboards → HTTP API: queries via
- Issue management → HTTP API: reviews via
- AI assistant → HTTP API: chats via
- HTTP API → Agent runtime: dispatches chat
- Agent runtime → Agent tools: invokes
- Agent runtime → Sessions and drafts: stores session
- HTTP API → Sessions and drafts: persists drafts
- HTTP API → Sample-data loader: routes sample loads
- HTTP API → Integration pipeline: routes integration
- HTTP API → Cube authoring: routes cube work
- HTTP API → Chart and KPI queries: routes analytics
- Sample-data loader → IRIS SCO instance: loads SCO tables
- Integration pipeline → Data sources: introspects
- Integration pipeline → IRIS SCO instance: deploys pipeline
- Cube authoring → IRIS SCO instance: compiles and builds
- Chart and KPI queries → IRIS SCO instance: executes MDX
- Agent tools → IRIS SCO instance: acts on instance
- Agent runtime → Claude provider: requests completions
