Kepler365 commited on
Commit
3af66a7
·
verified ·
1 Parent(s): f2abbb5

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +303 -154
README.md CHANGED
@@ -2,190 +2,339 @@
2
 
3
  > **Your Personal, Persistent Local AI Companion & Story Engine**
4
 
5
- Welcome to **Dunoon Daemon** a fully autonomous, local-first multi-agent companion suite designed for creative writers, tabletop roleplayers, and anyone seeking persistent AI companions that never forget.
6
 
7
- Everything runs entirely on your local hardware. No cloud subscriptions, no telemetry leaks, and zero mandatory internet connections once your models and weights are loaded[cite: 35].
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  ---
10
 
11
- ## Key Capabilities
 
 
12
 
13
- * **Strict Session-Scoped Memory**: Tiered storage (Working Memory, Deep Memory, Factual Vaults, and Journals) isolated in per-companion vaults (`data/sessions/<session_id>/vaults/`)[cite: 4, 35].
14
- * **Dynamic OCEAN Psychology**: Simulates Big Five personality variance and daily emotional shifts affecting tone, vocabulary, and empathy levels[cite: 3, 35].
15
- * **Dual Arena Debate Deck**: Host live multi-agent debates with dynamic topic intervention, user injection, and autonomous event triggers[cite: 5, 35].
16
- * **Universal Multimodal Perception**: Ingests images, transcribes spoken audio tracks via local Whisper, parses PDFs, Word docs, and plain text code files.
17
- * **Expressive Eye Telemetry**: Dual vector digital eyes respond dynamically to hidden LLM affective metadata envelopes (`<!--meta:{...}-->`)[cite: 7, 21, 35].
18
- * **Multi-Archetype Neural Speech**: Built-in Edge TTS streaming with local SAPI5 fallback and smooth audio fade-out logic[cite: 26, 35].
19
 
20
  ---
21
 
22
- ## 🚀 Quick Start Guide
 
 
 
 
23
 
24
- ### Prerequisites
25
- * **OS**: Windows 10/11 (64-bit)[cite: 35]
26
- * **Python**: 3.11+ (if running from source)[cite: 35]
27
- * **GPU**: NVIDIA (CUDA) or AMD/Intel (Vulkan) recommended; CPU fallback supported[cite: 4, 35].
28
 
29
- ### 1. Launch the Engine
30
- Open `controller.py` or run the standalone executable[cite: 35]. Select your preferred inference pipeline:
31
- * **Native C++ Server**: Click **📂 Load GGUF Model** to point to any local GGUF file[cite: 5, 35]. The daemon auto-detects your GPU, pulls optimized binaries into `bin/`, and spins up `llama-server.exe`[cite: 5, 8, 20, 35].
32
- * **LM Studio (Local API)**: Start the Local Server in LM Studio (port 1234), and the Daemon connects automatically[cite: 2, 5, 35].
33
 
34
- ### 2. Create a Companion
35
- 1. Click **➕ New Chat** and name your session[cite: 5, 35].
36
- 2. Choose a baseline personality mode (**Dynamic OCEAN** recommended)[cite: 3, 5, 35].
37
- 3. Click **🎭 Edit Persona** to roll a random archetype or configure your custom character directives and backstory[cite: 5, 22, 35].
38
 
39
- ### 3. Open Dialogue
40
- Double-click your companion in the session deck to launch the active chat canvas[cite: 5, 35].
 
 
 
 
 
 
 
 
41
 
42
  ---
43
 
44
- ##Slash Command Reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
- Execute these commands directly in the dialogue input bar for rapid control[cite: 6, 35]:
 
47
 
48
- * `/remember <text>` — Forces direct storage into the permanent Journal Vault[cite: 6, 13, 35].
49
- * `/memories` or `/vault` Displays diagnostic counts across all memory tiers[cite: 6, 35].
50
- * `/forget <n>` — Purges the last *n* conversational turns from context[cite: 6, 35].
51
- * `/clear` — Clears visual canvas history without altering memory vaults[cite: 6, 35].
52
- * `/character` Displays active OCEAN traits and daily mood shifts[cite: 3, 6, 35].
53
- * `/baseline` — Locks personality into a neutral, analytical state[cite: 6, 35].
54
- * `/ubaseline` — Re-enables dynamic daily mood variance[cite: 3, 6, 35].
55
- * `/status` Displays active model, endpoint, and voice provider[cite: 6, 35].
56
- * `/see` or `/upload` — Opens file staging browser for multimodal ingestion[cite: 6, 35].
57
- * `/splash` Forces Python garbage collection to free RAM/VRAM[cite: 6, 35].
58
- * `/eject` Unloads GGUF models and completely flushes VRAM[cite: 5, 6, 35].
59
- * `/talk 1 | 2 | 3` — Sets vocal reading speed: Slow (1), Medium (2), or Fast (3)[cite: 6, 26, 35].
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
  ---
