πΌοΈ SymphonyDesk System Diagrams
This page provides a visual, high-level overview of how SymphonyDeskβs core components interact. The diagrams are intentionally simple, clean, and readable β perfect for both technical and non-technical audiences.
π¦ 1. High-Level Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SymphonyDesk Cloud β
β (FastAPI Control Plane) β
β β
β βββββββββββββββββ ββββββββββββββββββββ βββββββββββ β
β β /run API β β /jobs API β β Dashboardβ β
β β (Clients) β β (Runners) β β (UI) β β
β ββββββββ¬βββββββββ βββββββββββ¬βββββββββ βββββββ¬βββ β β
β β β β β
ββββββββββββΌβββββββββββββββββββββββββΌββββββββββββββββββββΌββββ
β β β
β β β
βΌ βΌ βΌ
Client Integrations SymphonyRunner Web UI Users
(Service Desk, M365, (On-Prem / Hybrid) (Admins, Analysts)
external systems)
What this shows:
SymphonyDeskβs cloud API sits at the center, with three major external actors:
- Client systems submit automation requests
- Runners poll for and execute jobs
- Users interact through the web dashboard
Everything routes through the cloud control plane.
βοΈ 2. Job Flow Diagram
This diagram shows the full lifecycle of a job from creation β execution β completion.
Client / UI
β
β 1. Submit Job (/run or /jobs)
βΌ
ββββββββββββββββββββββ
β SymphonyDesk API β
β Queue Job β
βββββββββ¬βββββββββββββ
β
β 2. Runner polls for next job
βΌ
ββββββββββββββββββββββββββ
β SymphonyRunner β
β (PowerShell 7 Engine) β
βββββββββ¬βββββββββββββββββ
β
β 3. Executes runbook (pwsh.exe)
βΌ
ββββββββββββββββββββββββββ
β Runbook Execution β
β (Scripts + Params) β
βββββββββ¬βββββββββββββββββ
β
β 4. Return logs/results (/jobs/complete)
βΌ
ββββββββββββββββββββββ
β SymphonyDesk API β
β Store Results β
βββββββββ¬βββββββββββββ
β
β 5. UI fetches job history/status
βΌ
Dashboard
π‘ 3. Runner Sync & Update Diagram
This diagram shows how each on-prem SymphonyRunner keeps itself updated with the latest runbooks.
SymphonyDesk Cloud
βββββββββββββββββββββββ
β /runbooks/manifest β
β version, checksum β
βββββββββββββ¬ββββββββββ
β
β (Every ~30s)
βΌ
βββββββββββββββββββββββββββββ
β SymphonyRunner β
β (Runbook Sync Engine) β
βββββββββββββ¬ββββββββββββββββ
β
βββββββββββββ΄βββββββββββββ
β Compare Local β
β version/checksum β
βββββββββββββ¬βββββββββββββ
β
Needs Update?
β
βββββββββββββ΄βββββββββββββ
β Download updated β
β runbook (.ps1) β
βββββββββββββ¬βββββββββββββ
β
βββββββββββββ΄βββββββββββββββββββββββββββ
β Save file β Create/Update .meta.json β
ββββββββββββββββββββββββββββββββββββββββ
Outcome:
All customers always run the correct, centrally-managed, most recent version of every automation script.
π₯οΈ 4. UI & Authentication Diagram
Showing how user identity flows through the dashboard:
User Browser
β
β Login (email + password)
βΌ
βββββββββββββββββββββββββββ
β SymphonyDesk Auth API β
β (JWT Access Tokens) β
βββββββββββββ¬ββββββββββββββ
β
βΌ
JWT Access Token
β
βΌ
βββββββββββββββββββββββββββββββ
β Dashboard /jobs /stats β
β Every request validated β
β with user.customer β
βββββββββββββββββββββββββββββββ
This enforces:
- Strict tenant isolation
- No cross-customer visibility
- Expiring, revocable tokens
- RBAC-ready architecture
π 5. Security Model Diagram
This diagram illustrates the strict key separation:
SymphonyDesk Cloud
βββββββββββββββββββββββββββ
β API Key Roles β
βββββββββββββββββββββββββββ€
β CLIENT_API_KEYS β /run β
β Runner Key β /jobsβ
β User JWT β /UI β
βββββββββββββββββββββββββββ
(Three separate authentication paths)
β β β
βββββββββββ β ββββββββββββ
βΌ βΌ βΌ
Client Systems SymphonyRunner Dashboard Users
(Triggers jobs) (Executes them) (Views results)
Key takeaway:
No key is ever reused across subsystems.
This prevents compromise spread and enforces strong segmentation.
π’ 6. Multi-Tenant Data Isolation Diagram
Demonstrates how customer data is partitioned.
SymphonyDesk Storage
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β /jobs/ β
β Contoso/ (job1.json, job2.json...) β
β Fabrikam/ (jobA.json, jobB.json...) β
β β
β /runner_status/ β
β Contoso/ (Runner1.json, Runner2.json) β
β Fabrikam/ (RunnerX.json) β
β β
β CLIENT_API_KEYS β Always tied to a specific tenant β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Outcome:
Each customer operates as an isolated tenant; no cross-customer visibility or job access is possible.
π 7. End-to-End Architecture Summary Diagram
For full context, this is the combined system view:
βββββββββββββββββββββββββββββββββββββββββββββ
β SymphonyDesk Cloud API β
β (FastAPI / Jobs / Runbooks / Auth) β
βββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
β HTTPS
β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββ βββββββββββββββββββββ ββββββββββββββββββββββ
βClient Systems β β SymphonyRunner β β Web Dashboard β
β /run ββββββββΆ β Poll / Execute βββββββΆβ Jobs, Stats, Logs β
βββββββββββββββββ β Sync Runbooks β ββββββββββββββββββββββ
βββββββββββββββββββββ

