Skip to content
useEventStack 0.3.0 is live.Read the quickstart

Preview

Operations AI is an experimental preview

A read-only assistant that answers questions about a single project's events, workflows and projections. It is unfinished, off by default, and nothing else in the platform depends on it.

Status

Work in progress — do not build on it yet

Operations AI is the one surface in useEventStack that is not finished. It is disabled by default, its answers can be incomplete or wrong, and its shape may change or be withdrawn between releases. Every other capability described in these docs is implemented and covered by tests.

We are publishing it in this state deliberately rather than hiding it, because it is visible in the dashboard. If you see it there, you should know exactly how much weight it carries.

AspectState
Conversation storage and historyImplemented and project-scoped
Read-only tool calls against live dataImplemented
Access control and project isolationImplemented and tested
Answer qualityUnverified — no evaluation suite
Enabled by defaultNo
Rate limits and cost controlsNot implemented
Streaming responsesNot implemented
Write or remediation actionsNot implemented, and not planned for the preview

What it can do

When enabled, the assistant answers questions by calling a fixed set of read-only tools against the project you have selected:

ToolReads
query_eventsThe event ledger
list_workflowsWorkflow definitions
list_contractsEvent contracts
query_projectionsOperational projections
list_custom_actionsCustom action names and status
get_failed_eventsFailed events awaiting triage

The dashboard shows which tools were used to produce each answer, so you can check the reasoning against the same data yourself.

What it cannot do

  • Change anything. There is no write tool. It cannot emit events, edit workflows, upload actions, trigger replays, or alter billing.
  • Cross a project boundary. Every tool call is scoped to the project in the request, and the project is verified against your organization before any query runs.
  • Read another tenant's data. The same isolation that governs the API governs the assistant.
  • Read your custom action source or secrets. It sees action names and status, never WASM bytes or secret values.
  • Be driven by an API key. It requires a signed-in user session; machine credentials are refused with 403.

Enabling it

Self-hosted deployments turn it on with two environment variables:

USEEVENTSTACK_AI_ASSISTANT_ENABLED=true
USEEVENTSTACK_AI_ASSISTANT_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0

The API process also needs AWS credentials that can invoke that Bedrock model in its region. There is no other supported provider yet.

Because there are no rate limits or spend controls in the preview, treat model cost as unbounded and enable it only where you can watch the bill.

When it is off

The surface reports its own state rather than failing on first use. The dashboard asks before it offers you an input box:

GET /ai/status
{
  "enabled": false,
  "status": "not_configured",
  "stage": "experimental",
  "read_only": true,
  "message": "The Operations AI assistant is an experimental preview and is not enabled on this deployment."
}

Sending a message anyway returns a specific error, not a generic failure:

POST /ai/chat  ->  503
{
  "error": {
    "code": "ai_assistant_not_configured",
    "message": "The Operations AI assistant is an experimental preview and is not enabled on this deployment. Everything else in the workspace is unaffected."
  }
}

If the assistant is enabled but its model cannot be reached, the code isai_assistant_unavailable, also 503. Neither case is reported as an internal error, because neither means the platform is broken.

Access control

The assistant is the most restricted surface in the API:

RequirementBehavior
Signed-in user sessionRequired. An API key is refused with 403.
Anonymous request401
Organization membershipChecked, including MFA enforcement and session expiry
Project headerMandatory, and verified to belong to your organization
Foreign project id403 project_access_denied, logged as a blocked cross-project access
Conversation accessScoped to the owning user, organization and project

Data handling

  • Conversations are stored in your organization's Postgres rows, scoped to your user and project, and are readable and deletable through /ai/conversations.
  • When enabled, message content and the results of tool calls are sent to the configured AWS Bedrock model in order to produce an answer.
  • Nothing is sent anywhere while the assistant is disabled, which is the default.
  • Tool results are the same rows the API would return to you directly — the assistant has no privileged view.

Roadmap

Before this stops being labelled a preview it needs, at minimum: an evaluation suite for answer quality, per-organization rate limits and spend caps, streaming responses, and a documented policy for what leaves your deployment. Until those exist, treat every answer as a starting point for your own query rather than an authoritative result.

Planned work is tracked in the roadmap. Nothing on this page describes behavior that is not in the code today.