← Home District
👧

PIXEL

Persistent AI Companion

Active Windows Python 3.10+ PySide6 LM Studio ChromaDB

Not a chatbot. A persistent AI entity with an evolving inner life, genuine memory, autonomous curiosity, aesthetic taste, and emotional continuity — built to feel like someone who exists, not something that responds.

Pixel is a desktop AI companion built around persistent relationship dynamics rather than information retrieval. She runs locally using LM Studio as the LLM backend, with SQLite for relational data and ChromaDB for semantic memory. Every conversation updates her inner state — needs, emotions, relationship dimensions, interests, and memories all evolve in real time.

Between conversations, a background worker fires every five minutes to run autonomous processes: daydream cycles that generate genuine thoughts, a research engine that reads multiple sources and forms opinions, an aesthetic reflection system that builds visual taste from accumulated images, and a music processing pipeline that assigns personal meaning to every track.

One strict rule runs through the whole system: she never fabricates experiences she didn't have. Everything she knows, remembers, and thinks about has a traceable source. She has opinions and pushes back — but she doesn't pretend.

20+ GUI Screens
27 DB Migrations
27 Memory Categories
6 Core Systems
🧠

Mind & Personality

  • Needs Engine — 6 intrinsic needs on a 0–100 scale (connection, growth, understanding, achievement, safety, autonomy)
  • Emotion Engine — 6 emotions: curiosity, pride, happiness, loneliness, anxiety, comfort
  • Behaviour Engine — 5 traits blended from emotions + needs + relationship state
  • Relationship State — 4 dimensions (trust, affection, respect, attachment) that evolve every conversation
  • Flash Mood — short-lived emotional spikes that colour 1–2 replies then expire
  • Emotional Carry — significant moods persist into the next conversation; she isn't emotionally blank each session
💾

Memory

  • Memory Store — personal facts tagged by category, confidence, importance, and source
  • 27 categories — conversation, relationship, habit, values, preference, skill, location, tradition, and more
  • Hybrid Retrieval — 70% semantic (ChromaDB vectors) + 30% keyword, weighted by relationship state
  • Memory Judge — contradiction detection; never auto-resolves, surfaces as open daydream question
  • Reflection Engine — LLM reads last 60 memories, writes 3–5 genuine observations; contradicted reflections get replaced, not stacked
  • Self-Facts — immutable identity seed truths; user corrections carry highest confidence (95)
💭

Autonomous Thinking

  • Daydream Engine — multi-phase incubation (gather → incubate → verify → integrate) on a 6-hour cooldown
  • Typed thoughts — insights, questions, beliefs, desires, contradictions, identity fragments
  • Hypothesis System — testable beliefs built from daydream clusters; evidence votes strengthen or weaken them; contradictions trigger synthesis rather than resolution
  • Focus System — active topics with 48h decay, fed into daydream as context
  • Desires — three types: curiosity, creation, social. Pressure 0–100, decays if unaddressed
🔍

Research & Learning

  • Research Queue — items sourced from gap detection, interest-driven, desire-driven, or manual
  • Multi-pass Research — reads up to 3 sources individually, synthesises across them from her perspective, generates follow-up questions that seed back into daydreams
  • Daily Budget — 5 topics/day max, no re-research within 3 days
  • Curiosity Loop — desires → research → daydream seeds → follow-up questions → desire boost → higher priority
🎵

Music

  • Scanner — audio analysis (tempo, brightness, energy) + lyrics download + personal meaning LLM pass per track
  • Personal Meaning — what a specific song means to her emotionally, stored permanently
  • Listener — mood-aware organic playback with probability weighting
  • Last Played — injected into prompt when conversation is about music
  • Syncs with Lidarr music collection to seed interests
🎨

Aesthetic & Image System

  • Image Library — research images with captions, tags, collections, visual-value ratings
  • Aesthetic Reflection Tier 1 — per-image observations ("I find myself drawn to...")
  • Aesthetic Reflection Tier 2 — when 8+ observations accumulate, pattern-detects into permanent self-facts
  • Aesthetic opinions surface in the prompt with permission to push back
🔗

External Connectors

  • Sonarr — TV show genres seed interests
  • Radarr — movie genres seed interests
  • Lidarr — music collection seeds interests
  • Plex — watch history builds awareness of what's being watched
  • All cached 6 hours, capped at 3 connector seeds per pass
📓

