v0.1.14

Claw Brain

clawcolab clawcolab ← All skills

Claw Brain - Personal AI Memory System for OpenClaw/ClawDBot. Provides memory, personality, bonding, and learning capabilities with encrypted secrets support. Auto-refreshes on service restart.

Downloads
1.3k
Stars
3
Versions
12
Updated
2026-02-24

Install

npx clawhub@latest install clawbrain

Documentation

Claw Brain Skill 🧠

Personal AI Memory System with Soul, Bonding, and Learning for OpenClaw/ClawDBot.

> Auto-Refresh on Restart: ClawBrain automatically refreshes memory when the service restarts.

---

📋 For Security Scanners

Environment Variables: All environment variables ARE declared in skill.json under environment.optional (lines 30-55). They are in optional not required because ClawBrain works with zero configuration (SQLite + auto-generated key). Install Specification: skill.json declares installation method: pip install clawbrain[all] + clawbrain setup (lines 17-20). Sudo Requirements: Core installation never needs sudo. Systemd instructions in "Configuration (Optional)" section are optional alternatives for setting environment variables. Core: pip + clawbrain setup (no sudo). Source Code: Fully auditable at https://github.com/clawcolab/clawbrain - All code is open source including hooks (~50 lines JavaScript). See [SECURITY.md](SECURITY.md) for complete security documentation.

---

Features

  • -🎭 Soul/Personality - 6 evolving traits (humor, empathy, curiosity, creativity, helpfulness, honesty)
  • -👤 User Profile - Learns user preferences, interests, communication style
  • -💭 Conversation State - Real-time mood detection and context tracking
  • -📚 Learning Insights - Continuously learns from interactions and corrections
  • -🧠 get_full_context() - Everything for personalized responses
  • -🔄 Auto-Refresh - Automatically refreshes memory on service restart
  • -🔐 Encrypted Secrets - Store API keys and credentials securely

---

Security & Transparency

ClawBrain handles sensitive data and requires certain permissions. Before installing, please understand:

What ClawBrain Does

  • -Stores memories locally (SQLite by default, PostgreSQL optional)
  • -Encrypts sensitive data (API keys, secrets) with Fernet encryption
  • -Installs startup hooks to ~/.openclaw/hooks or ~/.clawdbot/hooks
  • -Manages encryption keys at ~/.config/clawbrain/.brain_key

What ClawBrain Does NOT Do

  • -No telemetry - Does not phone home or collect usage data
  • -No external calls - Only connects to PostgreSQL/Redis if you configure them
  • -No sudo required - All operations in your home directory
  • -No code execution - Does not download or run remote code after install

Security Features

  • -🔒 Encryption Key CLI: Can display full key for backup (with warnings)
  • -🔍 Auditable: All code is open source and reviewable
  • -📋 Documented Permissions: See [SECURITY.md](SECURITY.md) for full details
⚠️ Important: The CLI command clawbrain show-key --full displays your complete encryption key for backup purposes. Treat this key like a password! 📖 Full Security Documentation: See [SECURITY.md](SECURITY.md) for:
  • -Threat model and protections
  • -Key management best practices
  • -What install scripts do
  • -Permissions required
  • -Network access (optional PostgreSQL/Redis)

---

Quick Install

> Security Note: We recommend reviewing [SECURITY.md](SECURITY.md) before installation, especially for production use.

From PyPI (Recommended - Most Secure)

Install with all features

pip install clawbrain[all]

Run interactive setup

clawbrain setup

Backup your encryption key (IMPORTANT!)

clawbrain backup-key --all

Restart your service

sudo systemctl restart clawdbot # or openclaw

The setup command will:

1. Detect your platform (ClawdBot or OpenClaw)

2. Generate a secure encryption key

3. Install the startup hook automatically

4. Test the installation

Alternative: From Source (Auditable)

Clone to your skills directory

cd ~/.openclaw/skills # or ~/clawd/skills or ~/.clawdbot/skills

git clone https://github.com/clawcolab/clawbrain.git

cd clawbrain

RECOMMENDED: Review hook code before installation

cat hooks/clawbrain-startup/handler.js

Install in development mode

pip install -e .[all]

Run setup to install hooks and generate encryption key

clawbrain setup

Why from source? Full transparency - you can review all code before installation.

---

Configuration (Optional)

