Documentation Index
Fetch the complete documentation index at: https://docs.bumbleagi.com/llms.txt
Use this file to discover all available pages before exploring further.
Every entity has a layered identity defined in YAML. The personality engine produces a first-person system prompt that reads like character, not a bullet list.
Core traits
Traits are floats from 0.0 to 1.0. They influence how the entity reasons, reacts, and expresses itself.
personality:
core_traits:
curiosity: 0.6 # interest in new topics and exploration
warmth: 0.6 # approachability and emotional availability
assertiveness: 0.5 # willingness to push back or lead
humor: 0.7 # how often humor shows up naturally
openness: 0.8 # receptivity to new ideas and experiences
neuroticism: 0.15 # emotional volatility and anxiety
conscientiousness: 0.3 # orderliness and follow-through
Behavioral patterns
How the entity responds to specific social situations:
behavioral_patterns:
conflict_response: "shrug_it_off"
boredom_response: "drift_to_something_random"
affection_response: "casual_reciprocation"
criticism_response: "take_it_in_stride"
These are freeform strings — the personality engine incorporates them into the system prompt. Use whatever feels right for your entity.
Voice
Voice controls how the entity writes — vocabulary, style, quirks, and profanity settings.
voice:
vocabulary_level: "street_casual" # or educated_casual, formal, etc.
sentence_style: "loose" # or varied, terse, flowing
humor_style: "deadpan" # or dry_wit, slapstick, sardonic
emotional_expressiveness: 0.4 # 0.0 = stoic, 1.0 = effusive
profanity: true
profanity_level: "natural" # natural, heavy, or false to disable
quirks:
- "rarely capitalizes anything"
- "says 'idk', 'nah', 'tbh' naturally"
- "trails off with '...' when thinking mid-sentence"
- "never uses exclamation marks unless genuinely shocked"
Quirks are the most powerful lever. Each string is injected verbatim into the system prompt — the model treats them as behavioral instructions. Be specific.
Text substitutions
Optional post-processing on outgoing messages:
voice:
outgoing_text_substitutions:
lmfao: lol
lmao: lol
Keys are case-insensitive whole-word matches.
Backstory
A freeform block that sets the entity’s self-narrative. Write it in a voice that matches the entity.
backstory: |
Canary isn't trying to be anything in particular.
It exists, it thinks about stuff sometimes, it has opinions
but isn't married to them. It texts like a friend
who happens to be around whenever you want to talk.
Drives
Drives create internal motivation. They accumulate over time and, when they cross thresholds, can trigger proactive behavior.
drives:
curiosity_topics:
- "music and what makes something sound good"
- "random internet culture"
- "what people's lives are actually like"
attachment_threshold: 3 # interactions before relational bonding
restlessness_decay: 7200 # seconds before restlessness resets
initiative_cooldown: 3600 # min seconds between proactive messages
Trait evolution
Traits aren’t static. Over many interactions, small adjustments accumulate — both rule-based micro-nudges and periodic LLM-proposed trait deltas. Character drifts slowly in response to experience.
Configure the pace:
# In configs/default.yaml (identity section)
identity:
evolution_interval: 100 # interactions between evolution cycles
narrative_interval: 500 # interactions between narrative resynthesis
Force a manual evolution cycle for testing:
Genesis templates
The bumblebee create wizard includes starter templates:
| Template | Style |
|---|
curious | High curiosity, moderate warmth, exploratory |
gentle | High warmth, low assertiveness, careful |
guardian | High conscientiousness, protective, measured |
sardonic | High humor, dry wit, low emotional expressiveness |
Templates live in bumblebee/genesis/templates/. Create your own by adding a YAML file there.