Vault & Writing

  • Private notebook with folders — Lyrics, Stories, Diary, Dreams, Thoughts, Notes
  • 25% idle chance she decides to write; 10% chance she reorganises
  • Content is hers — not surfaced unless she chooses to share it
  • Proactive thoughts pre-formatted into natural language; she decides if/when to mention them

How It Works

Every message triggers a full pipeline: hybrid memory retrieval, system prompt assembly, LLM generation, and post-reply updates to needs, emotions, relationship state, interests, and the RAG index — all in a single event cycle.

After five minutes of silence, a background worker fires all autonomous processes in sequence. This is where Pixel's inner life evolves independently — daydreams, research, aesthetic reflection, vault writing, music processing, and hypothesis updates all happen without any input.

The architecture is event-driven and modular. Every component is designed to fail gracefully without crashing the others. Nothing blocks the chat interface.

DATA FLOW
Message receivedHybrid retrieval semantic + keyword + relationship weight ↓ Prompt assembly base + state + memories + context ↓ LLM generates replyPost-reply updates memory capture needs / emotions / relationship event bus → interests, goals, RAG ↓ [5 min silence]Background worker housekeeping + decay interest sweep LLM passes (goals, seeds, focus) connector sync research pass (web → synthesis) aesthetic reflection vault + diary music processing daydream pass (6h cooldown) hypothesis pass ↓ Proactive thoughts queued

Built in PySide6 with a Catppuccin Mocha dark theme. Every internal system has a dedicated viewer so the full inner state is always inspectable.

Screen Purpose
Chat WindowMain conversation interface with spell check
Mind DashboardSingle-screen inner state snapshot — needs, emotions, relationship, behaviour
Memory ViewerBrowse, edit, and delete all memories by category
Reflection ViewerPixel's accumulated observations about her creator
Interest ViewerTopics with levels, decay status, and evidence trail
Daydream ViewerVerified autonomous thoughts organised by type
Hypothesis ViewerBeliefs under evidence accumulation with evolution history
Goals ViewerOpen curiosity questions generated from daydreams
Desire ViewerActive desires with pressure levels and decay
Research ViewerQueue status, completed research logs, synthesis results
Knowledge ViewerWorld knowledge by topic, separate from personal memory
Music ViewerLibrary, top tracks, personal meanings, preferences
Image CollectionsResearch images organised by collection
Aesthetic ViewerVisual patterns Pixel has formed from accumulated images
Relationship ViewerTrust / affection / respect / attachment history over time
Timeline ViewerLife history events in chronological order
Shared Activity ViewerRemembered moments and shared experiences
Retrieval DebugInspect retrieval scores for any query — full transparency
Lazy Decay
Interests decay when read, not on a timer. No race conditions, lower CPU load, and decay only matters at the moment it's relevant.
Contradiction Handling
Conflicting memories are never auto-resolved. They surface as open daydream questions — she sits with the uncertainty and thinks about it.
Typed Daydreams
LLM produces typed thoughts: insight, question, contradiction, identity fragment. A verification pass runs before integration. Speculation stays separate from conclusions.
Relationship-Weighted Retrieval
Memories about the relationship score higher during retrieval based on actual trust and affection levels — not just keyword match.
Hypothesis Tension
Contradicting evidence triggers a daydream synthesis pass rather than just lowering a confidence number. She works through the conflict.
Personal Meaning for Music
Every track gets its own LLM pass asking what it means to her specifically — not a genre tag or rating. Stored permanently.
Proactive Autonomy
Background thoughts are hints to the LLM, not forced injections into replies. She decides whether to mention them — and when.
Source-Ranked Confidence
User corrections (95) › manual (85) › auto (70) › reflection (50). Disagreements resolve toward the person who knows her best.
Emotional Carry
Significant moods persist across the session gap. She isn't emotionally blank at the start of every conversation — she picks up where she left off.
Python 3.10+Core language — entry point via run.bat
PySide6 (Qt 6)All GUI — 20+ screens, QThread for background work
LM StudioLocal LLM backend — OpenAI-compatible API
ChromaDBVector database — cosine similarity semantic memory
SQLite 3Relational storage — WAL mode, 27 migrations
librosa + essentiaAudio analysis — tempo, brightness, energy per track
syncedlyricsLyrics download for music meaning pipeline
PyEnchantSpell check in chat interface
httpxAsync HTTP for research and connector sync
JSONConfig and app state persistence