limbo-ai 1.18.4 → 1.19.0
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 +6 -7
- package/SECURITY.md +14 -15
- package/cli.js +112 -323
- package/config.toml.template +52 -0
- package/mcp-server/index.js +4 -4
- package/package.json +3 -2
- package/setup-server/server.js +23 -7
- package/test/cli-filter.test.js +5 -2
- package/test/zeroclaw-migration.test.js +255 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Limbo
|
|
2
2
|
|
|
3
|
-
A personal memory agent. Captures ideas, remembers things, and connects knowledge across time — running quietly in a Docker container, accessible via Telegram or the
|
|
3
|
+
A personal memory agent. Captures ideas, remembers things, and connects knowledge across time — running quietly in a Docker container, accessible via Telegram or the ZeroClaw gateway.
|
|
4
4
|
|
|
5
5
|
## What it is
|
|
6
6
|
|
|
@@ -88,9 +88,9 @@ npx limbo-ai start --reconfigure
|
|
|
88
88
|
|
|
89
89
|
Message your bot and Limbo will respond — full agent with personality, memory logic, and vault tools.
|
|
90
90
|
|
|
91
|
-
####
|
|
91
|
+
#### ZeroClaw client
|
|
92
92
|
|
|
93
|
-
Any
|
|
93
|
+
Any ZeroClaw-compatible chat client can connect via WebSocket to:
|
|
94
94
|
|
|
95
95
|
```
|
|
96
96
|
ws://localhost:18789
|
|
@@ -131,9 +131,8 @@ Managed automatically by `npx limbo-ai start`, stored in `~/.limbo/.env`.
|
|
|
131
131
|
| `TELEGRAM_ENABLED` | no | `false` | Enable Telegram bot integration |
|
|
132
132
|
| `TELEGRAM_BOT_TOKEN` | no | — | Telegram bot token (required if `TELEGRAM_ENABLED=true`) |
|
|
133
133
|
| `TELEGRAM_AUTO_PAIR_FIRST_DM` | no | `false` | Auto-approves the first Telegram DM sender and persists access (must opt-in explicitly) |
|
|
134
|
-
| `OPENCLAW_GATEWAY_TOKEN` | no | generated | Stable gateway token for OpenClaw-compatible clients |
|
|
135
134
|
|
|
136
|
-
> \* API keys are required only for `AUTH_MODE=api-key`. Subscription auth uses
|
|
135
|
+
> \* API keys are required only for `AUTH_MODE=api-key`. Subscription auth uses ZeroClaw auth profiles instead.
|
|
137
136
|
|
|
138
137
|
---
|
|
139
138
|
|
|
@@ -159,7 +158,7 @@ Full tool specs in `workspace/TOOLS.md`.
|
|
|
159
158
|
│ Docker Container │
|
|
160
159
|
│ │
|
|
161
160
|
│ ┌─────────────┐ ┌────────────────┐ │
|
|
162
|
-
│ │
|
|
161
|
+
│ │ ZeroClaw │◄──►│ LLM (Claude │ │
|
|
163
162
|
│ │ Gateway │ │ or OpenAI) │ │
|
|
164
163
|
│ │ :18789 │ └────────┬───────┘ │
|
|
165
164
|
│ └──────┬──────┘ │ │
|
|
@@ -174,7 +173,7 @@ Full tool specs in `workspace/TOOLS.md`.
|
|
|
174
173
|
└─────────────────────────────────────────┘
|
|
175
174
|
```
|
|
176
175
|
|
|
177
|
-
- **
|
|
176
|
+
- **ZeroClaw** — lightweight Rust gateway that handles client connections, routes to the LLM, and integrates MCP tools
|
|
178
177
|
- **MCP server** — Node.js server providing vault read/write tools
|
|
179
178
|
- **Vault** — plain markdown files with YAML frontmatter, persisted in a named Docker volume
|
|
180
179
|
- **Migrations** — lightweight Node.js migration runner for vault schema changes
|
package/SECURITY.md
CHANGED
|
@@ -10,14 +10,14 @@ Limbo runs inside a Docker container with the following hardening:
|
|
|
10
10
|
- **Capabilities dropped**: All Linux capabilities are dropped (`cap_drop: ALL`)
|
|
11
11
|
- **Process limit**: PID limit of 200 prevents fork bombs
|
|
12
12
|
- **Loopback binding**: Gateway only listens on `127.0.0.1` — not exposed to LAN
|
|
13
|
-
- **Writable paths**: Only `/data` (volume), `/home/limbo/.
|
|
13
|
+
- **Writable paths**: Only `/data` (volume), `/home/limbo/.zeroclaw` (volume), `/tmp` (tmpfs), and `/home/limbo/.npm` (tmpfs) are writable
|
|
14
14
|
|
|
15
15
|
## What Agents Can Access
|
|
16
16
|
|
|
17
17
|
Inside the container, the AI agent can:
|
|
18
18
|
|
|
19
19
|
- Read and write vault notes in `/data/vault/` (via MCP tools only)
|
|
20
|
-
- Execute MCP tools registered through
|
|
20
|
+
- Execute MCP tools registered through ZeroClaw native MCP (vault_search, vault_read, vault_write_note, vault_update_map)
|
|
21
21
|
- Search the web and fetch URLs (`web_search`, `web_fetch` — enabled for recommendations, link previews, etc.)
|
|
22
22
|
- Respond to Telegram messages (if enabled, with pairing required)
|
|
23
23
|
- Make network requests to AI provider APIs (Anthropic, OpenAI, OpenRouter)
|
|
@@ -36,9 +36,9 @@ Inside the container, the AI agent can:
|
|
|
36
36
|
- **Access host filesystem**: Only the bind-mounted vault directory is accessible
|
|
37
37
|
- **Spawn unlimited processes**: PID limit of 200
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## ZeroClaw Tool Policy
|
|
40
40
|
|
|
41
|
-
The agent runs with
|
|
41
|
+
The agent runs with the most restrictive tool profile. On top of that:
|
|
42
42
|
|
|
43
43
|
- **Allowed**: `web_search`, `web_fetch` (for link previews, shopping recommendations, general web queries)
|
|
44
44
|
- **Denied**: `exec`, `browser`, `canvas`, `nodes`, `cron`, `gateway`, `sessions_spawn`, `sessions_send`, `process`, `image`, `group:automation`, `group:runtime`, `group:fs`
|
|
@@ -57,19 +57,18 @@ API keys are stored as Docker Compose secrets:
|
|
|
57
57
|
- **Not in environment**: Secrets are scrubbed from the process environment before the gateway starts
|
|
58
58
|
- **Not in `docker inspect`**: Docker secrets don't appear in container inspect output
|
|
59
59
|
- **`.env` file**: Only contains non-sensitive configuration (model provider, model name, language, etc.)
|
|
60
|
-
- **
|
|
60
|
+
- **Gateway auth**: ZeroClaw manages its own gateway authentication internally. All secrets (API keys, bot tokens) are scrubbed from the process environment before the daemon starts
|
|
61
61
|
|
|
62
|
-
##
|
|
62
|
+
## ZeroClaw Security
|
|
63
63
|
|
|
64
|
-
Limbo uses
|
|
64
|
+
Limbo uses ZeroClaw in a **personal assistant trust model** (one trusted operator per gateway). Key settings in `config.toml`:
|
|
65
65
|
|
|
66
|
-
- `gateway
|
|
67
|
-
- `gateway
|
|
68
|
-
- `gateway.auth
|
|
69
|
-
- `
|
|
70
|
-
- `
|
|
71
|
-
|
|
72
|
-
For more on OpenClaw's security model: https://docs.openclaw.ai/security
|
|
66
|
+
- `[gateway] host = "127.0.0.1"` — loopback only, no LAN exposure
|
|
67
|
+
- `[gateway] allow_public_bind = false` — prevents binding to all interfaces
|
|
68
|
+
- `[gateway.auth] mode = "token"` — all WebSocket clients must present a valid token
|
|
69
|
+
- `[gateway.auth] token_file = "/run/secrets/gateway_token"` — reads auth token from Docker secret
|
|
70
|
+
- `[session] dm_scope = "per-channel-peer"` — DM sessions are isolated per sender (when using Telegram)
|
|
71
|
+
- `[channels.telegram] dm_policy = "pairing"` — unknown Telegram senders must be explicitly approved
|
|
73
72
|
|
|
74
73
|
## Network Access
|
|
75
74
|
|
|
@@ -106,4 +105,4 @@ If you discover a security vulnerability in Limbo:
|
|
|
106
105
|
3. Include: description, reproduction steps, affected version, and impact assessment
|
|
107
106
|
4. We will acknowledge within 48 hours and work on a fix
|
|
108
107
|
|
|
109
|
-
For vulnerabilities in
|
|
108
|
+
For vulnerabilities in ZeroClaw itself, follow their responsible disclosure process at https://github.com/zeroclaw-labs/zeroclaw/security
|