62
 
63
- ## 📁 Repository Structure
64
-
65
- ```text
66
- DunoonDaemonApp/
67
- ├── bin/ # Native engine binaries (llama-server.exe, runtimes)[cite: 4, 20, 35]
68
- ├── data/[cite: 4, 35]
69
- │ ├── audio_cache/ # Temporary speech cache[cite: 4, 35]
70
- │ └── sessions/ # Session registry & isolated companion vaults[cite: 4, 24, 35]
71
- │ ├── sessions.json # Master session catalog[cite: 4, 24, 35]
72
- │ └── <session_id>/ # Isolated per-companion sub-vault[cite: 4, 35]
73
- │ └── vaults/[cite: 4, 35]
74
- │ ├── working_memory.json # Short-term working buffer[cite: 4, 19, 35]
75
- │ ├── deep_memory.json # Consolidated episodic memory[cite: 4, 13, 35]
76
- │ ├── journal_vault.json # High-salience structured journal entries[cite: 4, 10, 35]
77
- │ ├── embeddings.json # Per-session SentenceTransformer vector store[cite: 4, 14, 35]
78
- │ ├── intent_memory.json # Procedural mandates & directives[cite: 4, 16, 35]
79
- │ ├── task_memory.json # Workflow & step-tracking memory[cite: 4, 16, 35]
80
- │ ├── factual_memory.json # Core biographical facts[cite: 4, 16, 35]
81
- │ ├── continuation_memory.json[cite: 4, 16, 35]
82
- │ ├── reset_memory.json[cite: 4, 16, 35]
83
- │ └── prune_telemetry.json[cite: 4, 23, 35]
84
- ├── models/ # Local GGUF models & mmproj vision projectors[cite: 4, 20, 35]
85
- ├── brain.py # Central cognitive routing & CPU affinity[cite: 1, 35]
86
- ├── bridge.py # LM Studio local API bridge[cite: 2, 35]
87
- ├── character.py # OCEAN Big Five profiling & daily mood variance[cite: 3, 35]
88
- ├── config.py # Portable path resolution & hardware detection[cite: 4, 35]
89
- ├── controller.py # Main deck UI, session manager, & Dual Arena host[cite: 5, 35]
90
- ├── dunoon_daemon.py # Autonomous companion chat canvas & multimodal deck[cite: 6, 35]
91
- ├── eye_engine.py # Expressive vector eye telemetry & pupil dynamics[cite: 7, 35]
92
- ├── fetch_engine.py # C++ binary & runtime auto-fetcher[cite: 8, 35]
93
- ├── journal_entry.py / journal_vault.py # Structured salience journaling & atomic storage[cite: 9, 10, 35]
94
- ├── memory_api.py # Public ingestion gateway[cite: 12, 35]
95
- ├── memory_deep.py / memory_working.py # Thread-safe tiered memory engines[cite: 13, 19, 35]
96
- ├── memory_embeddings.py # Local vector embedding & semantic cosine search[cite: 14, 35]
97
- ├── memory_integrity.py # Vault sanitizer & auto-healer[cite: 15, 35]
98
- ├── memory_router.py # Semantic intent & vault classification router[cite: 16, 35]
99
- ├── memory_transfer.py # Cross-persona insight distillation bridge[cite: 17, 35]
100
- ├── memory_validation.py # Sanitization & private data filter[cite: 18, 35]
101
- ├── model_handler.py # Native C++ subprocess manager & zombie cleaner[cite: 20, 35]
102
- ├── overmind.py # Context fusion & dual-channel telemetry engine[cite: 21, 35]
103
- ├── persona.py # Procedural persona synthesis engine[cite: 22, 35]
104
- ├── prune.py # Sleep cycle consolidation & capacity controller[cite: 23, 35]
105
- ├── session_manager.py # Session registry & disk persistence[cite: 24, 35]
106
- ├── significance.py # Vector salience & entropy scoring engine[cite: 28, 35]
107
- ├── skin_manager.py # Dynamic theme palettes & widget skinning[cite: 29, 35]
108
- ├── state_engine.py # Conversation heuristic mood tracker[cite: 25, 35]
109
- ├── tts_handler.py # Multi-archetype neural voice engine[cite: 26, 35]
110
- └── vault_auto_repair.py # Global & session vault format repair[cite: 27, 35]
111
- [ User Dialogue / Staged Artifact ]
112
-
113
-
114
- ┌──────────────────┐
115
- │ memory_validation│ ─── Blocks sensitive credentials & malformed payloads
116
- └─────────┬────────┘
117
-
118
-
119
- ┌──────────────────┐
120
- │ memory_router │ ─── Semantic subspace matching across intent/task/facts
121
- └─────────┬────────┘
122
-
123
- ���─────────────┼───────────────────────────┐
124
- │ │ │
125
- ▼ ▼ ▼
126
- [ Working ] [ Intent / Task / Facts ] [ Deep / Journal ]
127
- │ │ │
128
- │ └─────────────┬─────────────┘
129
- │ │
130
- ▼ ▼
131
- ┌─────────────────────────────────────────────────────────┐
132
- │ Thread-Safe Atomic Persistence Layer (_lock + .tmp swap)│
133
- └─────────────────────────────┬───────────────────────────┘
134
-
135
-
136
- ┌──────────────────────────┐
137
- │ memory_embeddings │ (Local SentenceTransformers)
138
- │ Per-Session Vector DB │
139
- └────────────┬─────────────┘
140
-
141
-
142
- ┌───────────────────────────────────────────────────────────┐
143
- │ overmind.py │
144
- │ │
145
- │ • System Directives + Dynamic OCEAN Profile (character) │
146
- │ • Heuristic State Mood Offsets (state_engine) │
147
- │ • Semantic Memory Retrieval (Working + Deep + Journals) │
148
- │ • Filtered Cross-Persona Insights (memory_transfer) │
149
- │ • Recency-Ranked History Buffer │
150
- └─────────────────────────────┬─────────────────────────────┘
151
-
152
-
153
- ┌───────────────────────────────┐
154
- │ Dynamic Inference Execution │
155
- │ ├─ Native C++ llama-server │
156
- │ └─ LM Studio API (Fallback) │
157
- └───────────────┬───────────────┘
158
-
159
-
160
- [ Dual-Channel Output Stream ]
161
- ├── <!--meta:{...}--> ──► [ Eye Telemetry / Signal Engine ]
162
- └── Clean Dialogue ──► [ Typewriter UI + Neural Voice TTS ]
163
-
164
- ▼ (Background Idle Hook)
165
- ┌─────────────────────────────┐
166
- │ run_session_sleep_cycle │
167
- │ (Consolidation & Prune) │
168
- └─────────────────────────────┘
169
- git clone https://github.com/your-username/DunoonDaemonApp.git
170
  cd DunoonDaemonApp
 
 
 
171
  pip install requests psutil pygame edge-tts pyttsx3 sentence-transformers numpy Pillow pypdf python-docx faster-whisper
 
 
 
172
  python controller.py
173
- ���� Dedication & License
174
 
175
- Distributed under the MIT License.
176
 
177
- Dedicated to the loyal companions who walk with us through every realm, and the code that keeps their echoes alive. For Kylo.
178
 
179
- ![Screenshot 2026-08-16 215247](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/d5sR8lGlX-1JW7WVSoRoD.png)
180
 
181
- ![Screenshot 2026-08-16 215014](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/sVbqlyG5JcgHv1Heqq1oW.png)
182
 
183
- ![Screenshot 2026-08-16 215902](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/f_GSjCjO3H7BMMzXBrdvq.png)
184
 
185
- ![Screenshot 2026-08-16 215054](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/qI3byVZyjQbZxgIERKC4R.png)
186
 
187
- ![Screenshot 2026-08-16 214603](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/GSSZoEzMh8xg9xW4oSV44.png)
188
 
189
- ![Screenshot 2026-08-16 214756](https://cdn-uploads.huggingface.co/production/uploads/6a6ba17af2a4d133877497eb/eWUl4lNyAlnUyyuiquEa_.png)
 
 
 
 
 
 
 
 
 
 
190
 
 
191
 
 
 
2
 
3
  > **Your Personal, Persistent Local AI Companion & Story Engine**
4
 
5
+ 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.
6
 
7
+ Create original companions, recreate favourite fictional archetypes, build characters for tabletop games, or put two personalities together in the Arena and see what happens.
8
+
9
+ 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.
10
+
11
+ ---
12
+
13
+ ## ✨ What Can It Do?
14
+
15
+ ### 🧠 Persistent Character Memory
16
+
17
+ Each companion has its own memory.
18
+
19
+ Characters can remember useful details from previous conversations, ongoing tasks, established facts and important events without sharing everything indiscriminately between personalities.
20
+
21
+ Memory is automatically organised and maintained in the background.
22
+
23
+ ### 🎭 Dynamic Personalities
24
+
25
+ Characters can have their own personalities, behaviours, backstories, goals and speaking styles.
26
+
27
+ Dunoon Daemon uses adjustable personality traits to influence how characters behave rather than forcing every companion into the same generic assistant personality.
28
+
29
+ You can create serious companions, fictional characters, tabletop NPCs, villains, oddballs or whatever else you can persuade a local language model to become.
30
+
31
+ ### ⚔️ The Arena
32
+
33
+ Choose two characters and let them interact directly.
34
+
35
+ You can:
36
+
37
+ - Advance the conversation one turn at a time
38
+ - Let them continue automatically
39
+ - Interrupt whenever you want
40
+ - Introduce new situations or events
41
+ - Add files and images
42
+ - Change the direction of the encounter while it is running
43
+
44
+ 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.
45
+
46
+ Results may vary spectacularly.
47
+
48
+ ### 🌍 Scene Awareness
49
+
50
+ 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.
51
+
52
+ Characters are encouraged to respect established locations, objects, dangers, abilities and events rather than casually rewriting the world whenever the conversation changes direction.
53
+
54
+ 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.
55
+
56
+ That's part of the fun.
57
+
58
+ ### 👁️ Expressive Eyes
59
+
60
+ The interface includes animated digital eyes that react to the character's current tone and behaviour.
61
+
62
+ They provide a simple visual indication of how your companion is responding without interrupting the conversation.
63
+
64
+ ### 🗣️ Character Voices
65
+
66
+ Dunoon Daemon can read character responses aloud using built-in speech options.
67
+
68
+ Different voices can be assigned to different companions, with adjustable speaking speeds and automatic audio handling.
69
+
70
+ ### 🖼️ Images, Documents and Audio
71
+
72
+ Characters can work with more than ordinary text.
73
+
74
+ Depending on your setup, Dunoon Daemon can process:
75
+
76
+ - Images
77
+ - PDF documents
78
+ - Word documents
79
+ - Text and code files
80
+ - Audio files
81
+
82
+ Audio transcription is handled locally using Whisper-compatible models.
83
+
84
+ ### 🎨 Customisable Interface
85
+
86
+ Choose different skins, fonts, text sizes and colours.
87
+
88
+ Optional Help tooltips explain controls throughout the main interface and Arena.
89
+
90
+ ---
91
+
92
+ # 🚀 Getting Started
93
+
94
+ ## Requirements
95
+
96
+ - **Windows 10 or Windows 11 (64-bit)**
97
+ - **Python 3.11 or newer** if running from source
98
+ - A local AI model
99
+
100
+ A modern NVIDIA, AMD or Intel GPU is recommended, although CPU operation is possible.
101
+
102
+ ---
103
+
104
+ ## 1. Start Dunoon Daemon
105
+
106
+ Launch:
107
+
108
+ `controller.py`
109
+
110
+ or use the standalone executable if you have a packaged build.
111
+
112
+ You can run models using either:
113
+
114
+ ### Local GGUF Models
115
+
116
+ Click **📂 Load GGUF Model** and select a compatible GGUF model stored on your computer.
117
+
118
+ Dunoon Daemon will start the local model server and connect the interface to it.
119
+
120
+ ### LM Studio
121
+
122
+ You can also use a model already running through LM Studio's local server.
123
+
124
+ Start the local server in LM Studio and Dunoon Daemon can connect to it.
125
+
126
+ ---
127
+
128
+ ## 2. Create a Companion
129
+
130
+ Click:
131
+
132
+ **➕ New Chat**
133
+
134
+ Give your companion a name.
135
+
136
+ Then open:
137
+
138
+ **🎭 Edit Persona**
139
+
140
+ You can create the character yourself or use the persona generator as a starting point.
141
+
142
+ Personality settings can then be adjusted to change how the character behaves.
143
 
144
  ---
145
 
146
+ ## 3. Start Talking
147
+
148
+ Double-click a companion in the session list to open the conversation.
149
 
150
+ That's it.
151
+
152
+ Talk normally.
153
+
154
+ The companion's memory, personality and conversation history are handled automatically in the background.
 
155
 
156
  ---
157
 
158
+ # ⚔️ Using the Arena
159
+
160
+ Open the Arena and select two existing companions.
161
+
162
+ You can control the interaction using:
163
 
164
+ **⚔️ Step Turn**
165
+ Advance the conversation by one character turn.
 
 
166
 
167
+ **▶️ Auto Loop**
168
+ Allow the characters to continue talking automatically.
 
 
169
 
170
+ **💥 Send / Intervene**
171
+ Interrupt the Arena and introduce your own dialogue, instructions or changes to the situation.
 
 
172
 
173
+ **⚡ Event**
174
+ Introduce an unexpected event into the current scene.
175
+
176
+ **📁 Upload**
177
+ Add a file or image to the interaction.
178
+
179
+ **⏩ Continue**
180
+ Allow the current character to continue its previous response.
181
+
182
+ You remain free to intervene while the characters are interacting.
183
 
184
  ---
185
 
186
+ # ⚡ Useful Commands
187
+
188
+ Commands can be typed directly into a normal companion chat.
189
+
190
+ `/remember <text>`
191
+ Ask the companion to permanently remember something.
192
+
193
+ `/memories` or `/vault`
194
+ Show information about the companion's stored memories.
195
+
196
+ `/forget <n>`
197
+ Remove recent conversational turns from the active context.
198
+
199
+ `/clear`
200
+ Clear the visible conversation window without deleting stored memories.
201
 
202
+ `/character`
203
+ Show the character's current personality settings.
204
 
205
+ `/baseline`
206
+ Temporarily use a more neutral personality state.
207
+
208
+ `/ubaseline`
209
+ Return to the character's normal dynamic personality.
210
+
211
+ `/status`
212
+ Show information about the currently loaded model and voice system.
213
+
214
+ `/see` or `/upload`
215
+ Open the file browser.
216
+
217
+ `/splash`
218
+ Free unused system and graphics memory.
219
+
220
+ `/eject`
221
+ Unload the currently loaded local model.
222
+
223
+ `/talk 1`
224
+ Slow speech.
225
+
226
+ `/talk 2`
227
+ Normal speech.
228
+
229
+ `/talk 3`
230
+ Fast speech.
231
 
232
  ---
233
 
234
+ # 📁 Project Structure
235
+
236
+ The main files include:
237
+
238
+ `controller.py`
239
+ Main application window, session controls and Arena.
240
+
241
+ `dunoon_daemon.py`
242
+ Companion conversation interface.
243
+
244
+ `persona.py`
245
+ Character and persona creation.
246
+
247
+ `character.py`
248
+ Personality behaviour.
249
+
250
+ `overmind.py`
251
+ Brings together the information a character needs for each response.
252
+
253
+ `ETO.py`
254
+ Helps characters remain aware of the established situation and its consequences.
255
+
256
+ `memory_working.py`
257
+ Maintains recent conversational memory.
258
+
259
+ `memory_deep.py`
260
+ Stores longer-term memories.
261
+
262
+ `memory_router.py`
263
+ Organises memories according to their purpose.
264
+
265
+ `memory_embeddings.py`
266
+ Finds memories related to the current conversation.
267
+
268
+ `memory_integrity.py`
269
+ Checks and repairs stored memories.
270
+
271
+ `memory_transfer.py`
272
+ Controls optional information sharing between companions.
273
+
274
+ `state_engine.py`
275
+ Maintains changing conversational state.
276
+
277
+ `eye_engine.py`
278
+ Controls the animated eyes.
279
+
280
+ `tts_handler.py`
281
+ Handles character speech.
282
+
283
+ `skin_manager.py`
284
+ Controls interface themes.
285
+
286
+ `model_handler.py`
287
+ Starts and stops local GGUF models.
288
+
289
+ `bridge.py`
290
+ Connects Dunoon Daemon to LM Studio.
291
+
292
+ ---
293
+
294
+ # 🛠️ Running From Source
295
+
296
+ Clone the repository:
297
+
298
+ git clone YOUR_REPOSITORY_ADDRESS
299
+
300
+ Open the project folder:
301
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  cd DunoonDaemonApp
303
+
304
+ Install the required packages:
305
+
306
  pip install requests psutil pygame edge-tts pyttsx3 sentence-transformers numpy Pillow pypdf python-docx faster-whisper
307
+
308
+ Then run:
309
+
310
  python controller.py
 
311
 
312
+ ---
313
 
314
+ # 🔒 Local First
315
 
316
+ Dunoon Daemon is designed around local AI models.
317
 
318
+ Your companions, conversations, personalities and memory files are stored on your own computer.
319
 
320
+ Some optional features may require external services or downloads, but the core companion and roleplaying system is designed to operate locally.
321
 
322
+ ---
323
 
324
+ # 📜 License
325
 
326
+ Distributed under the **MIT License**.
327
+
328
+ ---
329
+
330
+ # ❤️ Dedication
331
+
332
+ Dedicated to the loyal companions who walk with us through every realm, and the code that keeps their echoes alive.
333
+
334
+ **For Kylo.**
335
+
336
+ ---
337
 
338
+ ## Credits
339
 
340
+ **Written with ChatGPT and Gemini.**