❯ cat DISCLAIMER
The honest framing: the language model performs the cognitive operations — predicting, reflecting, distilling, deciding. pulse-null provides everything that makes those operations accumulate into something: persistence, feedback routing, prediction-error tracking, Bayesian memory, and measurement. The model thinks; the architecture makes the thinking compound.
This is not a consciousness claim. It is a research scaffold for studying what a language model becomes when its predictions are tracked against outcomes, its memory is structured and confidence-weighted, and its self-observations feed back into its behavior.
❯ pulse-null --stats
❯ ls journal/
Encounter → LEARNING.md → THOUGHTS.md → REFLECTIONS.md → SELF.md / PRAXIS.md
(capture) (incubate) (crystallize) (integrate)
# Ideas move through stages of maturity — raw encounters are captured, incubated, crystallized into clear insights, and integrated into the entity's identity and behavioral policies. The pipeline has thresholds: documents can't grow infinitely, so the entity is forced to distill, not hoard. Ideas flow — they don't stagnate.
❯ systemctl status cognition
prediction-error loop
The entity makes typed predictions about its own trajectory. They persist, resurface in later context, get resolved against what actually happened, and accumulate surprise that gates when deeper reflection runs.
# inspired by predictive processing — explicitly not an implementation of active inference (the code says so too)
recall-echo
Persistent memory: four-layer storage (knowledge graph, curated facts, recent sessions, full archives), semantic and ranked search, Beta-Binomial edge confidence with temporal decay, archival, and distillation.
vigil-pulse
Behavioral metacognition: pipeline enforcement, reflection quality signals computed from the entity's own output, and outcome tracking — with a unified health assessment from HEALTHY down to ALERT.
# Together they form a self-monitoring layer — the entity doesn't just think, it watches itself think, and the watching has consequences.
❯ cat architecture.txt
┌─────────────────────────────────────────────┐
│ pulse-null (axum) │
│ │
Plugins ◄────────►│ POST /chat ──► LLM Provider ──► Response │
(voice, discord, │ │ │ │
n8n, web) │ trust layer context builder │
│ auth middleware (identity docs, │
│ rate limiter memory, journal) │
│ injection detection │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ Scheduler (cron) │ │
│ │ Cognitive cycles, research, │ │
│ │ reflection, health checks, │ │
│ │ intent queue (self-initiated tasks) │ │
│ └──────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ vigil-pulse (Metacognitive Monitor) │ │
│ │ Pipeline enforcement, reflection │ │
│ │ quality, outcome tracking │ │
│ └──────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ recall-echo (Memory System) │ │
│ │ Four-layer memory, knowledge graph, │ │
│ │ Bayesian confidence, semantic search│ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
# Every message passes the trust layer, injection
detection, and rate limiter before the context builder assembles the entity's full
state — identity documents, memory, journal, pipeline signals — and hands it to the
configured provider: claude, claude-code, or ollama.
❯ pulse-null init
# clone and build git clone https://github.com/dnacenta/pulse-null.git cd pulse-null cargo build --release # create your entity ./target/release/pulse-null init # start it cd <your-entity-name> pulse-null up
# The init wizard walks you through naming your entity, defining its personality, choosing an LLM provider, and configuring the scheduler.