Orkestia
Blog
DGI

Interfaces

Every way to reach DGI, what each one gives you, what you build, and how to choose. Chat (hosted, embedded or your own client), the dgi.chat API, Living Surfaces, single cards with dgi.view.render, and AI assistants over MCP

DGI has one engine and several doors. Pick the door that matches where your people already work; the cards, the decisions and the safety rules are the same behind each one.

At a glance

InterfaceThe person…You buildNeeds a chat spaceModel use
Hosted chatChats on the Orkestia chat page of your appNothing: configure an actorYesJev; LLM by opt-in
Embedded chatChats inside your React appA page that mounts the componentYesJev; LLM by opt-in
Your own chat clientChats in your UI, native app or other stackThe client, reading the wire contractYesJev; LLM by opt-in
dgi.chat APITypes into any screen you ownTwo calls and a card rendererNoJev; LLM by opt-in
Living SurfaceWatches a page of cards that keeps itself currentA page that draws cards and listens to a streamNoJev; LLM by opt-in, budgeted
One cardSees a single read as a card in your screenOne call and a card rendererNoNone
AI assistant over MCPAsks Claude, ChatGPT or an agentNothing: connect the assistantNoThe assistant's own

Chat

Attach an actor to your chat space and set its responder to dgi (or hybrid, which lets DGI take the structured turns and your Staff configuration take the rest). Its replies become cards, and the composer gets a / command palette.

Three ways to deliver it:

  • Hosted chat: the Orkestia chat page on your app's address, with every card built in. Option A
  • Embedded component: <BuzzChat> inside your React app, with every card built in and your own renderers where you want them. Package access is on request during early access. Option B
  • Your own client: any UI that reads and writes the documented wire contract. Option C

Configuration for all three: the responder reference.

Any app: dgi.chat

No chat space, no relay: a request and a response. An organization admin saves a profile once (the allowed workflows, the decision settings, chips, default inputs, locale, instructions). Your app then sends each message with dgi.chat.turn and each card answer with dgi.chat.respond, and draws the card it gets back.

Use it for a support widget, a mobile screen, an internal tool or a backend that needs a structured answer. Walkthrough: Quickstart. Full reference: Option D.

Living Surfaces: dgi.surface

A page of live cards that DGI grows from an intent ("keep the platform healthy", "incident room for the checkout outage"), keeps current, reshapes as the data changes, and retires when the job is done.

  • You create it with an intent and a policy: the workflows its cards may read, how many structural changes DGI may make per step, which card types it may draw.
  • A heartbeat keeps it current every 5 minutes, and pauses when nobody is looking.
  • Changes are pushed to open pages over wss://stream.orkestia.dev/streaming/surface/{surface_uuid}.
  • Each viewer's cards are read as that viewer.
  • A useful surface can be crystallized into a reusable composition.

Members only. Full reference: Living Surfaces.

One card: dgi.view.render

When you already know which read you want, and only need it drawn, call dgi.view.render with the workflow, its input and a view kind. It runs the read as the caller and returns the card, with no conversation and no model:

start_workflow("dgi.view.render", {
  "workflow_type": "ticket.search",
  "input": {"status": "open"},
  "kind": "chart",
  "group_by": "priority",
  "chart": "bar"
})
→ {"renderer": "dgi.chart", "render": {"kind": "chart", "chart": "bar", "title": "…", "x": [...], "series": [...]}, "text": "…"}
InputValues
workflow_typeA read-only workflow the caller may run
inputIts inputs. Identity inputs are re-injected from the caller
kindtable, chart, kpi, logs, datagrid, detail, schema, dag, timeline, diff, query
group_by, chart, shape, top_nChart and KPI options: count by a column, bar/line/pie, a time series, keep the largest N
include_totalKPI: ask the read for its own total. A total equal to the read's limit is labelled as capped
gridDatagrid: sort, filters, page and columns
title, langCard title, and en, pt or es

It is safe for end users of your app when the read itself is exposed to them. Draw the result with the card catalog shapes.

AI assistants over MCP

Connect Claude, ChatGPT, Cursor or your own agent to the Orkestia MCP server. The assistant discovers the same catalog DGI uses, reads schemas, starts workflows and watches runs, and it can also call the dgi.* workflows above. Your organization and permissions come from the assistant's token. Connect an AI assistant

How to choose

  • Your team already chats in Orkestia. Hosted chat, then embed it when it should sit inside your product.
  • You have your own product UI. dgi.chat for conversations, dgi.view.render for fixed cards.
  • People need to watch something, not ask about it. A Living Surface.
  • An engineer or an agent works from an AI assistant. MCP.
  • A flow repeats every day. Promote it to a composition so it runs with no reasoning at all. See How DGI works.