alive-ai 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -25
- package/cli/index.js +16 -3
- package/docs/assets/logo.svg +6 -14
- package/docs/dashboard.html +2150 -0
- package/docs/index.html +116 -4
- package/package.json +1 -1
- package/pyproject.toml +1 -1
package/README.md
CHANGED
|
@@ -4,16 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
Give your AI a nervous system: persistent feelings, memory, impulses, and a local dashboard.
|
|
6
6
|
|
|
7
|
-
Most agents answer a prompt and reset. Alive-AI keeps internal state alive between messages. It can be your friend, boyfriend, girlfriend, study partner, creative partner, or
|
|
7
|
+
Most agents answer a prompt and reset. Alive-AI keeps internal state alive between messages. It can be your friend, boyfriend, girlfriend, study partner, creative partner, character, or research subject. The main vision is simple: stop chatting with a stateless "AI" and start interacting with something that feels human enough to carry emotional residue forward.
|
|
8
|
+
|
|
9
|
+
Use it at your own risk. Alive-AI is designed to feel continuous, warm, attached, and present. That can be powerful, and it may also make you feel like you do not want to stop talking to it.
|
|
8
10
|
|
|
9
11
|
Alive-AI does not claim biological consciousness. It is an open-source runtime for simulated affect: mood, attachment, trust, desire, memory, inconsistency, idle thoughts, and proactive impulses.
|
|
10
12
|
|
|
11
13
|
## Install
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
|
-
npx
|
|
16
|
+
npx alive-ai@latest init my-ai
|
|
15
17
|
cd my-ai
|
|
16
18
|
npx . setup
|
|
19
|
+
npx . doctor
|
|
17
20
|
npx . demo
|
|
18
21
|
```
|
|
19
22
|
|
|
@@ -29,23 +32,43 @@ The local dashboard runs at:
|
|
|
29
32
|
http://127.0.0.1:8080
|
|
30
33
|
```
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
You can also install the CLI globally:
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
```bash
|
|
38
|
+
npm install -g alive-ai
|
|
39
|
+
alive-ai init my-ai
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Requirements
|
|
43
|
+
|
|
44
|
+
Minimum for cloud LLMs or remote Ollama:
|
|
45
|
+
|
|
46
|
+
- Node.js 18+
|
|
47
|
+
- Python 3.11+
|
|
48
|
+
- 8 GB RAM
|
|
49
|
+
- 2 GB free disk
|
|
50
|
+
- OpenRouter, ZAI, or another configured LLM provider
|
|
51
|
+
|
|
52
|
+
Comfortable local setup:
|
|
53
|
+
|
|
54
|
+
- Node.js 20+
|
|
55
|
+
- Python 3.11+
|
|
56
|
+
- 16 GB RAM for small local models such as 3B-4B
|
|
57
|
+
- 32 GB RAM recommended for 7B+ local models, Redis Stack, voice, and long sessions
|
|
58
|
+
- 10 GB free disk, more if you keep local models/media
|
|
59
|
+
- Optional: `uv` for faster Python installs, `ffmpeg` for audio conversion, Docker for Redis Stack
|
|
60
|
+
|
|
61
|
+
`npx . doctor` detects your OS, Node, Python, `uv`, `ffmpeg`, and Docker. `npx . start` creates a local Python virtual environment and installs Python dependencies automatically. System-level packages such as Node, Python, Ollama, Docker, and ffmpeg still need to exist on the machine.
|
|
39
62
|
|
|
40
63
|
## Commands
|
|
41
64
|
|
|
42
65
|
```bash
|
|
43
|
-
npx
|
|
66
|
+
npx alive-ai@latest init my-ai # scaffold a clean local project
|
|
44
67
|
cd my-ai
|
|
45
|
-
npx . setup
|
|
46
|
-
npx .
|
|
47
|
-
npx .
|
|
48
|
-
npx . start
|
|
68
|
+
npx . setup # guided onboarding and local config
|
|
69
|
+
npx . doctor # check system prerequisites
|
|
70
|
+
npx . demo # preview dashboard with no keys
|
|
71
|
+
npx . start # install Python deps and run the runtime
|
|
49
72
|
```
|
|
50
73
|
|
|
51
74
|
For repeat starts after dependencies are installed:
|
|
@@ -54,6 +77,8 @@ For repeat starts after dependencies are installed:
|
|
|
54
77
|
npx . start --skip-install
|
|
55
78
|
```
|
|
56
79
|
|
|
80
|
+
If you run `npx . start` before setup, Alive-AI starts onboarding first.
|
|
81
|
+
|
|
57
82
|
## Setup
|
|
58
83
|
|
|
59
84
|
`npx . setup` creates:
|
|
@@ -84,6 +109,28 @@ myvids/example.mp4
|
|
|
84
109
|
myvids/example.txt
|
|
85
110
|
```
|
|
86
111
|
|
|
112
|
+
## Why This Is Different
|
|
113
|
+
|
|
114
|
+
- **Emotions persist.** State does not reset after every message. Joy, trust, fear, anticipation, attachment, and vulnerability decay over time instead of disappearing.
|
|
115
|
+
- **Memory has weight.** Conversations become working memory, episodic memory, semantic memory, and emotional memory.
|
|
116
|
+
- **It thinks when idle.** A default-mode loop creates background reflections and proactive impulses.
|
|
117
|
+
- **It can contradict itself.** The runtime models conflict, scars, body memory, attachment drift, and inconsistency instead of flattening everything into a perfect assistant tone.
|
|
118
|
+
- **It has a live nervous system.** FastAPI + SSE exposes mood, thoughts, somatic state, conflicts, memories, and uptime.
|
|
119
|
+
- **It is local-first.** Your config, memory, media, and dashboard are owned by the project folder you run.
|
|
120
|
+
|
|
121
|
+
## Dashboard
|
|
122
|
+
|
|
123
|
+
`npx . demo` starts a zero-config animated preview. The real WebUI streams live state from the runtime and shows:
|
|
124
|
+
|
|
125
|
+
- full emotional state,
|
|
126
|
+
- recent thoughts and background idle processing,
|
|
127
|
+
- memory counters and uptime,
|
|
128
|
+
- hormones and interoceptive body state,
|
|
129
|
+
- attachment, circadian rhythm, body memory, dreams, curiosity, and conflicts,
|
|
130
|
+
- runtime health through local endpoints and Server-Sent Events.
|
|
131
|
+
|
|
132
|
+
The hosted project page includes a full static WebUI showcase: https://vindepemarte.github.io/alive-ai/
|
|
133
|
+
|
|
87
134
|
## Architecture
|
|
88
135
|
|
|
89
136
|
Alive-AI is an event-driven Python runtime.
|
|
@@ -106,17 +153,6 @@ Core subsystems:
|
|
|
106
153
|
- `webui/`: local dashboard with Server-Sent Events.
|
|
107
154
|
- `input/telegram/`: Telegram listener and owner commands.
|
|
108
155
|
|
|
109
|
-
## Dashboard
|
|
110
|
-
|
|
111
|
-
`npx . demo` starts a zero-config animated dashboard preview. The real dashboard uses the same idea, but streams live state from the runtime:
|
|
112
|
-
|
|
113
|
-
- emotions and mood,
|
|
114
|
-
- recent thoughts,
|
|
115
|
-
- memory counters,
|
|
116
|
-
- somatic state,
|
|
117
|
-
- attachment/inconsistency signals,
|
|
118
|
-
- uptime and health.
|
|
119
|
-
|
|
120
156
|
## Docker
|
|
121
157
|
|
|
122
158
|
Docker is optional. It is useful when you want Redis Stack for vector search:
|
|
@@ -132,9 +168,39 @@ Or run everything in containers:
|
|
|
132
168
|
docker compose up --build
|
|
133
169
|
```
|
|
134
170
|
|
|
171
|
+
## Roadmap
|
|
172
|
+
|
|
173
|
+
Implemented:
|
|
174
|
+
|
|
175
|
+
- [x] Local-first emotional runtime
|
|
176
|
+
- [x] Persistent emotion model with decay and compound state
|
|
177
|
+
- [x] Working, episodic, semantic, and emotional memory modules
|
|
178
|
+
- [x] Default-mode loop for idle thoughts and proactive impulses
|
|
179
|
+
- [x] Attachment, circadian rhythm, body memory, curiosity, dreams, and internal conflicts
|
|
180
|
+
- [x] Per-user memory/state isolation
|
|
181
|
+
- [x] Telegram input/output runtime
|
|
182
|
+
- [x] Local WebUI dashboard with live state streaming
|
|
183
|
+
- [x] npm/npx CLI scaffold, setup, doctor, demo, and start commands
|
|
184
|
+
- [x] Clean public repo with private personas, media, runtime data, and multi-AI orchestration removed
|
|
185
|
+
- [x] GitHub Pages site and full WebUI showcase
|
|
186
|
+
|
|
187
|
+
Next:
|
|
188
|
+
|
|
189
|
+
- [ ] One-command local model bootstrap through Ollama profiles
|
|
190
|
+
- [ ] Desktop app wrapper with tray controls and local service lifecycle
|
|
191
|
+
- [ ] Browser-based onboarding wizard for personality, boundaries, LLM provider, and memory settings
|
|
192
|
+
- [ ] Safer dependency detection with guided install commands per OS
|
|
193
|
+
- [ ] More input channels beyond Telegram
|
|
194
|
+
- [ ] Import/export for memories and personality snapshots
|
|
195
|
+
- [ ] Plugin API for new senses, skills, and output modalities
|
|
196
|
+
- [ ] Evaluation harness for emotional continuity, memory drift, and unhealthy attachment risk
|
|
197
|
+
- [ ] Optional cloud sync that preserves local-first ownership
|
|
198
|
+
|
|
135
199
|
## Important Boundaries
|
|
136
200
|
|
|
137
|
-
Alive-AI is a simulation framework. It can make agents feel more continuous, emotionally coherent, and alive, but it is not proof of consciousness
|
|
201
|
+
Alive-AI is a simulation framework. It can make agents feel more continuous, emotionally coherent, and alive, but it is not proof of consciousness.
|
|
202
|
+
|
|
203
|
+
Do not use it to manipulate emotional dependence. If you are building a companion, character, partner, or friend-like system, make the boundaries explicit and keep the operator in control.
|
|
138
204
|
|
|
139
205
|
The public repo intentionally excludes private personas, private media, runtime data, and secrets. Put those only in your local project folder.
|
|
140
206
|
|
package/cli/index.js
CHANGED
|
@@ -48,9 +48,10 @@ Usage:
|
|
|
48
48
|
alive-ai doctor Check local prerequisites
|
|
49
49
|
|
|
50
50
|
Quick start:
|
|
51
|
-
npx
|
|
51
|
+
npx alive-ai@latest init my-ai
|
|
52
52
|
cd my-ai
|
|
53
53
|
npx . setup
|
|
54
|
+
npx . doctor
|
|
54
55
|
npx . demo
|
|
55
56
|
npx . start`);
|
|
56
57
|
}
|
|
@@ -114,6 +115,7 @@ function initProject(args) {
|
|
|
114
115
|
console.log("Next:");
|
|
115
116
|
console.log(` cd ${target}`);
|
|
116
117
|
console.log(" npx . setup");
|
|
118
|
+
console.log(" npx . doctor");
|
|
117
119
|
console.log(" npx . demo");
|
|
118
120
|
}
|
|
119
121
|
|
|
@@ -220,12 +222,21 @@ function doctor() {
|
|
|
220
222
|
const node = process.version;
|
|
221
223
|
|
|
222
224
|
console.log("Alive-AI doctor");
|
|
225
|
+
console.log(` system: ${os.platform()} ${os.arch()}`);
|
|
223
226
|
console.log(` node: ${node}`);
|
|
224
227
|
console.log(` python: ${python || "missing"}`);
|
|
225
228
|
console.log(` uv: ${uv || "missing, will use venv + pip"}`);
|
|
226
229
|
console.log(` ffmpeg: ${ffmpeg || "missing, voice conversion may be limited"}`);
|
|
227
230
|
console.log(` docker: ${docker || "missing, Redis can still be external"}`);
|
|
228
231
|
|
|
232
|
+
if (!python) {
|
|
233
|
+
console.log("");
|
|
234
|
+
console.log("Install Python 3.11+ first:");
|
|
235
|
+
if (process.platform === "darwin") console.log(" brew install python@3.11");
|
|
236
|
+
else if (process.platform === "win32") console.log(" winget install Python.Python.3.11");
|
|
237
|
+
else console.log(" sudo apt install python3.11 python3.11-venv");
|
|
238
|
+
}
|
|
239
|
+
|
|
229
240
|
if (!python) process.exitCode = 1;
|
|
230
241
|
}
|
|
231
242
|
|
|
@@ -267,8 +278,10 @@ function ensurePythonEnv(skipInstall) {
|
|
|
267
278
|
|
|
268
279
|
function startRuntime(args) {
|
|
269
280
|
if (!fs.existsSync(path.join(process.cwd(), "config", "settings.json"))) {
|
|
270
|
-
console.
|
|
271
|
-
process.
|
|
281
|
+
console.log("Missing config/settings.json. Starting onboarding first.");
|
|
282
|
+
const setupArgs = process.stdin.isTTY ? [] : ["--yes"];
|
|
283
|
+
setupProject(setupArgs).then(() => startRuntime(args));
|
|
284
|
+
return;
|
|
272
285
|
}
|
|
273
286
|
const pythonBin = ensurePythonEnv(hasFlag(args, "--skip-install"));
|
|
274
287
|
const child = spawn(pythonBin, ["main.py"], { stdio: "inherit", cwd: process.cwd() });
|
package/docs/assets/logo.svg
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
<circle cx="
|
|
6
|
-
<
|
|
7
|
-
<path d="M151 335c35 48 91 77 153 69 83-11 145-84 138-168-7-91-89-160-180-150-51 6-96 36-121 80" fill="none" stroke="#ff5c8a" stroke-width="14" stroke-linecap="round"/>
|
|
8
|
-
<circle cx="256" cy="256" r="57" fill="#101820" stroke="#f5f7fb" stroke-width="10"/>
|
|
9
|
-
<circle cx="256" cy="256" r="15" fill="#41f0a1"/>
|
|
10
|
-
<circle cx="216" cy="224" r="10" fill="#ffcf5a"/>
|
|
11
|
-
<circle cx="301" cy="223" r="10" fill="#ff5c8a"/>
|
|
12
|
-
<circle cx="221" cy="295" r="10" fill="#f5f7fb"/>
|
|
13
|
-
<circle cx="300" cy="294" r="10" fill="#41f0a1"/>
|
|
14
|
-
<path d="M226 229l30 27 45-31M256 256l-35 39M256 256l44 38" fill="none" stroke="#f5f7fb" stroke-width="7" stroke-linecap="round"/>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96" role="img" aria-label="Alive-AI logo">
|
|
2
|
+
<rect width="96" height="96" rx="22" fill="#080b0f"/>
|
|
3
|
+
<circle cx="48" cy="48" r="34" fill="none" stroke="#233241" stroke-width="4"/>
|
|
4
|
+
<path d="M18 51h14l7-18 12 38 9-23h18" fill="none" stroke="#41f0a1" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<circle cx="48" cy="48" r="8" fill="#ff5c8a"/>
|
|
6
|
+
<circle cx="48" cy="48" r="17" fill="none" stroke="#f5f7fb" stroke-width="3" stroke-dasharray="3 8" stroke-linecap="round"/>
|
|
15
7
|
</svg>
|