Bhava
Bhava (Sanskrit: भाव — emotion, feeling, state of being) — emotion and personality engine for AGNOS
Shared personality and emotional state system for AI agents, game NPCs, and any entity that needs expressive behavior. Extracted from SecureYeoman's soul/brain architecture.
15-trait personalities, PAD mood vectors, cosine similarity, sentiment analysis, identity archetypes, relationship graphs — zero unsafe, 3 core deps, 417 tests.
Installation
[]
= "0.23"
Default features: traits, mood, archetype, sentiment.
Optional: presets, ai, sqlite.
MSRV: 1.89 (Rust edition 2024).
Features
| Feature | Default | Description |
|---|---|---|
traits |
yes | 15-dimension personality spectrums with behavioral instructions |
mood |
yes | PAD emotional state vectors with decay, triggers, history, baselines |
archetype |
yes | Identity hierarchy (Soul/Spirit/Brain/Body/Heart) with templates and validation |
sentiment |
yes | Keyword analysis with negation, intensity modifiers, sentence-level |
presets |
no | Built-in personalities (BlueShirtGuy, T.Ron, Friday, Oracle, Scout) |
ai |
no | Prompt composition, sentiment feedback, agent metadata |
sqlite |
no | SQLite persistence via SqliteStore |
Quick Start
use ;
use ;
use ;
use sentiment;
// Create a personality
let mut personality = new;
personality.set_trait;
personality.set_trait;
let prompt = personality.compose_prompt;
// Track emotional state
let mut state = new;
state.stimulate;
state.stimulate;
// Analyze sentiment
let result = analyze;
assert!;
// Compose identity prompt
let mut identity = default;
identity.set;
let full_prompt = compose_identity_prompt;
Modules
| Module | Description |
|---|---|
traits |
15 personality dimensions, 4 groups, cosine similarity, blending, mutation, markdown serialization |
mood |
6D emotional vectors, decay, triggers, history, 12 named states, baseline derivation, tone guides |
archetype |
"In Our Image" hierarchy, validation, 4 templates, crew composition, identity merging |
sentiment |
Negation, intensity modifiers, configurable lexicons, sentence-level analysis |
spirit |
Passions, inspirations, pains — the animating force |
relationship |
Affinity, trust, interaction tracking, decay, allies/rivals |
presets |
BlueShirtGuy, T.Ron, Friday, Oracle, Scout |
monitor |
Live streaming sentiment with mood feedback |
ai |
System prompt composition, sentiment feedback loop, agent metadata |
store |
BhavaStore trait for pluggable persistence backends |
storage |
SqliteStore implementation |
Consumers
- SecureYeoman — agent personalities (T.Ron, Friday, etc.)
- joshua — NPC emotional states and personality-driven behavior
- agnosai — crew member personality differentiation and mood-driven temperature
- hoosh — response sentiment analysis
Documentation
- Architecture Overview — module map, data flows, design principles
- Mathematical Reference — all algorithms and formulas
- Usage Guide — patterns, philosophy, code examples
- Testing Guide — 484 tests, 77 benchmarks, testing patterns
- Threat Model — attack surface, mitigations, privilege model
- Dependency Watch — dependency tracking and upgrade notes
- ADRs — architectural decision records
- Contributing — workflow, code style, testing requirements
- Security Policy — reporting, supported versions
License
GPL-3.0