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 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 any local companion you configure. The experiment asks a harder question: what changes when an AI does not just respond, but carries emotional residue forward?
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 github:vindepemarte/alive-ai init my-ai
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
- ## Why This Is Different
35
+ You can also install the CLI globally:
33
36
 
34
- - **Emotions persist.** State does not reset after every message. Joy, trust, fear, anticipation, attachment, and vulnerability decay over time instead of disappearing.
35
- - **Memory has weight.** Conversations become episodic memory, semantic memory, and emotional memory.
36
- - **It thinks when idle.** A default-mode loop creates background reflections and proactive impulses.
37
- - **It has a live nervous system.** FastAPI + SSE exposes mood, thoughts, somatic state, conflicts, memories, and uptime.
38
- - **It is local-first.** Your config, memory, media, and dashboard are owned by the project folder you run.
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 github:vindepemarte/alive-ai init my-ai # scaffold a clean local project
66
+ npx alive-ai@latest init my-ai # scaffold a clean local project
44
67
  cd my-ai
45
- npx . setup # create safe local config
46
- npx . demo # preview animated dashboard, no keys needed
47
- npx . doctor # check Python, uv, ffmpeg, Docker
48
- npx . start # install Python deps and run the runtime
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 and should not be used to manipulate emotional dependence.
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 github:vindepemarte/alive-ai init my-ai
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.error("Missing config/settings.json. Run `npx . setup` first.");
271
- process.exit(1);
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() });
@@ -1,15 +1,7 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
2
- <title id="title">Alive-AI logo</title>
3
- <desc id="desc">A neural core wrapped by a heartbeat pulse.</desc>
4
- <rect width="512" height="512" rx="112" fill="#080b0f"/>
5
- <circle cx="256" cy="256" r="154" fill="none" stroke="#f5f7fb" stroke-width="12" opacity="0.18"/>
6
- <path d="M86 274h72l30-70 47 148 50-201 40 123h101" fill="none" stroke="#41f0a1" stroke-width="18" stroke-linecap="round" stroke-linejoin="round"/>
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>