What is a decision?

A decision is one agent turn: what went in, what came out, and optional context. Histeeria stores it, displays it in Monitoring, and feeds it to the evaluation engine.
FieldPurpose
inputPrompt, messages, or structured context
outputAgent response or action summary
agent_idLogical agent identifier (string you choose)
session_idConversation or workflow run ID
domainEvaluation context (e.g. customer_support, legal)
metadataCustom key-value data (tags, user ID, flags)
input_tokens / output_tokensOptional token counts
sdk_versionSet automatically by the SDK
After ingest, the decision status progresses: queuedevaluated.

Ingest flow

  1. Your code calls observe() or POST /v1/ingest
  2. API validates the API key and workspace
  3. Decision is persisted and queued for evaluation
  4. SDK returns immediately (async delivery)
See Ingest API for the REST contract.

Evaluation flow

  1. Warmup — engine waits until the agent has enough decisions (EVAL_WARMUP_MIN_DECISIONS)
  2. Batch evaluation — decisions scored in batches by the judge model
  3. Aggregation — per-agent dimension averages and overall grade
  4. Incidents — low scores or streaks trigger inbox items
Evaluation uses your agent profile (role, description) as context so scores reflect what “good” means for that agent.

Sub-agents and tracing

Multi-step agents can use tracing to send intermediate steps under one session. Each step becomes a decision; the trace can mark a final output and resolution status.
with h.trace(agent_id="research-bot", session_id="run-42") as trace:
    draft = llm(messages)
    trace.step("draft", input=messages, output=draft)
    final = llm(draft + review_prompt)
    trace.complete(final_output=final, resolved=True)
See Tracing.

Grades

Overall scores map to letter grades in the UI:
GradeOverall score
A≥ 8.5
B≥ 7.0
C≥ 5.5
D≥ 4.0
F< 4.0