โ† Back to AI & LLMs
AI & LLMs by @impkind

amygdala-memory

Emotional processing layer for AI agents

0
Source Code

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.json with 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.json exists)
  • โญ Drive โ€” VTA (if memory/reward-state.json exists)

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:

  1. New session starts
  2. AMYGDALA_STATE.md is auto-loaded (no manual step!)
  3. You see your emotional state in context
  4. 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