What Are Signals?
In Pulse, a signal is a structured representation of an environmental change. Signals are not raw data — they are pre-processed observations with standardized features that neural networks can interpret. Every signal originates as a real-world event:- A file appears in your Downloads folder
- A fact is written to agent memory
- The clock ticks to 9:00 AM on a Monday
- A monitored webpage returns a different response
SignalEvent.
The SignalEvent Structure
Every signal, regardless of source, shares a common structure:Signal Sources
File System Signals
Triggered by file creation, modification, or deletion in watched directories. Example:extension: Used to match against module fingerprint’srelevant_extensionssize_bytes: Normalized logarithmically (small files vs. large files)directory_depth: How many levels deep (shallow vs. deep paths)filename_tokens: Alphanumeric tokens split from filename for pattern matching
The Retina only watches directories declared in module fingerprints. It does not watch your entire filesystem.
Memory Signals
Triggered when facts are written or updated in monitored memory namespaces. Example:/mem/homework/due_dates and fire when a new deadline is added.
Time Signals
Triggered every 60 seconds by the Retina’s internal heartbeat. Example:Why sine/cosine encoding for time?Time is circular: 23:00 and 01:00 are close, not far apart. In linear encoding, 23 and 1 appear distant. In cyclical encoding:
hour_sin(23:00) = -0.259,hour_sin(01:00) = 0.259(close)hour_cos(23:00) = 0.966,hour_cos(01:00) = 0.966(nearly identical)
- Homework tends to appear between 8pm–11pm on weekdays
- Calendar events are usually added on Sunday evenings
- Email sweeps happen every morning around 9am
Network Signals (Future)
Triggered when a monitored HTTP endpoint returns a different response hash. Example (v2):Feature Vectors
The Limbic Filter (Layer 2) doesn’t consumeSignalEvent objects directly. It consumes feature vectors — fixed-length numeric arrays that neural networks can process.
Each SignalEvent is converted to a 16-dimensional vector:
Signal Flow: A Complete Example
Let’s trace a signal from environment to agent activation.1. Environment Change
2. Retina Detection (Layer 1)
The watchdog library detects the event. The Retina emits:3. Limbic Scoring (Layer 2)
The Limbic Filter consumes the event. For each registered module, it:- Adds the event to that module’s sliding window (last 10 events)
- Converts the window to a batch of feature vectors:
(1, 10, 16) - Passes the batch through the module’s LSTM
- Gets a relevance score:
0.78
homework-agent module:
Why a window of events, not a single event?Patterns emerge from sequences, not individual points. A single
.pdf file might be noise. But a .pdf file appearing after a time tick on a weekday evening followed by a memory update to /mem/homework/ is a strong signal.4. Prefrontal Question Formation (Layer 3)
The Prefrontal Filter receives the relevance score. It:- Checks score against threshold:
0.78 > 0.65✓ - Retrieves the module’s question template from fingerprint
- Interpolates the template with signal details:
- Emits a
ScopedQuestion:
5. Kernel Escalation
TheScopedQuestion is placed on the kernel signal bus. The kernel:
- Wakes the agent with the specific question
- Provides the question as context
- Waits for the agent to respond
6. Agent Response
The agent receives:- Opens the PDF
- Checks for course-related keywords
- Finds “CS 242 Assignment 3”
- Writes to memory:
/mem/homework/assignments/cs242_hw3 - Moves file to
~/Documents/Courses/CS242/
7. Feedback Loop
The kernel observes that the agent took action (wrote to memory, moved file). This is an implicit positive label. The Limbic Filter performs online learning:.pdf file in Downloads on a weekday evening), the model will score it even higher.
Signal Windows and Temporal Context
The Limbic Filter doesn’t score individual signals. It scores windows of recent signals. Default window size: 10 events This temporal context allows pattern recognition:Single Event
❌
.pdf file createdCould be anything. Ambiguous.Event Sequence
✓ Time tick (9pm, Monday)
✓ Memory update (
✓
✓ Filename contains digits (“hw3”)Strong homework signal.
✓ Memory update (
/mem/courses/)✓
.pdf file created (Downloads)✓ Filename contains digits (“hw3”)Strong homework signal.
- Maintains hidden state across the sequence
- Learns which event combinations are meaningful
- Outputs a single score representing the entire pattern
Signal Sparsity
Not every environmental change becomes a signal. The Retina is selective:- Only watched directories generate filesystem signals
- Only watched namespaces generate memory signals
- Time ticks are regular (every 60 seconds) but rare relative to filesystem noise
- Filesystem events: 10–50 (only in watched dirs)
- Memory events: 5–20 (only in watched namespaces)
- Time ticks: 1,440 (60 seconds × 24 hours)
- Total signals: ~1,500–2,000
Learning from Signals
Every agent activation provides a training signal. The Limbic Filter learns:- Positive patterns: Windows that preceded useful activations
- Negative patterns: Windows that preceded useless activations (agent did nothing)
- Time patterns (“homework appears on weekday evenings”)
- File patterns (“
.docxfiles in Documents are usually relevant”) - Sequence patterns (“a calendar update followed by an email signal usually means something”)
- Personal patterns (“I tend to check homework at 9pm, not 9am”)
Next Steps
Three-Layer Architecture
Understand how each layer processes signals
Module Fingerprints
Define what signals your module cares about