For teams whose AI agents make promises across days, not seconds.

Your agent said "I'll follow up tomorrow." Did it?

Nous is the ledger every multi-step agent is missing. Every promise tracked. Every deadline watched. A nudge before the slip — and a replay of the exact decision later, same inputs, same weights, same score. Plug in any LLM. Self-host. MIT.

Find dropped follow-upsSurface the three customer follow-ups your agent forgot last week.

Replay last week's decisionSame inputs, same weights — see exactly why your agent flagged the risk it did, and diff against today's policy.

Bisect scoring regressionsCompare a new policy against last quarter's chain without rolling state forward.

Scenario

An agent says it'll follow up tomorrow. Nous tracks whether it does.

Boot the binary, post a commitment, force one tick of the risk engine, inspect the intervention, replay the decision chain. Deterministic ScriptedExtractor ships by default — no LLM key needed for the page demo. Wire any provider to graduate to real extraction.

$ docker run --rm -p 8080:8080 ghcr.io/felixgeelhaar/nous:latest

$ curl -sX POST localhost:8080/v1/extract \
    -H 'Content-Type: application/json' \
    -d '{"owner_id":"alice","text":"I will follow up with the client tomorrow"}'
{
  "considered": 1,
  "saved_ids": ["c_4f2"],
  "decision_id": "d_7a1"
}

$ curl -sX POST localhost:8080/v1/evaluate     # risk engine tick
{ "evaluated": 1, "interventions": ["i_9c3"], "decisions": ["d_7a1"] }

$ curl -s localhost:8080/v1/interventions | jq '.[0]'
{
  "id": "i_9c3", "commitment_id": "c_4f2",
  "kind": "nudge", "risk_score": 0.62,
  "reason": "deadline within 24h, confidence 0.78"
}

$ curl -s 'localhost:8080/v1/decisions?subject=c_4f2' | jq '.[0]'
{
  "id": "d_7a1", "subject": "c_4f2",
  "inputs":  { "time_to_deadline_hours": 24, "confidence": 0.78 },
  "weights": { "overdue": 0.6, "due_soon": 0.3, "confidence": 0.2, "signal": 0.15 },
  "outcome": { "score": 0.62, "intervention": "nudge" }
}
Replayable weeks later. The /v1/decisions chain is the load-bearing feature. Every commitment lifecycle, every risk score, every intervention decision is recorded with its inputs, weights, and outcome. Bisect a regression in your scoring policy against the same chain that fired in production.

How it differs

Where Nous fits.

Most agent frameworks orchestrate one call. Nous models the gap between calls — the commitments an agent made, the deadlines they implied, the deliveries it owes — and intervenes when the gap is about to fail.

Tool What it solves What Nous adds
LangChain · AutoGen · LlamaIndex Orchestrate one agent turn. Tracks what the agent promised across days — every commitment, every deadline, every score, replayable.
Lindy · Relevance · agentic SaaS Closed-vendor agent runtime. Self-host. Your DB, your LLM key, every decision replayable. MIT.

Architecture

Extract · Score · Intervene · Decide.

LLM is pluggable. The risk engine and decision log are not. Wire any provider for extraction; the rest is deterministic Go.

Run it

Boot. Post a commitment. Read the audit chain.

docker run --rm -p 8080:8080 ghcr.io/felixgeelhaar/nous:latest
# or: go install github.com/felixgeelhaar/nous/cmd/nous@latest

curl -sX POST localhost:8080/v1/extract \
  -H 'Content-Type: application/json' \
  -d '{"owner_id":"alice","text":"I will follow up tomorrow"}'

SQLite by default. Postgres for production:

NOUS_DB_TYPE=postgres NOUS_DB_DSN="postgres://..." nous

Wire any LLM provider:

NOUS_LLM_PROVIDER=anthropic NOUS_LLM_API_KEY=sk-ant-… nous
What's shipped today. Extract → score → intervene → replay full loop, tested against SQLite, Postgres, and in-memory backends. HTTP + gRPC + MCP all speak the same domain types. Bearer + JWT + mTLS auth, per-owner rate limiting, CEL input validation. Anthropic, OpenAI, Gemini, Bedrock providers all live; ScriptedExtractor keeps the demo deterministic. No dashboard yet — API-first, bring your own UI.

Cognitive stack context

Nous works alone. Plugs into a four-system stack.

Mnemos remembers, Chronos watches time, Nous decides, Praxis executes. Olymp drives the loop. Each is independently usable.

Mnemos · memory

Evidence-linked claims with point-in-time replay and contradiction detection.

Chronos · time

Pattern detection over time-series data. Typed signals, not threshold alerts.

Praxis · execution

Three-verb action layer with idempotency and replay-from-audit.

Olymp · runtime

Drives observe → understand → decide → act → learn end-to-end.