Product architecture¶
Scope: cross-cutting (runtime, UI, cloud) Design reference: §9 (three-component system), §15 (UI), §20 (phasing) Status: draft
Goal¶
Define the deployment architecture and open-source/commercial boundary for SwarmKit as a product, with the Rynko platform (rynko.dev) as the commercial host.
Core principle¶
The runtime is open-source. The UI is a commercial product hosted on the Rynko platform. The CLI is the free, complete interface.
Brand separation¶
- SwarmKit = the open-source framework. Own GitHub org, own docs, own identity. No Rynko branding in the repo, CLI, or runtime.
- Rynko (rynko.dev) = the commercial platform that hosts SwarmKit's operational UI. The SwarmKit dashboard is a product surface within Rynko, alongside existing capabilities (flows, extraction, validation gates).
The relationship is analogous to Kubernetes (open-source orchestrator) and GKE/EKS (commercial platform you run it on). SwarmKit users who want a visual ops layer sign up for Rynko — one account, one billing relationship, one place to manage agents, flows, and gates.
Rynko's existing infrastructure — auth, teams, billing, flow/gate pipeline — is reused rather than rebuilt. SwarmKit agent topologies and Rynko validation flows are complementary: an agent can trigger a Rynko gate, a Rynko flow can invoke a SwarmKit topology.
Open-source boundary¶
The open-source project includes:
- Runtime — topology interpreter, LangGraph compiler, governance engine, model providers, skill registry, CLI
- Schema — canonical JSON schemas, Python and TypeScript validators
- CLI — full operational surface:
swarmkit run,swarmkit status,swarmkit logs,swarmkit audit,swarmkit ask, approval prompts, drift scores - Authoring swarms — conversational topology and skill authoring via CLI chat
The open-source project is complete and self-sufficient. A solo developer or team can build, run, debug, and evolve swarms entirely from the terminal with no paid dependency.
Commercial product: SwarmKit on Rynko¶
The UI (dashboard, topology composer, runtime monitor, approval queue) is a paid product surface on the Rynko platform. It is not open-source.
Why the UI is commercial¶
- The runtime must run in the user's environment (security, data sovereignty, credential access). It cannot be a hosted service. This limits SaaS revenue on the runtime itself.
- The UI is where operational, team, and compliance value concentrates — visibility, collaboration, analytics, alerting, audit retention. These justify recurring revenue.
- Rynko already has the platform infrastructure (auth, teams, billing, validation gates) — the SwarmKit UI is a natural extension, not a greenfield build.
- Precedent: Datadog (agent open, UI closed), Grafana (core open, enterprise UI features paid), GitLab (core open, premium tiers for ops/compliance).
What the UI provides over the CLI¶
| Capability | CLI (free) | UI (paid) |
|---|---|---|
| Topology authoring | YAML + authoring swarms | Visual composer with structure/relationships/network views |
| Run monitoring | swarmkit status, swarmkit logs |
Real-time dashboard, step-by-step agent trace visualization |
| Approval gates | Terminal prompts | Visual review queue with context, history, and team assignment |
| Audit log | swarmkit audit (local, ephemeral) |
Managed, searchable, exportable, retained per policy |
| Intent drift | CLI output per run | Visualized trends, cross-run analytics, learned thresholds |
| Team features | None | RBAC, SSO, workspace sharing, "who approved what" |
| Alerting | None | Slack/email/webhook on drift, failures, approval requests |
| Skill catalogue | swarmkit skills list (local) |
Browse and install community/verified skills |
| Compliance | DIY | Audit export for SOC2/ISO, retention policies, tamper-proof storage |
Deployment models¶
1. Open-source (CLI only)¶
Everything runs locally. No UI server, no cloud dependency.
User's environment
├── swarmkit runtime (Python)
├── local SQLite/files for audit log
└── CLI for all operations
Audience: solo developers, experimentation, open-source community.
2. Cloud-hosted UI on Rynko (primary commercial model)¶
The runtime runs in the user's environment. It pushes structured telemetry to the Rynko platform. The UI is hosted on rynko.dev.
User's environment Rynko platform (rynko.dev)
├── swarmkit runtime ──telemetry──▶ ├── event ingestion API
│ (agents, tools, ├── managed database
│ MCP servers, ├── analytics engine
│ credentials) ├── alerting service
│ ├── existing flows/gates
│ └── SwarmKit dashboard
└── local execution only │
▼
rynko.dev/swarmkit
What the runtime sends: - Audit events (agent steps, governance decisions, approval outcomes) - Drift scores - Run metadata (topology ID, agent IDs, timing, success/failure) - Skill gap detections
What the runtime never sends: - User credentials or API keys - Raw LLM prompts/responses (unless user opts in for debugging) - MCP server traffic - Local file contents
Runtime configuration:
# ~/.swarmkit/config.yaml
platform:
mode: cloud
endpoint: https://api.rynko.dev
api_key: rk-...
telemetry:
send_audit_events: true
send_drift_scores: true
send_prompts: false
Audience: teams, production deployments, anyone who wants visual ops without running infrastructure.
3. Self-hosted UI (enterprise) — Phase 3, deferred¶
Same UI, deployed in the customer's environment. Connects to a customer-managed database. No data leaves their network.
Customer's environment
├── swarmkit runtime
├── swarmkit UI server (Docker/Helm)
├── customer-managed Postgres
└── all data stays internal
Audience: enterprises with strict data policies, regulated industries, air-gapped environments. Pricing: annual contract, includes support and onboarding.
De-prioritization note: supporting on-prem software across custom Kubernetes clusters, varied ingress controllers, and restrictive enterprise firewalls is a massive engineering drain that turns the product team into an outsourced IT support desk. Treat self-hosted UI strictly as Phase 3 — only when revenue from the cloud-hosted tier justifies dedicated deployment engineering. The core pitch for 95% of customers is "Cloud UI + Local Runtime" (Tier 2). Self-hosted is a negotiation lever for large enterprise contracts, not an actively marketed product early on.
Upgrade path¶
The transition from CLI to Rynko is frictionless:
- User is running swarms via CLI (free, open-source)
- User signs up for rynko.dev, gets an API key
- User adds the API key to
~/.swarmkit/config.yaml - Existing runtime starts sending telemetry to Rynko
- All current and future runs appear in the dashboard alongside any existing Rynko flows/gates
No migration, no re-architecture, no data export/import. The runtime doesn't care where it sends events.
Revenue model¶
| Tier | What you get | Price |
|---|---|---|
| Open-source | Runtime + CLI, full functionality, unlimited agents/runs | Free |
| Team | Rynko cloud UI, team RBAC, audit retention, alerting, drift analytics | Usage-based (per-run or per-agent-step) |
| Enterprise | Self-hosted UI (Phase 3), SSO/SAML, compliance exports, SLA, support | Annual contract |
The free tier is generous enough that solo developers never need to pay. Conversion happens naturally when teams need collaboration, visibility across environments, retention, and compliance — capabilities that don't make sense to build yourself.
Why usage-based over per-seat: per-seat pricing is fundamentally misaligned with multi-agent systems. A swarm may execute 10,000 times a day autonomously without a human logging into the UI — generating massive telemetry and storage costs with zero "seat" revenue. Per-run or per-agent-step pricing aligns cost with value delivered and scales naturally with automated workloads.
Non-goals¶
- Running the runtime in Rynko's cloud — agents must execute in the user's environment
- Crippling the open-source CLI to force UI adoption — the CLI is a complete product
- Open-sourcing the UI — the UI is the commercial differentiator
Open questions¶
- ~~Exact telemetry protocol~~ — resolved: OTLP/HTTP (see
opentelemetry-observability.md, #88) - Data retention defaults per tier
- Whether the enterprise self-hosted tier includes the analytics/learning engine or just the dashboard
- Pricing model details (per-seat vs per-run vs hybrid)
- How
threshold: autolearned profiles work across cloud vs self-hosted (seeintent-drift-detection.md) - How SwarmKit topologies and Rynko flows/gates integrate at the product level — shared workspace? unified run history?
- Branding in the UI — "SwarmKit on Rynko" vs just a section within the Rynko dashboard