The /drasi dashboard provides a real-time visualization of Drasi reactive data pipelines — Sources, Continuous Queries, and Reactions — with full CRUD management, live SSE streaming, and per-language code samples for consuming query result streams.
Drasi is a CNCF Sandbox project by Microsoft that enables continuous, event-driven queries over changing data. The console integration supports all three Drasi deployment modes equally: drasi-server (standalone REST), drasi-platform (Kubernetes operator), and drasi-lib (embedded Rust, via drasi-server REST).
Navigate to /drasi on your console. Without any configuration, the card runs in demo mode with four pre-seeded Drasi connections (retail-analytics, iot-telemetry, fraud-detection, supply-chain) — each showing a different themed pipeline with three independent flows. Switch between servers and flows using the dropdowns at the top of the card.
http://localhost:8090).prow).If you don’t have Drasi installed yet, click the “Install Drasi” banner at the top of the card → it deep-links to the /missions/install-drasi AI mission.
The card renders a 6-column grid layout:
Animated SVG flow lines connect sources → queries → reactions with state-aware colors:
Lines animate with traffic dots whose count and spacing vary per line (solo dot, tight cluster, even stream, burst + trail). Hover any node to highlight its connected subgraph and dim everything else.
The card automatically derives flows (connected components of the source→query→reaction graph) and exposes them in a Flow dropdown next to the server selector. Select a flow to focus the view on pipeline at a time.
In demo mode each themed server has 3 disjoint flows — for example, retail-analytics has abandoned-carts, low-stock-alerts, and vip-customer-activity.
window.confirm) asks for confirmation before calling DELETE through the proxy..yaml file.All mutations route through the backend’s generic /api/drasi/proxy/* reverse proxy, which forwards to either the drasi-server REST API or the drasi-platform in-cluster API based on the active connection.
When a drasi-server connection is active, clicking a Continuous Query populates a live results table via Server-Sent Events (SSE). The table:
added, updated, deleted) arriveFor drasi-platform connections, an “Enable live results” button appears that-click-creates a Result reaction scoped to the selected query.
Click “Consume stream” in the header strip (or in the results-table header) to open a drawer with per-language snippets showing how to subscribe to the Drasi SSE output from external code:
EventSource)eventsource npm package)httpx streaming)net/http + bufio)HttpClient)Snippets are templated with the real stream URL in live mode, or a placeholder URL in demo mode. Each has a copy button.
A strip above the graph shows four at-a-glance counters: Events/s, Result Rows, Sources, and Reactions. In live mode these track the SSE stream’s row arrival rate; in demo mode they’re derived from the rolling result set.
Connections are stored in the browser’s localStorage — no backend persistence required. Environment variables (VITE_DRASI_SERVER_URL, VITE_DRASI_PLATFORM_CLUSTER) are auto-seeded into the list on first use so existing deployments keep working without manual setup.
The connections modal supports full CRUD (add, edit, delete, select) modeled after the AI/ML endpoint management pattern.
| Mode | How the console reaches it | Configuration |
|---|---|---|
| drasi-server (standalone) | Direct REST calls via /api/drasi/proxy?target=server&url=<url> | Connection URL in the manager |
| drasi-platform (Kubernetes) | K8s API Service proxy via /api/drasi/proxy?target=platform&cluster=<ctx> | Connection cluster context in the manager |
| drasi-lib (embedded Rust) | Same as drasi-server — embedders expose the standard REST API | Connection URL pointing at the embedder’s endpoint |