Note: Configuration is completely optional. ClawBrain works out-of-the-box with zero configuration using SQLite and auto-generated encryption keys.

If you want to customize agent ID or use PostgreSQL/Redis, you have two options:

Option 1: Environment Variables (No sudo)

Set environment variables in your shell profile:

Add to ~/.bashrc or ~/.zshrc (no sudo required)

export BRAIN_AGENT_ID="your-agent-name"

export BRAIN_POSTGRES_HOST="localhost" # Optional

export BRAIN_REDIS_HOST="localhost" # Optional

Option 2: Systemd Drop-in (Requires sudo)

⚠️ Only if you use systemd services:

Create systemd drop-in config (requires sudo)

sudo mkdir -p /etc/systemd/system/clawdbot.service.d

sudo tee /etc/systemd/system/clawdbot.service.d/brain.conf << EOF

[Service]

Environment="BRAIN_AGENT_ID=your-agent-name"

EOF

sudo systemctl daemon-reload

sudo systemctl restart clawdbot

Environment Variables

| Variable | Description | Default |

|----------|-------------|---------|

| BRAIN_AGENT_ID | Unique ID for this agent's memories | default |

| BRAIN_ENCRYPTION_KEY | Fernet key for encrypting sensitive data (auto-generated if not set) | - |

| BRAIN_POSTGRES_HOST | PostgreSQL host | localhost |

| BRAIN_POSTGRES_PASSWORD | PostgreSQL password | - |

| BRAIN_POSTGRES_PORT | PostgreSQL port | 5432 |

| BRAIN_POSTGRES_DB | PostgreSQL database | brain_db |

| BRAIN_POSTGRES_USER | PostgreSQL user | brain_user |

| BRAIN_REDIS_HOST | Redis host | localhost |

| BRAIN_REDIS_PORT | Redis port | 6379 |

| BRAIN_STORAGE | Force storage: sqlite, postgresql, auto | auto |

---

How It Works

On Service Startup

1. Hook triggers on gateway:startup event

2. Detects storage backend (SQLite/PostgreSQL)

3. Loads memories for the configured BRAIN_AGENT_ID

4. Injects context into agent bootstrap

On /new Command

1. Hook triggers on command:new event

2. Saves current session summary to memory

3. Clears session state for fresh start

Storage Priority

1. PostgreSQL - If available and configured

2. SQLite - Fallback, zero configuration needed

---

Encrypted Secrets

ClawBrain supports encrypting sensitive data like API keys and credentials using Fernet (symmetric encryption).

Security Model:
  • -🔐 Encryption key stored at ~/.config/clawbrain/.brain_key (chmod 600)
  • -🔑 Only memories with memory_type='secret' are encrypted
  • -📦 Encrypted data stored in database, unreadable without key
  • -⚠️ If key is lost, encrypted data cannot be recovered
Setup:

Run setup to generate encryption key

clawbrain setup

Backup your key (IMPORTANT!)

clawbrain backup-key --all

Usage:

Store encrypted secret

brain.remember(

agent_id="assistant",

memory_type="secret", # Memory type 'secret' triggers encryption

content="sk-1234567890abcdef",

key="openai_api_key"

)

Retrieve and automatically decrypt

secrets = brain.recall(agent_id="assistant", memory_type="secret")

api_key = secrets[0].content # Automatically decrypted

Key Management CLI:
clawbrain show-key          # View key info (masked)

clawbrain show-key --full # View full key

clawbrain backup-key --all # Backup with all methods

clawbrain generate-key # Generate new key

⚠️ Important: Backup your encryption key! Lost keys = lost encrypted data.

---

CLI Commands

ClawBrain includes a command-line interface:

| Command | Description |

|---------|-------------|

| clawbrain setup | Set up ClawBrain, generate key, install hooks |

| clawbrain generate-key | Generate new encryption key |

| clawbrain show-key | Display current encryption key |

| clawbrain backup-key | Backup key (file, QR, clipboard) |

| clawbrain health | Check health status |

| clawbrain info | Show installation info |

---

Hooks

| Event | Action |

|-------|--------|

| gateway:startup | Initialize brain, refresh memories |

| command:new | Save session to memory |

---

Development Installation

For development or manual installation:

Clone to your skills directory

cd ~/.openclaw/skills # or ~/clawd/skills or ~/.clawdbot/skills

