early preview github.com/kontourai/kontour-console

Console

suite trust state made operable without becoming the source of truth

Each Kontour product makes one kind of trust state portable — Surface claims, Survey reviews, Flow runs, Veritas readiness, agent sessions. Kontour Console brings them into a single place to see what's true, what's in progress, what's stale, what's blocked, what proof exists, and what should happen next — without taking over the products it observes. Product semantics stay with Surface, Survey, Flow, Veritas, and Flow Agents; Console aggregates, correlates, and routes.

kontour-console — fixture inspection

$ npm run inspect:fixtures


Kontour Console fixture inspection


Event streams: 3

Projection snapshots: 2


claim claim-provider-directory verified freshness=fresh

process run-provider-118-review completed

gate gate-provider-evidence passed

review review-provider-118 approved

action action-apply-provider-118 read-only


───────────────────────────────

Validation: errors=0

actions shown as inert descriptors only

What it's built to answer

The cross-product questions a suite plane has to answer.

These are the questions Console is designed around. Today it can answer them from local fixtures and producer helpers; answering them from live Surface, Flow, Survey, and Veritas data is what the contracts below are being built toward.

01 What claims are true, and how fresh are they?
02 Which processes are running, blocked, or done?
03 What proof backs each answer?
04 What's in the queue and waiting on a person?
05 What decisions were made, and by whom?
06 What's stale and needs reverification?
07 Which exceptions were accepted?
08 What should happen next?

The operating plane

Primitives make transparency portable.
Console makes it operable.

The contract is simple: each product publishes a console projection — a read model shaped for display and action — backed by an append-only event stream. Console composes those projections and links related objects across products by their own IDs.

Projections stay product-owned; Console aggregates, correlates, filters, and routes — it never becomes a second source of truth. Today this runs through dependency-free producer helpers and local fixtures, not yet a live feed from each product.

producers → console

Surface claim status, evidence, freshness

Survey fact-review records, candidates, decisions

Flow runs, gates, transitions, exceptions

Veritas repo readiness, evidence gaps

Flow Agents session + continuation state


each emits → console projection + event stream

───────────────────────────────

Kontour Console one correlated operating plane

Unified work queue

Everything waiting on a human,
in one queue.

Stale claims, evidence gaps, open Flow gates, Survey review items, reverification requests, and Veritas readiness gaps usually live in five different tools. The queue is the design goal: bring them into one suite-level view so nothing waits unseen.

Each item keeps a link back to the product that owns it — and the product that owns the action stays the authority that runs it. The view below is illustrative; cross-product feeds are still being wired in.

suite work queue — illustrative

stale surface · claim-provider-directory

→ request reverification

open flow · gate-provider-evidence

→ review evidence, then resume run

review survey · review-provider-118-npi

→ approve or send back a candidate

ready veritas · change-search-filters

→ merge with reduced review


───────────────────────────────

actions routed to the owning product

Example use case

A release operator sees what needs attention.

Before a launch, an operator opens Console and sees one stale Surface claim, one Flow gate blocked on missing browser evidence, and one Veritas readiness report that passed. Console correlates the objects and routes each action back to the product that owns it.

The source of truth does not move. Console makes the next action visible without owning claim semantics, gate semantics, or policy.

operator attention view

attention surface · claim-provider-directory stale

blocked flow · release-browser-check missing

ready veritas · readiness-report passed


route stale claim → Surface

route blocked gate → Flow

route readiness evidence → Veritas

Operable, not authoritative

Console is a management plane, not a product kernel. It can host collaboration and monitoring, but it must not own the core semantics of the products it observes — and primitives never have to depend on it.

Console owns

  • Suite navigation & workspace structure
  • Cross-product aggregation & correlation
  • Unified queues & action routing
  • Identity links across product objects
  • Extension composition across consoles

Console does not own

  • Surface trust derivation
  • Flow gate & transition semantics
  • Survey fact-review semantics
  • Veritas governance policy
  • Any hosted-infrastructure requirement

Primitives stay portable

  • Adopt Surface, Flow, Survey, or Veritas alone
  • Event streams are the durable contract
  • Projections are cached, product-owned views
  • Actions execute through the owning product
  • No `.kontour` dependency for verticals

Where it is today

Contracts first.
Shared UI later.

Console starts with the contracts that make a suite plane possible — event streams, projection boundaries, identity links, and a queue and action vocabulary. A shared shell comes after Surface, Flow, and Survey consoles prove which pieces are truly common.

Today the repo ships a local read-only fixture inspector, a loopback event hub, and a local UI that renders live suite state over SSE — backed by dependency-free producer helpers that write control-plane records under a local .kontour root. Cross-product wiring is still example-stage. No hosted service. No login.

local-producer.js
// write control-plane records locally — no network
const { KontourEmitter, LocalFileSink } =
  require("./src/console-foundation");

const emitter = new KontourEmitter({
  sink: new LocalFileSink({ root: ".kontour" }),
});

await emitter.emitEvent({
  type: "claim.updated",
  producer: { product: "surface" },
  subject: { kind: "claim", id: "claim-1" },
});

// → .kontour/events/ + .kontour/projections/

Kontour primitives make transparency portable. Kontour Console makes transparency operable — you can adopt any product without it.