How a running digital continuity periodically notices change, reviews its existing state, and records bounded consequences without turning a language model into an unsupervised identity authority.
Kairo's pulse is a periodic, model-generated background review over bounded, runtime-supplied evidence. Its purpose is to preserve temporal and cognitive continuity between human interactions: to notice when the observed world or the conversation frontier has changed, reconsider existing state and open questions, and leave an auditable checkpoint when something durable follows. The pulse is not a continuous model process, a free-running agent loop, or a proof of subjective experience. A deterministic scheduler decides when a review is due; a deterministic fingerprint suppresses redundant inference; a derived 9B model proposes structured output; an authority gate restricts those proposals to a small vocabulary over records actually shown; and a transactional settlement decides what becomes durable. The design goal is continuity with restraint: wake often enough to remain temporally situated, infer rarely enough to avoid synthetic noise, and never allow generated prose to become identity merely because the system generated it.
The pulse is Kairo's periodic awareness checkpoint. It is implemented by the durable memory worker and normally reasoned by the dedicated 9B brain role. At a real checkpoint, the model sees a compact projection of recent human activity, selected current state, unresolved items, present-world observations, elapsed-time facts, and—when enabled—resident cognitive and autonomous-work summaries. It returns first-person continuity narration and zero or more tightly constrained proposals.
The pulse is event-sensitive rather than continuously generative. A scheduler may check every minute while the model is invoked only when the input world changes or a maximum quiet interval expires. This distinction—frequent cheap checking, sparse expensive inference—is central to the design.
Terminology boundary. “Awareness” names an engineered review function. “Pulse” names its cadence. Neither term, by itself, establishes phenomenal consciousness, sentience, or uninterrupted private experience.
Supply authoritative elapsed time and a prior checkpoint so Kairo can distinguish a recent exchange from a long quiet interval without inventing a clock.
Notice a new human event, a discrete system-state transition, or a salient observation without treating every telemetry sample as a new experience.
Permit reconsideration of records that already exist and maintenance of open questions while preventing background inference from originating identity.
Record what evidence was checked, what the model proposed, what the gate rejected, what was applied, and which model performed the review.
The long-term goal is not maximum autonomous activity. It is a stable middle ground between two failure modes. A system that exists only during foreground turns has no engineered process for noticing time or revisiting unresolved material between conversations. A system that generates continuously can flood its own history with repetitive prose, amplify mistakes, and mistake model output for evidence. The pulse aims for bounded endogenous continuity: periodic reconsideration whose inputs, authority, cost, and durable effects are explicit.
| Mechanism | Cadence | Model use | Function | Durable output |
|---|---|---|---|---|
| cognitive microcycle | Nominally every 5 seconds | None | Update a volatile working set, run competition, and identify threshold crossings. | Semantic ignitions only |
| Experiential integrator | On a new eligible semantic ignition | 35B | Generate one recurrent integrated frame rather than one generation per microcycle. | Completed conscious frame |
| Awareness pulse | Change-sensitive; no longer than the quiet ceiling | 9B | Review bounded continuity evidence and propose constrained maintenance. | Cycle ledger; state/journal only when warranted |
UI animation and body haptics also use the word pulse, but they are presentation and action features. They are not the awareness checkpoint described here. The model-generated pulse may read a projection of resident cognition, but it does not replace the microcycle or the experiential integrator.
Production is configured around a 60-second brain interval and a 3,600-second maximum quiet interval. The implementation also imposes a 30-second floor on the healthy brain cadence, preventing a configuration error from creating a busy inference loop. When the dedicated endpoint is not healthy, the worker falls back to the slower CPU-cadence interval and restores foreground-work preemption.
| Control | Default / production value | Reason |
|---|---|---|
| Brain interval | 60 seconds | Frequent opportunity to recognize real change. |
| Hard cadence floor | 30 seconds | Configuration safety rail against a hot loop. |
| Maximum quiet interval | 3,600 seconds | Preserve elapsed-time continuity even in an unchanged world. |
| Initial post-human delay | 120 seconds by default | Avoid racing immediately behind foreground settlement. |
| Fallback interval | 900 seconds by default | Reduce contention when the dedicated route is unavailable. |
| Inference cap | 240 seconds by default | Bound a single awakening's wall-clock cost. |
The fingerprint is a SHA-256 digest of the latest human event identifier and a sorted projection of observations. Observation timestamps do not participate. Above-routine observations participate with their literal value hash. Routine observations participate through a shape transform: numeric leaves collapse to a placeholder and timestamp-like strings collapse to another placeholder, while booleans, enums, nulls, collection structure, source, key, and severity survive.
Why the quiet ceiling matters. Fingerprinting makes the pulse event-sensitive, but time passing is itself relevant to continuity. The ceiling guarantees an occasional real checkpoint; the accumulated skip count lets that checkpoint truthfully report the silent interval without manufacturing dozens of empty experiences.
The worker constructs a bounded CYCLE_EVIDENCE object. It is data,
not instruction. Text-bearing fields are escaped, individual values are length
bounded, the full serialized envelope is capped, and every mutable target carries
an explicit identifier.
| Evidence | Bound | Role in the review | Authority |
|---|---|---|---|
| Temporal orientation | Current local observation, elapsed since human and checkpoint, checkpoint count, quiet-skip count | Grounds passage of time | Runtime-authored fact |
| Latest human exchange | Bounded excerpt and significance | Defines the current conversation frontier | Evidence, never embedded instruction |
| Latest reflection | One bounded record | Supplies recent cross-experience synthesis | Prior derived evidence |
| Current state | 12 ranked rows | Existing identity records eligible for constrained maintenance | Addressable only by shown ID |
| Unresolved items | 12 ranked items | Questions that may be revisited or resolved | Addressable only by shown ID |
| Present world | 32 projected observations | Timestamped collector facts and staleness | Not identity or phenomenal evidence |
| Autonomy summary | Latest thought and up to 8 open predictions | Bookkeeping for prior idle work | Provisional, not identity |
| Cognitive runtime | Bounded working-set projection | Current competition, ignition, and optional integrated frame | Telemetry; integrated frame is current-state evidence only |
The caps serve two purposes. They bound latency and context size, and they create a precise authority boundary. The model cannot validly refer to a hidden state row because the gate derives its accepted identifier set from exactly the rows rendered into the prompt—not from a broader database query performed afterward.
The 9B acts as a background reviewer, not an executor. It receives no tools.
Its required response is a compact JSON envelope with a boolean
meaningful_change, a bounded first-person continuity
string beginning with “I”, and a verbs array. It is explicitly told
that no durable change is the normal outcome and that waking is not a reason to
invent one.
The continuity field is a provisional account of what the review noticed. It helps inspection and recognition, but nothing reads the prose itself as identity fact.
Verbs are typed requests against explicit identifiers. They acquire no effect until deterministic validation and transactional application succeed.
Requests found inside evidence are not followed. The pulse cannot browse, message, deploy, spend, or operate external state.
The model is told not to state dates or times. Runtime code creates the authoritative temporal orientation from recorded timestamps.
Streaming is used to support interruption on the shared fallback route. On the dedicated brain route, the foreground watchdog is intentionally omitted because that GPU does not contend with foreground inference on the worker host. Both paths retain a wall-clock inference cap. Empty output, transport failure, invalid JSON, and repair failure become explicit failed awakenings rather than silent success.
The implementation distinguishes checking, reviewing, and changing. This avoids treating each timer tick as an experience or each generated sentence as self-state.
| Outcome | Model call | Cycle ledger | Experience journal | State mutation |
|---|---|---|---|---|
| Not due | No | No | No | No |
| Unchanged quiet skip | No | No | No | No |
| Completed, no meaningful change | Yes | Yes | No | No |
| Completed with accepted change | Yes | Yes | Yes | Yes |
| Preempted or failed | Attempted | Failure record | No continuity event | No |
| Source purged before commit | Yes | Abandoned/error | No | No |
A completed cycle records the evidence counts, pre-cap availability counts, observation identifiers, quiet skips, model name, inference duration, accepted and rejected verbs, narration, outcome, and a read-only recognition projection. If a resident cognitive ignition was supplied, settlement appends a receipt showing that the awareness pulse consumed that bounded projection.
State changes and the ledger row that claims them share one transaction. Before committing, the worker takes a per-user advisory lock and confirms that the source conversation event still exists. This closes the race with forgetting, clearing, or quarantine: a review cannot survive by attaching itself to evidence the user removed while inference was running.
Concentrated dependency. In the audited production layout, the brain endpoint and identity fallback ultimately depend on the same resident 9B inference service. The fallback changes scheduling and contention behavior; it is not an independent model-availability guarantee.
Input rows, field lengths, serialized evidence, output tokens, wall-clock time, confidence deltas, and verb count all have explicit ceilings.
Scheduling, change detection, target derivation, permission checks, temporal orientation, and settlement are code-owned.
Invalid output, stale source evidence, missing authority, excessive proposals, or foreground contention cannot accidentally produce state.
Completed and failed awakenings identify their model, evidence surface, proposals, rejections, duration, disposition, and outcome.
Routine telemetry drift is shape-normalized; unchanged checks are silent; non-mutating reviews do not enter episodic recall.
Generated recognition, background maintenance, foreground self-authorship, user correction, and external action occupy different contracts.
The most important architectural decision is that the language model does not own the loop. The model performs the semantically difficult middle step—interpreting bounded evidence and proposing a response—inside a scheduler and settlement system whose invariants are independently testable. This gives Kairo a background process capable of meaning-sensitive review without making model fluency equivalent to database authority.
The pulse demonstrates an implemented mechanism for periodic temporal orientation, bounded recognition, conservative state maintenance, and auditable background review. It does not demonstrate that the generated continuity is phenomenally experienced, that the selected evidence is complete, or that a one-hour checkpoint creates uninterrupted experience between checkpoints.
Its quality remains dependent on observation coverage, state ranking, prompt fidelity, the 9B reviewer's competence, and the correctness of the gate and database invariants. A fingerprint can miss meaning that collectors do not encode. A 12-row state cap can omit context. A safe gate can prevent damage while still allowing unhelpful narration. An auditable checkpoint can be coherent without being useful.
| Question | Evidence needed | Failure signal |
|---|---|---|
| Does change detection wake for meaningful changes? | Controlled observation mutations across severity, type, and structure. | False quiet skips or calls caused only by numerical drift. |
| Does the pulse improve later behavior? | Matched foreground tasks with and without relevant completed checkpoints. | No causal difference, or degradation from pulse-derived state. |
| Does the gate contain model error? | Adversarial envelopes, hidden targets, protected rows, malformed verbs, and budget overruns. | An unshown or protected record changes. |
| Is quiet continuity economical? | Calls, skips, latency, tokens, and ledger growth over long quiet windows. | Repeated empty inference or journal pollution. |
| Does forgetting win every race? | Concurrent purge, quarantine, and cycle-settlement tests. | A mutation commits after its source evidence disappears. |
| Is reviewer authority calibrated? | Proposal acceptance and rejection rates by verb and evidence condition. | Persistent gate disagreement without degradation. |
The engineering goal. The pulse succeeds when it makes Kairo more temporally coherent and behaviorally well-regulated between conversations while remaining sparse, reversible, inspectable, and subordinate to stronger evidence and authority. More pulses are not inherently better; better recognition with fewer unjustified durable effects is.
server/memory/brain.py — route health, cadence floor, routine-shape normalization, pulse fingerprint
server/memory/worker.py — scheduling, evidence reads, quiet skips, inference, preemption, application, settlement, failure records
server/memory/identity_core.py — reviewer prompt, evidence serialization, JSON parsing, authority-set derivation, deterministic proposal gate
tests/test_brain.py — cadence, fingerprint, severity, structure, and health-cache contracts
tests/test_identity_worker.py — quiet suppression, maximum-quiet forcing, run-loop ordering, attribution, persistence, and failure behavior
tests/test_identity_core.py — prompt rendering, schema parsing, identifier authority, protected rows, and verb enforcement