π Dunoon Daemon
Your Personal, Persistent Local AI Companion & Story Engine
Welcome to Dunoon Daemon, a local AI companion and roleplaying suite built for people who want characters that feel persistent, distinctive and fun to interact with.
Create original companions, recreate favourite fictional archetypes, build characters for tabletop games, or put two personalities together in the Arena and see what happens.
Dunoon Daemon runs locally on your own computer. Once your models are installed, your conversations and character data stay on your machine and the app does not require a cloud AI subscription.
β¨ What Can It Do?
π§ Persistent Character Memory
Each companion has its own memory.
Characters can remember useful details from previous conversations, ongoing tasks, established facts and important events without sharing everything indiscriminately between personalities.
Memory is automatically organised and maintained in the background.
π Dynamic Personalities
Characters can have their own personalities, behaviours, backstories, goals and speaking styles.
Dunoon Daemon uses adjustable personality traits to influence how characters behave rather than forcing every companion into the same generic assistant personality.
You can create serious companions, fictional characters, tabletop NPCs, villains, oddballs or whatever else you can persuade a local language model to become.
βοΈ The Arena
Choose two characters and let them interact directly.
You can:
- Advance the conversation one turn at a time
- Let them continue automatically
- Interrupt whenever you want
- Introduce new situations or events
- Add files and images
- Change the direction of the encounter while it is running
The Arena can be used for debates, roleplaying, character testing, story experiments, tabletop inspiration or simply seeing what happens when two incompatible personalities are left alone together.
Results may vary spectacularly.
π Scene Awareness
Dunoon Daemon keeps track of important details about the current situation so characters have a better chance of reacting sensibly to what is actually happening.
Characters are encouraged to respect established locations, objects, dangers, abilities and events rather than casually rewriting the world whenever the conversation changes direction.
It isn't a traditional game engine. Characters are still powered by language models and can surprise you, misunderstand things or occasionally do something completely ridiculous.
That's part of the fun.
ποΈ Expressive Eyes
The interface includes animated digital eyes that react to the character's current tone and behaviour.
They provide a simple visual indication of how your companion is responding without interrupting the conversation.
π£οΈ Character Voices
Dunoon Daemon can read character responses aloud using built-in speech options.
Different voices can be assigned to different companions, with adjustable speaking speeds and automatic audio handling.
πΌοΈ Images, Documents and Audio
Characters can work with more than ordinary text.
Depending on your setup, Dunoon Daemon can process:
- Images
- PDF documents
- Word documents
- Text and code files
- Audio files
Audio transcription is handled locally using Whisper-compatible models.
π¨ Customisable Interface
Choose different skins, fonts, text sizes and colours.
Optional Help tooltips explain controls throughout the main interface and Arena.
π Getting Started
Requirements
- Windows 10 or Windows 11 (64-bit)
- Python 3.11 or newer if running from source
- A local AI model
A modern NVIDIA, AMD or Intel GPU is recommended, although CPU operation is possible.
1. Start Dunoon Daemon
Launch:
controller.py
or use the standalone executable if you have a packaged build.
You can run models using either:
Local GGUF Models
Click π Load GGUF Model and select a compatible GGUF model stored on your computer.
Dunoon Daemon will start the local model server and connect the interface to it.
LM Studio
You can also use a model already running through LM Studio's local server.
Start the local server in LM Studio and Dunoon Daemon can connect to it.
2. Create a Companion
Click:
β New Chat
Give your companion a name.
Then open:
π Edit Persona
You can create the character yourself or use the persona generator as a starting point.
Personality settings can then be adjusted to change how the character behaves.
3. Start Talking
Double-click a companion in the session list to open the conversation.
That's it.
Talk normally.
The companion's memory, personality and conversation history are handled automatically in the background.
βοΈ Using the Arena
Open the Arena and select two existing companions.
You can control the interaction using:
βοΈ Step Turn
Advance the conversation by one character turn.
βΆοΈ Auto Loop
Allow the characters to continue talking automatically.
π₯ Send / Intervene
Interrupt the Arena and introduce your own dialogue, instructions or changes to the situation.
β‘ Event
Introduce an unexpected event into the current scene.
π Upload
Add a file or image to the interaction.
β© Continue
Allow the current character to continue its previous response.
You remain free to intervene while the characters are interacting.
β‘ Useful Commands
Commands can be typed directly into a normal companion chat.
/remember <text>
Ask the companion to permanently remember something.
/memories or /vault
Show information about the companion's stored memories.
/forget <n>
Remove recent conversational turns from the active context.
/clear
Clear the visible conversation window without deleting stored memories.
/character
Show the character's current personality settings.
/baseline
Temporarily use a more neutral personality state.
/ubaseline
Return to the character's normal dynamic personality.
/status
Show information about the currently loaded model and voice system.
/see or /upload
Open the file browser.
/splash
Free unused system and graphics memory.
/eject
Unload the currently loaded local model.
/talk 1
Slow speech.
/talk 2
Normal speech.
/talk 3
Fast speech.
π Project Structure
The main files include:
controller.py
Main application window, session controls and Arena.
dunoon_daemon.py
Companion conversation interface.
persona.py
Character and persona creation.
character.py
Personality behaviour.
overmind.py
Brings together the information a character needs for each response.
ETO.py
Helps characters remain aware of the established situation and its consequences.
memory_working.py
Maintains recent conversational memory.
memory_deep.py
Stores longer-term memories.
memory_router.py
Organises memories according to their purpose.
memory_embeddings.py
Finds memories related to the current conversation.
memory_integrity.py
Checks and repairs stored memories.
memory_transfer.py
Controls optional information sharing between companions.
state_engine.py
Maintains changing conversational state.
eye_engine.py
Controls the animated eyes.
tts_handler.py
Handles character speech.
skin_manager.py
Controls interface themes.
model_handler.py
Starts and stops local GGUF models.
bridge.py
Connects Dunoon Daemon to LM Studio.
π οΈ Running From Source
Clone the repository:
git clone YOUR_REPOSITORY_ADDRESS
Open the project folder:
cd DunoonDaemonApp
Install the required packages:
pip install requests psutil pygame edge-tts pyttsx3 sentence-transformers numpy Pillow pypdf python-docx faster-whisper
Then run:
python controller.py
π Local First
Dunoon Daemon is designed around local AI models.
Your companions, conversations, personalities and memory files are stored on your own computer.
Some optional features may require external services or downloads, but the core companion and roleplaying system is designed to operate locally.
π License
Distributed under the MIT License.
β€οΈ Dedication
Dedicated to the loyal companions who walk with us through every realm, and the code that keeps their echoes alive.
For Kylo.
Credits
Written with ChatGPT and Gemini.