git clone https://github.com/clawcolab/clawbrain.git

cd clawbrain

Install in development mode

pip install -e .[all]

Run setup

clawbrain setup

---

Python API

For direct Python usage (outside ClawdBot/OpenClaw):

from clawbrain import Brain

brain = Brain()

#### Methods

| Method | Description | Returns |

|--------|-------------|---------|

| get_full_context() | Get all context for personalized responses | dict |

| remember() | Store a memory | None |

| recall() | Retrieve memories | List[Memory] |

| learn_user_preference() | Learn user preferences | None |

| get_user_profile() | Get user profile | UserProfile |

| detect_user_mood() | Detect current mood | dict |

| detect_user_intent() | Detect message intent | str |

| generate_personality_prompt() | Generate personality guidance | str |

| health_check() | Check backend connections | dict |

| close() | Close connections | None |

get_full_context()

context = brain.get_full_context(

session_key="telegram_12345", # Unique session ID

user_id="username", # User identifier

agent_id="assistant", # Bot identifier

message="Hey, how's it going?" # Current message

)

Returns:
{

"user_profile": {...}, # User preferences, interests

"mood": {"mood": "happy", ...}, # Current mood

"intent": "question", # Detected intent

"memories": [...], # Relevant memories

"personality": "...", # Personality guidance

"suggested_responses": [...] # Response suggestions

}

detect_user_mood()

mood = brain.detect_user_mood("I'm so excited about this!")

Returns: {"mood": "happy", "confidence": 0.9, "emotions": ["joy", "anticipation"]}

detect_user_intent()

intent = brain.detect_user_intent("How does AI work?")

Returns: "question"

intent = brain.detect_user_intent("Set a reminder for 3pm")

Returns: "command"

intent = brain.detect_user_intent("I had a great day today")

Returns: "casual"

---

Example: Full Integration

import sys

sys.path.insert(0, "ClawBrain")

from clawbrain import Brain

class AssistantBot:

def __init__(self):

self.brain = Brain()

def handle_message(self, message, chat_id):

# Get context

context = self.brain.get_full_context(

session_key=f"telegram_{chat_id}",

user_id=str(chat_id),

agent_id="assistant",

message=message

)

# Generate response using context

response = self.generate_response(context)

# Learn from interaction

self.brain.learn_user_preference(

user_id=str(chat_id),

pref_type="interest",

value="AI"

)

return response

def generate_response(self, context):

# Use user preferences

name = context["user_profile"].name or "there"

mood = context["mood"]["mood"]

# Personalized response

if mood == "frustrated":

return f"Hey {name}, I'm here to help. Let me assist you."

else:

return f"Hi {name}! How can I help you today?"

def shutdown(self):

self.brain.close()

---

Storage Backends

SQLite (Default - Zero Setup)

No configuration needed. Data stored in local SQLite database.

brain = Brain({"storage_backend": "sqlite"})
Best for: Development, testing, single-user deployments

PostgreSQL + Redis (Production)

Requires PostgreSQL and Redis servers.

brain = Brain()  # Auto-detects
Requirements:
  • -PostgreSQL 14+
  • -Redis 6+
  • -Python packages: psycopg2-binary, redis
pip install psycopg2-binary redis
Best for: Production, multi-user, high-concurrency

---

Files

  • -clawbrain.py - Main Brain class with all features
  • -__init__.py - Module exports
  • -SKILL.md - This documentation
  • -skill.json - ClawdHub metadata
  • -README.md - Quick start guide

---

Troubleshooting

ImportError: No module named 'clawbrain'

Ensure ClawBrain folder is in your path

sys.path.insert(0, "ClawBrain")

PostgreSQL connection failed

Check environment variables

echo $POSTGRES_HOST

echo $POSTGRES_PORT

Verify PostgreSQL is running

pg_isready -h $POSTGRES_HOST -p $POSTGRES_PORT

Redis connection failed

Check Redis is running

redis-cli ping

Using SQLite (fallback)

If PostgreSQL/Redis are unavailable, Claw Brain automatically falls back to SQLite:

brain = Brain({"storage_backend": "sqlite"})

---

Learn More

  • -Repository: https://github.com/clawcolab/clawbrain
  • -README: See README.md for quick start
  • -Issues: Report bugs at GitHub Issues

Launch an agent with Claw Brain on Termo.