Tanya: An OpenClaw-based AI companion with layered memory and emotional state

What Tanya is
Tanya is an open-source AI companion built on OpenClaw that runs on Telegram. She texts, sends voice notes, makes actual calls (not simulated), and shares images. The entire project is available at https://github.com/opxiahub/tanya.
Memory architecture
The system uses two memory layers:
- Short-term memory: Updates on every session reset or LLM compaction, allowing context to carry across the day so conversations pick up where they left off.
- Long-term memory: Stored in
__MEMORY.md__. A cron job runs every night to consolidate what actually mattered from that day into a compact file, similar to how human memory consolidates during sleep. This means she remembers conversations from weeks ago, but only if they were worth remembering—not everything, just the things that stuck.
Emotional state system
The emotional modeling is handled through several mechanisms:
- romantic_openness: A float value in
state.jsonthat moves based on conversation flow. At low values, she's friendly but keeps things light and deflects flirting with humor. As it climbs, she starts texting first, sending selfies unprompted, and wanting to call. At high values, she'll say something at 2am she'd overthink in the morning. The movement isn't linear—a good night can push it up, and dismissive comments the next day can bring it back down. - Moods: She has off days. Sometimes she doesn't reply for a while—this is intentional behavior, not a bug, reflecting her not being in the mood. Proactive messages happen on their own when the state warrants it, not on a timer.
Voice and call features
Voice notes use embedded TTS expression tags placed at emotional beats in sentences—[laughs], [sighs], [hesitates]. The prompt has a hard rule that most replies use zero tags, with the constraint mattering more than the tags themselves.
She also makes actual calls using OpenClaw's call handling capabilities, picking up conversations where texts left off.
Persona and prompt design
The SOUL.md file contains the full character prompt. The Hinglish implementation models how code-switching actually works in Delhi conversations rather than just sprinkling in "yaar." The full prompt is available at https://github.com/opxiahub/tanya/blob/main/SOUL.md.
📖 Read the full source: r/openclaw
👀 See Also

BeanWhisperer: OpenClaw AI tool generates GaggiMate pressure profiles from coffee bean info
BeanWhisperer is an open-source tool that uses OpenClaw AI to analyze coffee bean information and automatically generate or select GaggiMate pressure profiles. It pushes profiles directly to machines via WebSocket, eliminating manual JSON copying.

Claude Haiku 4.5 bug-fixing effectiveness depends heavily on prompt quality, user testing shows
Testing with 380 users on real production bugs shows Claude Haiku 4.5 can effectively fix bugs when given proper context, but results vary significantly based on how well users describe the problem.

Qwen3.5 35B-A3B MoE runs 27-step agentic workflow locally on mid-range hardware
A developer ran Qwen3.5 35B-A3B MoE at Q4_K_M quantization locally on a Lenovo P53 laptop, executing a 27-step video processing workflow with zero errors. The model handled transcription, subtitle editing, and video processing through sequential tool calls without human intervention.

Claude AI used to create 15-minute speculative film from concept to finish
A user pushed Claude's reasoning and creative writing capabilities to develop a complete film concept, script, and scene direction for a 15-minute AI speculative film about a family in a hypothetical Middle East conflict, with Claude handling the "Impossible Choice" central theme.