Skip to main content
Chat is a dispatch fired now: you send a message, an agent works your workspace — every meeting, email, and note already compiled there — and answers, streaming back live. This is not retrieval over a document store; the workspace is a maintained Markdown knowledge base the agent reads and edits like a developer in a repo.

Ask a question

The endpoint returns Server-Sent Events:
curl -N -X POST "$API_BASE/agent/chat" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"prompt":"What did we agree with Acme on pricing, and what is still open?"}'
Each data: line is one frame:
framefieldsmeaning
message-deltatexta chunk of the streamed reply
tool-calltool, args, callIdthe agent invoked a tool
tool-resultcallId, ok, summarythat tool returned
commitshathe agent wrote to the workspace (git commit)
rejectedviolationsa write was blocked by governance
donereply, sessionId, okturn finished

Record a decision (trusted write)

Because input from you is trusted, the same agent can write — record a decision, update an entity, draft a doc. Just ask:
curl -N -X POST "$API_BASE/agent/chat" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"prompt":"Record that Acme renewed at the Q3 pricing, effective July 1."}'
Watch for a commit frame — git is the durable state and the undo.

Continue a conversation

Pass session to keep context across turns; reset or inspect history:
# continue a session
-d '{"prompt":"And who owns the follow-up?","session":"<sessionId>"}'

curl -X POST "$API_BASE/agent/chat/reset" -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" -d '{"session":"<sessionId>"}'      # → {"ok":true}

curl -H "X-API-Key: $API_KEY" "$API_BASE/agent/sessions"             # list sessions
curl -H "X-API-Key: $API_KEY" "$API_BASE/agent/sessions/<id>/history"

Build a cross-source briefing

The agent grounds its answer in everything the workspace holds, so you can ask it to pull a topic together across past meetings and emails:
-d '{"prompt":"Brief me on the Acme account: every meeting and email, the open decisions, and the next step."}'
This is the knowledge agent pattern — the output is anchored in accumulated context, and each run leaves the workspace a little more complete.
A rejected frame means governance blocked the write. Trusted chat may write; untrusted triggers (email, web) are propose-only — see Governance and Troubleshooting.