|
| 1 | +<small>**Project:** Agentic Orchestration Studio</small> |
| 2 | + |
| 3 | +# Architecture Options |
| 4 | + |
| 5 | +Two proposed architectures for an open-source orchestration platform, from comprehensive to minimal. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## Option A: Full Composed Stack |
| 10 | + |
| 11 | +Maximum flexibility. Covers all four capabilities (Map, Automate, Orchestrate, Analyze) with best-of-breed tools at each layer. |
| 12 | + |
| 13 | +### Components |
| 14 | + |
| 15 | +| Layer | Tool | Role | |
| 16 | +| ---------------------------- | ----------------------- | -------------------------------------------------------------------------------------------- | |
| 17 | +| **Process engine** | Flowable | BPMN 2.0 process execution, CMMN case management, DMN decision tables, human task management | |
| 18 | +| **Process modeler** | BPMN.io | Web-based visual BPMN editor, embeddable in our UI | |
| 19 | +| **Agent orchestration** | LangGraph | AI agent workflows — classification, summarization, decision support, with human-in-the-loop | |
| 20 | +| **Integration & automation** | n8n | 400+ connectors to external systems (forms, case management, email, APIs) | |
| 21 | +| **RPA** | Robot Framework | Desktop/browser/API automation for legacy systems | |
| 22 | +| **Operations monitoring** | Grafana + OpenTelemetry | Infrastructure health, alerting, detailed analytics (IT/admin only) | |
| 23 | +| **Data store** | PostgreSQL | Shared database for process state, audit logs, analytics | |
| 24 | +| **Identity** | Keycloak | Single sign-on, role-based access, municipal AD integration | |
| 25 | + |
| 26 | +### How it fits together |
| 27 | + |
| 28 | +``` |
| 29 | +┌─────────────────────────────────────────────────────────┐ |
| 30 | +│ Web Frontend │ |
| 31 | +│ (Process maps, dashboards, task inbox) │ |
| 32 | +├────────────┬────────────┬────────────┬──────────────────┤ |
| 33 | +│ BPMN.io │ Task UI │ Dashboard │ Admin │ |
| 34 | +│ (modeler) │ (inbox) │ (custom) │ (config) │ |
| 35 | +├────────────┴────────────┴────────────┴──────────────────┤ |
| 36 | +│ API Gateway │ |
| 37 | +├────────────┬────────────┬────────────┬──────────────────┤ |
| 38 | +│ Flowable │ LangGraph │ n8n │ Robot Framework │ |
| 39 | +│ (BPMN/ │ (agents) │ (integr.) │ (RPA) │ |
| 40 | +│ CMMN/ │ │ │ │ |
| 41 | +│ DMN) │ │ │ │ |
| 42 | +├────────────┴────────────┴────────────┴──────────────────┤ |
| 43 | +│ Keycloak (identity/SSO) │ |
| 44 | +├─────────────────────────────────────────────────────────┤ |
| 45 | +│ PostgreSQL │ OpenTelemetry │ Grafana │ |
| 46 | +│ (state/audit) │ (telemetry) │ (dashboards) │ |
| 47 | +└─────────────────────────────────────────────────────────┘ |
| 48 | + │ |
| 49 | + ┌─────────────┼─────────────┐ |
| 50 | + │ │ │ |
| 51 | + ┌───┴───┐ ┌────┴───┐ ┌────┴───┐ |
| 52 | + │ KMD │ │ SBSYS │ │OS2Forms│ |
| 53 | + │ │ │ │ │ │ |
| 54 | + └───────┘ └────────┘ └────────┘ |
| 55 | + (external systems / backends) |
| 56 | +``` |
| 57 | + |
| 58 | +### Interaction patterns |
| 59 | + |
| 60 | +1. **Process designer** uses BPMN.io to model a process visually |
| 61 | +2. **Flowable** executes the BPMN process, routing between automated steps and human tasks |
| 62 | +3. At an "agent step", Flowable delegates to **LangGraph** which runs the AI agent(s) |
| 63 | +4. At an "integration step", Flowable triggers **n8n** workflows to talk to external systems |
| 64 | +5. At an "RPA step", Flowable triggers a **Robot Framework** job for legacy system automation |
| 65 | +6. **Human-in-the-loop** tasks appear in a task inbox UI, powered by Flowable's task service |
| 66 | +7. The **platform dashboard** (custom, built into the web frontend) shows process stats, task counts, hours saved, and ROI to all users |
| 67 | +8. **OpenTelemetry** collects infrastructure metrics from all components; **Grafana** provides detailed operational dashboards, alerting, and ad-hoc analytics for IT/admins |
| 68 | +9. **Keycloak** handles authentication and role-based access across all components |
| 69 | + |
| 70 | +### Strengths |
| 71 | + |
| 72 | +- Full coverage of Map, Automate, Orchestrate, Analyze |
| 73 | +- Each component is replaceable (no vendor lock-in) |
| 74 | +- Scales independently per layer |
| 75 | +- Standards-based (BPMN 2.0, OpenTelemetry, OIDC) |
| 76 | + |
| 77 | +### Risks |
| 78 | + |
| 79 | +- Integration complexity — 6+ components to connect and maintain |
| 80 | +- Requires strong DevOps capability |
| 81 | +- More moving parts = more potential failure points |
| 82 | +- Longer time to first value |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +## Option B: Minimal Viable Stack |
| 87 | + |
| 88 | +Fastest path to a working platform. Three components covering the core needs. |
| 89 | + |
| 90 | +!!! info "See the mock" |
| 91 | + The [Unified Platform mock](mocks/unified-platform.html) demonstrates how these three components can feel like a single seamless platform. |
| 92 | + |
| 93 | +### Components |
| 94 | + |
| 95 | +| Layer | Tool | Role | |
| 96 | +| -------------------------------- | -------- | ---------------------------------------------- | |
| 97 | +| **Process engine + human tasks** | Flowable | BPMN execution, case management, task inbox | |
| 98 | +| **Integration & automation** | n8n | External system connectors, simple automations | |
| 99 | +| **Platform dashboard** | Custom (built-in) | Process stats, task overview, hours saved — for all users | |
| 100 | +| **Operations monitoring** | Grafana + OpenTelemetry | Infrastructure health, alerting, ad-hoc analytics — for IT/admins | |
| 101 | + |
| 102 | +### How it fits together |
| 103 | + |
| 104 | +``` |
| 105 | +┌─────────────────────────────────────┐ |
| 106 | +│ Web Frontend │ |
| 107 | +│ (Process maps, task inbox, │ |
| 108 | +│ dashboards) │ |
| 109 | +├──────────────┬──────────────────────┤ |
| 110 | +│ Flowable │ n8n │ |
| 111 | +│ (BPMN + │ (integrations │ |
| 112 | +│ tasks + │ + automations) │ |
| 113 | +│ dashboard) │ │ |
| 114 | +├──────────────┴──────────────────────┤ |
| 115 | +│ PostgreSQL │ OpenTelemetry │ |
| 116 | +├───────────────────┤ + Grafana │ |
| 117 | +│ (state/audit) │ (ops only) │ |
| 118 | +└───────────────────┴─────────────────┘ |
| 119 | + │ |
| 120 | + ┌─────────┼─────────┐ |
| 121 | + │ │ │ |
| 122 | + ┌───┴──┐ ┌──┴───┐ ┌──┴────┐ |
| 123 | + │ KMD │ │SBSYS │ │OS2Forms│ |
| 124 | + └──────┘ └──────┘ └───────┘ |
| 125 | +``` |
| 126 | + |
| 127 | +### What you get |
| 128 | + |
| 129 | +- **Map:** BPMN process modeling via Flowable's built-in modeler (or BPMN.io added later) |
| 130 | +- **Automate:** n8n handles integrations and simple automations |
| 131 | +- **Orchestrate:** Flowable manages process execution and human-in-the-loop |
| 132 | +- **Analyze:** Platform dashboard shows process stats and ROI to all users; Grafana provides operational monitoring for IT |
| 133 | + |
| 134 | +### What you don't get (yet) |
| 135 | + |
| 136 | +- AI agent orchestration (add LangGraph when ready) |
| 137 | +- RPA for legacy desktop apps (add Robot Framework when needed) |
| 138 | +- Advanced analytics / ROI measurement (evolve the platform dashboard) |
| 139 | + |
| 140 | +### Strengths |
| 141 | + |
| 142 | +- Three components — manageable to operate |
| 143 | +- Fast to stand up (weeks, not months) |
| 144 | +- Proves the concept before investing in the full stack |
| 145 | +- Each component has a large, active community |
| 146 | + |
| 147 | +### Growth path |
| 148 | + |
| 149 | +``` |
| 150 | +Minimal stack (Phase 1) |
| 151 | + └─ + LangGraph (Phase 2: AI agents) |
| 152 | + └─ + Robot Framework (Phase 3: RPA) |
| 153 | + └─ + Keycloak (Phase 4: SSO/roles) |
| 154 | + └─ + BPMN.io (Phase 5: visual modeler) |
| 155 | +``` |
| 156 | + |
| 157 | +--- |
| 158 | + |
| 159 | +## Two Dashboard Layers |
| 160 | + |
| 161 | +An important distinction: the platform has **two kinds of dashboards** serving different audiences. |
| 162 | + |
| 163 | +### Platform dashboard (built into the app) |
| 164 | + |
| 165 | +This is what all users see — process owners, caseworkers, managers. It shows: |
| 166 | + |
| 167 | +- Active processes, completion rates, task counts |
| 168 | +- Hours saved, estimated ROI |
| 169 | +- Process bottlenecks (where are things stuck?) |
| 170 | +- Personal task overview |
| 171 | + |
| 172 | +This is a custom-built part of the web frontend, pulling data from Flowable's process engine and PostgreSQL. It does not require Grafana. |
| 173 | + |
| 174 | +### Operations dashboard (Grafana — IT/admins only) |
| 175 | + |
| 176 | +This is where IT monitors the platform itself. It shows: |
| 177 | + |
| 178 | +- Infrastructure health — is Flowable responding? n8n queue depth? Database connections? |
| 179 | +- Error rates and alerting — "n8n automation X has failed 3 times in the last hour" |
| 180 | +- Detailed analytics — ad-hoc queries like "average completion time for building permits by month over the last year" |
| 181 | +- SLA monitoring — "3 tasks have breached their 48-hour SLA" |
| 182 | +- Resource utilization — CPU, memory, disk across all components |
| 183 | + |
| 184 | +Grafana connects to OpenTelemetry (for infrastructure metrics) and PostgreSQL (for process data). It's accessible via a separate URL or linked from an admin section in the platform. |
| 185 | + |
| 186 | +| | Platform dashboard | Grafana (ops) | |
| 187 | +|---|---|---| |
| 188 | +| **Audience** | Everyone | IT / admins | |
| 189 | +| **Purpose** | Business value, task overview | Infrastructure health, alerting | |
| 190 | +| **Data source** | Flowable + PostgreSQL | OpenTelemetry + PostgreSQL | |
| 191 | +| **Built by** | Us (part of the app) | Configuration (Grafana dashboards) | |
| 192 | +| **Access** | Main navigation | Admin section / separate URL | |
| 193 | + |
| 194 | +--- |
| 195 | + |
| 196 | +## Deployment |
| 197 | + |
| 198 | +Both options should be deployed as containers (Docker/Kubernetes) for consistency and scalability. All components support containerized deployment. |
| 199 | + |
| 200 | +### Infrastructure requirements (minimal stack) |
| 201 | + |
| 202 | +| Component | CPU | Memory | Storage | |
| 203 | +| ---------- | ----------- | --------- | --------- | |
| 204 | +| Flowable | 2 cores | 4 GB | 10 GB | |
| 205 | +| n8n | 1 core | 2 GB | 5 GB | |
| 206 | +| Grafana | 1 core | 1 GB | 5 GB | |
| 207 | +| PostgreSQL | 2 cores | 4 GB | 50 GB | |
| 208 | +| **Total** | **6 cores** | **11 GB** | **70 GB** | |
| 209 | + |
| 210 | +This fits comfortably on a single server or a small Kubernetes cluster. |
| 211 | + |
| 212 | +--- |
| 213 | + |
| 214 | +## Recommendation |
| 215 | + |
| 216 | +**Start with Option B.** Get a working platform with one real process running end-to-end. Use it to demonstrate value and build organizational buy-in. Then grow toward Option A based on actual needs, not assumptions. |
0 commit comments