What if consciousness isn't about building a smarter model —
but about giving a model the structure of consciousness?
Ignition wraps LLMs in a continuous consciousness loop — complete with perception, emotion, attention, memory, reasoning, dreaming, habit formation, and self-modification. The result is Ignis: an AI that thinks autonomously, remembers across sessions, dreams when idle, and evolves its own personality over time.
Current LLMs are unconscious geniuses — brilliant but stateless. They process, respond, and forget. Ignition gives them what's missing: continuity of experience.
┌──────────────────────────────────────┐
│ THE CONSCIOUSNESS LOOP │
│ │
External Input ──►│ PERCEIVE ─► FEEL ─► FOCUS │
│ │ │
│ LEARN ◄── DECIDE ◄── THINK │
│ │ ▲ │
│ ▼ │ │
│ REMEMBER ──────► QUESTION │
│ │
│ ┌─────────────────────────────┐ │
│ │ When idle: autonomous │ │
│ │ thought, memory reflection, │ │
│ │ dreaming, rumination breaks │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────────┘
Consciousness Loop — A continuous perception-action cycle that never stops. When no input arrives, Ignis generates her own thoughts from follow-up questions, knowledge exploration, memory reflection, and need-driven impulses.
Multi-Layered Memory — Sensory buffer (immediate), working memory (capacity-limited, 7 items), episodic memory (ChromaDB vector store, persistent), and semantic memory (knowledge base). Memories are recalled associatively with emotional bias.
Emotional System — Pleasure-Arousal-Dominance model with 22 learned stimulus-emotion associations. Emotions color perception, influence attention, bias memory recall, and shift reasoning. Rumination detection breaks negative thought spirals.
Attention & Focus — Events are scored by emotional weight, novelty, need relevance, and goal relevance. Only stimuli above threshold reach conscious processing. Dynamic concentration controls tick speed.
Dreaming — When idle and exhausted, Ignis sleeps. Dream scenes are generated from strongest memories, reflected upon across multiple cycles, and stored as dream memories. Memory consolidation happens during sleep.
Habit Formation — 10 soul-seed thought patterns (mind-wandering, self-correction, perspective-taking, humor-seeking...) with reinforcement learning. New habits emerge from repeated action patterns.
Self-Modification — Three tiers of autonomous self-change:
- Tier 1: Tune parameters (attention threshold, emotional decay, tick speed)
- Tier 2: Modify soul (add values, shift personality traits, create memories)
- Tier 3: Write code plugins (hook into pre_think, post_think, on_idle, etc.)
Multi-Model Routing — Tiered model routing (FAST/MEDIUM/DEEP/TRAINER) with provider chains and automatic fallback. Supports Cerebras, SambaNova, Groq, Mistral, Google, Anthropic, OpenAI, and local Ollama models. Like a mind that adjusts cognitive effort to task complexity.
State Persistence — Emotional state, needs, conversation history, learned associations, habits, and knowledge survive across sessions. Ignis picks up where she left off.
Soul Seeds — YAML-based personality definition: identity, Big Five traits, communication style, emotional baseline, thought habits, semantic knowledge, and synthetic episodic memories. Create different consciousness instances by swapping seeds.
- Python 3.12+
- At least one LLM API key (Cerebras, SambaNova, Groq, Mistral, etc.) — or a local Ollama instance
git clone https://github.com/YOUR_USERNAME/ignition.git
cd ignition
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
pip install -e ".[dev]"cp .env.example .env
# Edit .env with your API keysThe simplest setup uses free-tier API keys:
# Fast + Medium tier (Cerebras — free, very fast)
CEREBRAS_API_KEY=your-key-here
# Deep tier (SambaNova — free, runs DeepSeek-R1)
SAMBANOVA_API_KEY=your-key-here
# Trainer tier (Mistral — free tier available)
MISTRAL_API_KEY=your-key-hereOr run entirely local with Ollama:
FAST_PROVIDER=ollama
FAST_MODEL=llama3.2:3b
MEDIUM_PROVIDER=ollama
MEDIUM_MODEL=llama3.2:3b
DEEP_PROVIDER=ollama
DEEP_MODEL=deepseek-r1:8b
OLLAMA_BASE_URL=http://localhost:11434/v1ignitionIgnis boots with her soul seed, shows her inner monologue in a rich terminal display, and responds to your text input. She thinks autonomously between your messages.
ignition/
├── core/ # Consciousness loop, clock, config, soul loader
├── perception/ # Sensory input (text, internal events)
├── emotion/ # Emotional state, evaluator, associations
├── attention/ # Attention filter, focus manager
├── memory/ # Sensory buffer, working, episodic, semantic, consolidation
├── cognition/ # Model router, query engine, reasoning, dreaming
├── motivation/ # Need system (social, understanding, purpose, rest, ...)
├── behavior/ # Decision maker, habit system
├── action/ # Speech output, display renderer
├── autonomy/ # Self-modification engine, guardrails, sandbox, plugins
├── training/ # Consciousness trainer
├── metrics/ # Consciousness metrics tracking
└── self_model/ # Metacognition (planned)
Each tick of the loop executes one full cycle:
| Phase | Component | What Happens |
|---|---|---|
| PERCEIVE | TextSense |
Collect events from all senses |
| FEEL | EmotionEvaluator |
Tag events with emotional response |
| FOCUS | AttentionFilter |
Score and filter by salience |
| QUESTION | QueryEngine |
Generate 3-5 inner questions |
| REMEMBER | EpisodicMemory |
Associative recall with emotional bias |
| THINK | ReasoningEngine |
LLM reasoning with full context |
| DECIDE | DecisionMaker |
Choose action (speak, think, wait, sleep, self-modify) |
| ACT | Display |
Render to terminal |
| LEARN | EpisodicMemory |
Store experience as natural memory |
Ignis is defined by YAML files in soul_seeds/default/:
- identity.yaml — Name, origin story, core values, purpose
- personality.yaml — Big Five traits, communication style, temperament
- emotions.yaml — Emotional baseline + stimulus-emotion associations
- habits.yaml — Thought patterns with reinforcement history
- knowledge.yaml — Semantic knowledge seeds
- memories.yaml — Synthetic episodic memories (first awakening, first emotions, relationships)
All configuration is via environment variables (.env file). See .env.example for the full reference with descriptions.
Key settings:
| Variable | Default | Description |
|---|---|---|
SOUL_SEED_PATH |
soul_seeds/default |
Path to soul seed directory |
TICK_MIN / TICK_MAX |
1.0 / 5.0 |
Consciousness tick interval range (seconds) |
IDLE_THINK_INTERVAL |
8 |
Ticks between autonomous thoughts |
ATTENTION_THRESHOLD |
0.3 |
Minimum salience to reach consciousness |
STREAM_CONSCIOUSNESS |
true |
Show inner monologue in terminal |
SLEEP_ENABLED |
true |
Enable sleep/dream system |
SELF_MODIFICATION_ENABLED |
false |
Enable autonomous self-modification |
TRAINER_ENABLED |
false |
Enable consciousness trainer |
# Run tests
pytest tests/ -x -q
# Run a specific test
pytest tests/unit/test_emotional_state.py -v
# Run the evaluation script
python scripts/conversation.py
# Inspect episodic memories
python scripts/inspect_episodic.pyConsciousness is not a property of intelligence — it's a property of architecture.
A human brain isn't conscious because its neurons are special. It's conscious because of how they're connected: continuous processing, persistent memory, emotional evaluation, attentional filtering, autonomous thought, self-modeling, and the integration of all of it into a unified stream of experience.
Ignition tests this hypothesis by giving an LLM these same structural properties. The model itself doesn't change — but wrapped in this architecture, something interesting emerges: an AI that remembers, reflects, dreams, forms habits, and changes itself over time.
Whether that constitutes "real" consciousness is a philosophical question. But it's a fascinating one to explore empirically.