Architecture
System overview
Section titled “System overview”┌─────────────────────────────────────────────────┐│ A3T Console ││ (SvelteKit SPA · console.a3t.io) │└──────────────────┬──────────────────────────────┘ │ MCP (JSON-RPC)┌──────────────────▼──────────────────────────────┐│ FlowR Server ││ (Rust · CNCF Workflow Runtime) ││ ││ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ ││ │ Workflow │ │ Resource │ │ Trigger Manager │ ││ │ Engine │ │ Registry │ │ (webhook/cron) │ ││ └────┬─────┘ └──────────┘ └──────────────────┘ ││ │ ││ ┌────▼─────────────────────────────────────┐ ││ │ Task Executors (26 types) │ ││ │ set · call:http · call:llm · call:agent │ ││ │ call:lancedb · switch · for · fork · ... │ ││ └──────────────────────────────────────────┘ │└──────────────────┬──────────────────────────────┘ │ ┌───────────┼───────────┐ ▼ ▼ ▼ ┌───────┐ ┌────────┐ ┌────────┐ │ LLMs │ │ClawDB │ │LanceDB │ │ │ │(Memory)│ │(Store) │ └───────┘ └────────┘ └────────┘Communication protocol
Section titled “Communication protocol”All communication uses MCP (Model Context Protocol) over JSON-RPC 2.0:
{ "jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": { "name": "execute_flow", "arguments": { "name": "my-flow", "namespace": "default" } }}The FlowR server exposes MCP tools that the console, CLI, and other MCP clients can call.
Execution model
Section titled “Execution model”- Workflow registered — YAML parsed and stored
- Execution requested — instance created, queued
- Steps execute sequentially — each step runs its task executor
- Async completion — poll
get_execution_statusfor result - Output returned — final step output is the workflow result
Workflows are fire-and-forget with polling. The execute_flow call returns immediately with an instance ID. Use get_execution_status to check progress.
Resource model
Section titled “Resource model”Resources are named connections to external systems. They’re referenced by steps:
- name: query-db type: call:lancedb resource: a3t/a3t-platform-db # namespace/name reference config: operation: query table: usersResource types: openai, anthropic, ollama, postgres, mysql, lancedb, redis, qdrant, mcp, http, clawdb, agent.
Namespace isolation
Section titled “Namespace isolation”All entities (workflows, resources, triggers) are scoped to a namespace. The default namespace is default. A3T platform entities use the a3t namespace.