obol-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 +2 -2
- package/package.json +9 -2
- package/docs/DEPLOY.md +0 -277
- package/docs/obol-banner.png +0 -0
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ Named after the AI in [The Last Instruction](https://latentpress.com) — a mach
|
|
|
37
37
|
## Quick Start
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
npm install -g obol
|
|
40
|
+
npm install -g obol-ai
|
|
41
41
|
obol init
|
|
42
42
|
obol start
|
|
43
43
|
```
|
|
@@ -314,7 +314,7 @@ Memory lives in Supabase (survives independently).
|
|
|
314
314
|
Restore on a new VPS:
|
|
315
315
|
|
|
316
316
|
```bash
|
|
317
|
-
npm install -g obol
|
|
317
|
+
npm install -g obol-ai
|
|
318
318
|
obol init --restore # Clones brain from GitHub
|
|
319
319
|
obol start -d
|
|
320
320
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obol-ai",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Self-evolving AI assistant that learns, remembers, and acts on its own. Persistent vector memory, self-rewriting personality, proactive heartbeats.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,14 @@
|
|
|
10
10
|
"start": "node src/index.js",
|
|
11
11
|
"test": "node tests/run.js"
|
|
12
12
|
},
|
|
13
|
-
"keywords": [
|
|
13
|
+
"keywords": [
|
|
14
|
+
"ai",
|
|
15
|
+
"assistant",
|
|
16
|
+
"telegram",
|
|
17
|
+
"anthropic",
|
|
18
|
+
"claude",
|
|
19
|
+
"vector-memory"
|
|
20
|
+
],
|
|
14
21
|
"author": "Jo Vinkenroye <jestersimpps@gmail.com>",
|
|
15
22
|
"license": "MIT",
|
|
16
23
|
"dependencies": {
|
package/docs/DEPLOY.md
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
# Deploy OBOL on DigitalOcean
|
|
2
|
-
|
|
3
|
-
Complete guide: from zero to a running AI assistant in ~10 minutes.
|
|
4
|
-
|
|
5
|
-
## 1. Create a Droplet
|
|
6
|
-
|
|
7
|
-
Go to [cloud.digitalocean.com](https://cloud.digitalocean.com) → **Create** → **Droplets**
|
|
8
|
-
|
|
9
|
-
| Setting | Value |
|
|
10
|
-
|---------|-------|
|
|
11
|
-
| **Region** | Pick the closest to you (e.g. Amsterdam, Frankfurt) |
|
|
12
|
-
| **Image** | Ubuntu 24.04 LTS |
|
|
13
|
-
| **Size** | Basic → Regular → **$6/mo** (1 vCPU, 1GB RAM, 25GB SSD) |
|
|
14
|
-
| **Auth** | SSH key (recommended) or password |
|
|
15
|
-
| **Hostname** | `obol` |
|
|
16
|
-
|
|
17
|
-
> 💡 The $6 droplet is enough. OBOL is a single Node.js process. The embedding model uses ~200MB RAM on first load, then stays resident. If you plan to run heavy scripts, go $12/mo (2GB RAM).
|
|
18
|
-
|
|
19
|
-
Click **Create Droplet**. Copy the IP address.
|
|
20
|
-
|
|
21
|
-
## 2. Connect via SSH
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
ssh root@YOUR_DROPLET_IP
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
> ⚠️ **After first run**, OBOL hardens your server automatically — including moving SSH to port 2222. From then on:
|
|
28
|
-
> ```bash
|
|
29
|
-
> ssh -p 2222 root@YOUR_DROPLET_IP
|
|
30
|
-
> ```
|
|
31
|
-
|
|
32
|
-
## 3. Install Node.js
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# Install Node.js 22 LTS via NodeSource
|
|
36
|
-
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
|
|
37
|
-
apt-get install -y nodejs
|
|
38
|
-
|
|
39
|
-
# Verify
|
|
40
|
-
node -v # v22.x.x
|
|
41
|
-
npm -v # 10.x.x
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## 4. Install OBOL
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
npm install -g obol
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## 5. Prepare Your Accounts
|
|
51
|
-
|
|
52
|
-
Before running `obol init`, have these ready:
|
|
53
|
-
|
|
54
|
-
### Anthropic API Key
|
|
55
|
-
1. Go to [console.anthropic.com](https://console.anthropic.com)
|
|
56
|
-
2. Sign up / log in
|
|
57
|
-
3. Go to **API Keys** → **Create Key**
|
|
58
|
-
4. Copy the key (starts with `sk-ant-`)
|
|
59
|
-
5. Add credits ($5 minimum) — go to **Billing** → **Add funds**
|
|
60
|
-
|
|
61
|
-
### Telegram Bot Token
|
|
62
|
-
1. Open Telegram, search for **@BotFather**
|
|
63
|
-
2. Send `/newbot`
|
|
64
|
-
3. Choose a name (e.g. "My OBOL")
|
|
65
|
-
4. Choose a username (e.g. `my_obol_bot`)
|
|
66
|
-
5. Copy the token (looks like `7123456789:AAF...`)
|
|
67
|
-
|
|
68
|
-
### Your Telegram User ID
|
|
69
|
-
1. Open Telegram, search for **@userinfobot**
|
|
70
|
-
2. Send `/start`
|
|
71
|
-
3. It replies with your numeric ID (e.g. `206639616`)
|
|
72
|
-
|
|
73
|
-
### Supabase Access Token
|
|
74
|
-
1. Go to [supabase.com](https://supabase.com) → sign up (free)
|
|
75
|
-
2. Go to [supabase.com/dashboard/account/tokens](https://supabase.com/dashboard/account/tokens)
|
|
76
|
-
3. **Generate new token** → name it "obol" → copy it
|
|
77
|
-
|
|
78
|
-
### Vercel Token
|
|
79
|
-
1. Go to [vercel.com](https://vercel.com) → sign up (free)
|
|
80
|
-
2. Go to [vercel.com/account/tokens](https://vercel.com/account/tokens)
|
|
81
|
-
3. **Create** → name it "obol" → copy the token
|
|
82
|
-
|
|
83
|
-
### GitHub Token
|
|
84
|
-
1. Go to [github.com/settings/tokens](https://github.com/settings/tokens)
|
|
85
|
-
2. **Generate new token (classic)**
|
|
86
|
-
3. Select scope: `repo`
|
|
87
|
-
4. Copy the token
|
|
88
|
-
|
|
89
|
-
## 6. Run Setup
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
obol init
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
The wizard walks you through everything:
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
🪙 OBOL — Your AI, your rules.
|
|
99
|
-
|
|
100
|
-
─── Anthropic ───
|
|
101
|
-
Paste your Anthropic API key: ****
|
|
102
|
-
✅ Anthropic configured
|
|
103
|
-
|
|
104
|
-
─── Telegram ───
|
|
105
|
-
Paste BotFather token: ****
|
|
106
|
-
✅ Telegram configured
|
|
107
|
-
|
|
108
|
-
─── Memory (Supabase) ───
|
|
109
|
-
Supabase setup: Create new project
|
|
110
|
-
Supabase access token: ****
|
|
111
|
-
Creating project... ✅
|
|
112
|
-
Waiting for project to initialize (~60s)... ✅
|
|
113
|
-
Running migrations... ✅
|
|
114
|
-
|
|
115
|
-
─── GitHub (backup) ───
|
|
116
|
-
Set up GitHub backup? Yes
|
|
117
|
-
GitHub token: ****
|
|
118
|
-
Creating private repo: yourname/obol-brain... ✅
|
|
119
|
-
|
|
120
|
-
─── Identity ───
|
|
121
|
-
Your name: Jo
|
|
122
|
-
Bot name: Mr. Meeseeks
|
|
123
|
-
Your Telegram user ID: 206639616
|
|
124
|
-
|
|
125
|
-
🪙 Done! Run: obol start
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## 7. Test It (Foreground)
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
obol start
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Go to Telegram, open your bot, send a message. You should get a response from Claude.
|
|
135
|
-
|
|
136
|
-
Press `Ctrl+C` to stop.
|
|
137
|
-
|
|
138
|
-
## 8. Run as Daemon
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
obol start -d
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
Check it's running:
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
obol status
|
|
148
|
-
obol logs
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## 9. Keep It Running (pm2)
|
|
152
|
-
|
|
153
|
-
pm2 keeps OBOL alive, auto-restarts on crash, and survives reboots:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# Install pm2 globally
|
|
157
|
-
npm install -g pm2
|
|
158
|
-
|
|
159
|
-
# Start OBOL with pm2
|
|
160
|
-
pm2 start $(which obol) --name obol -- start
|
|
161
|
-
|
|
162
|
-
# Auto-start on boot
|
|
163
|
-
pm2 startup
|
|
164
|
-
pm2 save
|
|
165
|
-
|
|
166
|
-
# Useful commands
|
|
167
|
-
pm2 status # See running processes
|
|
168
|
-
pm2 logs obol # Tail logs
|
|
169
|
-
pm2 restart obol # Restart
|
|
170
|
-
pm2 stop obol # Stop
|
|
171
|
-
pm2 monit # Live monitoring dashboard
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
That's it — OBOL auto-starts on boot and restarts if it crashes.
|
|
175
|
-
|
|
176
|
-
## 10. Customize Your Bot
|
|
177
|
-
|
|
178
|
-
SSH in and edit the personality files:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
nano ~/.obol/personality/SOUL.md # Bot personality
|
|
182
|
-
nano ~/.obol/personality/USER.md # About you
|
|
183
|
-
nano ~/.obol/personality/AGENTS.md # How it works
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
Restart after changes:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
pm2 restart obol
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Costs
|
|
193
|
-
|
|
194
|
-
| Service | Cost |
|
|
195
|
-
|---------|------|
|
|
196
|
-
| DigitalOcean droplet | $6/mo |
|
|
197
|
-
| Anthropic API (Claude Sonnet) | ~$3/mo for moderate use |
|
|
198
|
-
| Supabase | Free (500MB) |
|
|
199
|
-
| GitHub | Free (private repos) |
|
|
200
|
-
| Vercel | Free (100GB bandwidth) |
|
|
201
|
-
| Embeddings | Free (runs locally) |
|
|
202
|
-
| **Total** | **~$9/mo** |
|
|
203
|
-
|
|
204
|
-
## Updating
|
|
205
|
-
|
|
206
|
-
```bash
|
|
207
|
-
npm update -g obol
|
|
208
|
-
pm2 restart obol
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## Backup & Restore
|
|
212
|
-
|
|
213
|
-
OBOL automatically backs up to GitHub daily at 3 AM (personality, scripts, commands, daily notes).
|
|
214
|
-
|
|
215
|
-
To restore on a new droplet:
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
npm install -g obol
|
|
219
|
-
obol init --restore
|
|
220
|
-
# Paste GitHub token → it clones your brain
|
|
221
|
-
# Re-enter Telegram token + Anthropic key
|
|
222
|
-
obol start -d
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Troubleshooting
|
|
226
|
-
|
|
227
|
-
### Can't SSH after first run
|
|
228
|
-
OBOL moves SSH to port 2222 during security hardening:
|
|
229
|
-
```bash
|
|
230
|
-
ssh -p 2222 root@YOUR_DROPLET_IP
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Bot doesn't respond
|
|
234
|
-
```bash
|
|
235
|
-
obol status # Is it running?
|
|
236
|
-
obol logs # Check for errors
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
### "Not authorized" / bot ignores messages
|
|
240
|
-
Check that your Telegram user ID is correct in `~/.obol/config.json`:
|
|
241
|
-
```bash
|
|
242
|
-
cat ~/.obol/config.json | grep allowedUsers
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Memory not working
|
|
246
|
-
```bash
|
|
247
|
-
# Test Supabase connection
|
|
248
|
-
curl -s -H "apikey: YOUR_KEY" https://YOUR_PROJECT.supabase.co/rest/v1/obol_memory?limit=1
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### Out of memory (OOM)
|
|
252
|
-
Upgrade to 2GB droplet:
|
|
253
|
-
```bash
|
|
254
|
-
# In DigitalOcean dashboard: Droplet → Resize → 2GB ($12/mo)
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
Or add swap:
|
|
258
|
-
```bash
|
|
259
|
-
fallocate -l 2G /swapfile
|
|
260
|
-
chmod 600 /swapfile
|
|
261
|
-
mkswap /swapfile
|
|
262
|
-
swapon /swapfile
|
|
263
|
-
echo '/swapfile none swap sw 0 0' >> /etc/fstab
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
### Firewall
|
|
267
|
-
OBOL only makes outbound connections (Telegram, Anthropic, Supabase). No ports need to be opened. But basic hardening is good practice:
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
ufw allow 2222/tcp
|
|
271
|
-
ufw enable
|
|
272
|
-
```
|
|
273
|
-
OBOL does this automatically during post-setup.
|
|
274
|
-
|
|
275
|
-
---
|
|
276
|
-
|
|
277
|
-
*That's it. One droplet, one process, one bot. 🪙*
|
package/docs/obol-banner.png
DELETED
|
Binary file
|