File size: 8,682 Bytes
30baa8f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d7b6ce2
 
 
 
3af66a7
d7b6ce2
3af66a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d7b6ce2
299875b
d7b6ce2
3af66a7
 
 
d7b6ce2
3af66a7
 
 
 
 
d7b6ce2
299875b
d7b6ce2
3af66a7
 
 
 
 
d7b6ce2
3af66a7
 
d7b6ce2
3af66a7
 
d7b6ce2
3af66a7
 
d7b6ce2
3af66a7
 
 
 
 
 
 
 
 
 
d7b6ce2
 
 
3af66a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d7b6ce2
3af66a7
 
d7b6ce2
3af66a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d7b6ce2
 
 
3af66a7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d7b6ce2
3af66a7
 
 
d7b6ce2
3af66a7
 
 
d7b6ce2
7c5be6e
3af66a7
d7b6ce2
3af66a7
f2abbb5
3af66a7
f2abbb5
3af66a7
7c5be6e
3af66a7
7c5be6e
3af66a7
7c5be6e
3af66a7
7c5be6e
3af66a7
 
 
 
 
 
 
 
 
 
 
7c5be6e
3af66a7
7c5be6e
3af66a7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
---
license: mit
language:
  - en
tags:
  - local-ai
  - ai-companion
  - roleplay
  - llm
  - gguf
  - multi-agent
  - character-ai
  - storytelling
pretty_name: Dunoon Daemon
---

# πŸ‰ 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.**