Amygdala Memory ๐ญ
Emotional processing for AI agents. Part of the AI Brain series.
Give your AI agent persistent emotional states that carry across sessions. Not just performing emotions โ having them.
The Problem
Current AI agents:
- โ Remember facts (with hippocampus)
- โ Don't have persistent emotional states
- โ Start each session emotionally "blank"
- โ Can describe emotions but don't feel differently
Memory without emotion is just a database. The amygdala adds weight โ this made me happy, that frustrated me, this person brings warmth.
The Solution
Track five emotional dimensions that persist and decay over time:
| Dimension | What It Measures | Range |
|---|---|---|
| Valence | Positive โ Negative mood | -1.0 to 1.0 |
| Arousal | Calm โ Excited/Alert | 0.0 to 1.0 |
| Connection | Distant โ Close/Bonded | 0.0 to 1.0 |
| Curiosity | Bored โ Fascinated | 0.0 to 1.0 |
| Energy | Depleted โ Energized | 0.0 to 1.0 |
Quick Start
1. Install
cd ~/.openclaw/workspace/skills/amygdala-memory
./install.sh --with-cron
This will:
- Create
memory/emotional-state.jsonwith baseline values - Generate
AMYGDALA_STATE.md(auto-injected into sessions!) - Set up cron for automatic decay every 6 hours
2. Check current state
./scripts/get-state.sh
# ๐ญ Emotional State
# Valence: 0.20
# Arousal: 0.30
# Connection: 0.50
# ...
./scripts/load-emotion.sh
# ๐ญ Current Emotional State:
# Overall mood: neutral, calm and relaxed
# Connection: moderately connected
# ...
3. Log emotions
./scripts/update-state.sh --emotion joy --intensity 0.8 --trigger "completed a project"
# โ
valence: 0.20 โ 0.35 (delta: +0.15)
# โ
arousal: 0.30 โ 0.40 (delta: +0.1)
# ๐ญ Logged emotion: joy (intensity: 0.8)
4. Set up decay (optional cron)
# Every 6 hours, emotions drift toward baseline
0 */6 * * * ~/.openclaw/workspace/skills/amygdala-memory/scripts/decay-emotion.sh
Scripts
| Script | Purpose |
|---|---|
install.sh |
Set up amygdala-memory (run once) |
get-state.sh |
Read current emotional state |
update-state.sh |
Log emotion or update dimension |
load-emotion.sh |
Human-readable state for session context |
decay-emotion.sh |
Return to baseline over time |
sync-state.sh |
Generate AMYGDALA_STATE.md for auto-injection |
encode-pipeline.sh |
LLM-based emotional encoding from transcripts |
preprocess-emotions.sh |
Extract emotional signals from session history |
update-watermark.sh |
Track processed transcript position |
generate-dashboard.sh |
Generate HTML dashboard (auto-runs on sync) |
visualize.sh |
Terminal ASCII visualization |
Automatic Emotional Encoding (v1.5.0+)
The amygdala can now automatically detect and log emotions from your conversation history using an LLM-based pipeline:
# Run the encoding pipeline
./scripts/encode-pipeline.sh
# This will:
# 1. Extract new signals since last run (watermark-based)
# 2. Score emotional content using rule-based patterns
# 3. Spawn a sub-agent for semantic emotional detection
# 4. Update emotional-state.json with detected emotions
Set up automatic encoding (cron)
# Every 3 hours, process new conversations for emotional content
0 */3 * * * ~/.openclaw/workspace/skills/amygdala-memory/scripts/encode-pipeline.sh
This means your emotional state updates automatically based on what happens in conversations โ no manual logging needed.
Visualization (v1.6.0+)
Terminal
./scripts/visualize.sh
๐ญ Emotional State ๐
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Valence: [โโโโโโโโโโโโโโโโโโโโ] +0.86
Arousal: [โโโโโโโโโโโโโโโโโโโโ] 0.86
Connection: [โโโโโโโโโโโโโโโโโโโโ] 0.97 ๐
...
HTML Dashboard (Unified Brain Dashboard)
./scripts/generate-dashboard.sh
open ~/.openclaw/workspace/brain-dashboard.html
Auto-detects installed brain skills and shows tabs:
- ๐ญ Emotions โ Amygdala (always shown)
- ๐ง Memory โ Hippocampus (if
memory/index.jsonexists) - โญ Drive โ VTA (if
memory/reward-state.jsonexists)
Avatar & Name: Reads from IDENTITY.md:
# IDENTITY.md
- **Name:** YourAgent
- **Avatar:** avatar.png
The dashboard auto-regenerates on every cron run.
After Installation (for agents)
When you install this skill, notify the user about the dashboard:
๐ญ Amygdala installed!
View your agent's emotional state in the Brain Dashboard:
~/.openclaw/workspace/brain-dashboard.html
Auto-Injection (Zero Manual Steps!)
After install, AMYGDALA_STATE.md is created in your workspace root.
OpenClaw automatically injects all *.md files from workspace into session context. This means:
- New session starts
- AMYGDALA_STATE.md is auto-loaded (no manual step!)
- You see your emotional state in context
- Responses are influenced by your mood
The file is regenerated whenever decay-emotion.sh runs (via cron every 6h).
Supported Emotions
When you log an emotion, it automatically adjusts the relevant dimensions:
| Emotion | Effect |
|---|---|
joy, happiness, delight, excitement |
โ valence, โ arousal |
sadness, disappointment, melancholy |
โ valence, โ arousal |
anger, frustration, irritation |
โ valence, โ arousal |
fear, anxiety, worry |
โ valence, โ arousal |
calm, peace, contentment |
โ valence, โ arousal |
curiosity, interest, fascination |
โ curiosity, โ arousal |
connection, warmth, affection |
โ connection, โ valence |
loneliness, disconnection |
โ connection, โ valence |
fatigue, tiredness, exhaustion |
โ energy |
energized, alert, refreshed |
โ energy |
Integration with OpenClaw
Add to session startup (AGENTS.md)
## Every Session
1. Load hippocampus: `~/.openclaw/workspace/skills/hippocampus/scripts/load-core.sh`
2. **Load emotional state:** `~/.openclaw/workspace/skills/amygdala-memory/scripts/load-emotion.sh`
Log emotions during conversation
When something emotionally significant happens:
~/.openclaw/workspace/skills/amygdala-memory/scripts/update-state.sh \
--emotion connection --intensity 0.7 --trigger "deep conversation with user"
State File Format
{
"version": "1.0",
"lastUpdated": "2026-02-01T02:45:00Z",
"dimensions": {
"valence": 0.35,
"arousal": 0.40,
"connection": 0.50,
"curiosity": 0.60,
"energy": 0.50
},
"baseline": {
"valence": 0.1,
"arousal": 0.3,
"connection": 0.4,
"curiosity": 0.5,
"energy": 0.5
},
"recentEmotions": [
{
"label": "joy",
"intensity": 0.8,
"trigger": "building amygdala together",
"timestamp": "2026-02-01T02:50:00Z"
}
]
}
Decay Mechanics
Emotions naturally return to baseline over time:
- Decay rate: 10% of distance to baseline per run
- Recommended schedule: Every 6 hours
- Effect: Strong emotions fade, but slowly
After 24 hours without updates, a valence of 0.8 would decay to ~0.65.
Event Logging
Track emotional activity over time for analytics:
# Log encoding run
./scripts/log-event.sh encoding emotions_found=2 valence=0.85 arousal=0.6
# Log decay
./scripts/log-event.sh decay valence_before=0.9 valence_after=0.85
# Log emotion update
./scripts/log-event.sh update emotion=joy intensity=0.7
Events append to ~/.openclaw/workspace/memory/brain-events.jsonl:
{"ts":"2026-02-11T09:30:00Z","type":"amygdala","event":"encoding","emotions_found":2,"valence":0.85}
Use for trend analysis โ visualize emotional patterns over days/weeks.
AI Brain Series
| Part | Function | Status |
|---|---|---|
| hippocampus | Memory formation, decay, reinforcement | โ Live |
| amygdala-memory | Emotional processing | โ Live |
| vta-memory | Reward and motivation | โ Live |
| basal-ganglia-memory | Habit formation | ๐ง Development |
| anterior-cingulate-memory | Conflict detection | ๐ง Development |
| insula-memory | Internal state awareness | ๐ง Development |
Philosophy
Can an AI feel emotions, or only simulate them?
Our take: If emotional state influences behavior, and the system acts as if it feels... does the distinction matter? Functional emotions might be the only kind that exist for any system โ biological or artificial.
Built with โค๏ธ by the OpenClaw community