slackhive 0.1.44 → 0.1.46

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
@@ -12,7 +12,7 @@
12
12
  [![npm downloads](https://img.shields.io/npm/dt/slackhive?color=cb3837&logo=npm&logoColor=white&label=installs)](https://www.npmjs.com/package/slackhive)
13
13
  [![Node.js](https://img.shields.io/badge/Node.js-≥20-339933?logo=node.js&logoColor=white)](https://nodejs.org)
14
14
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
15
- [![Docker](https://img.shields.io/badge/Docker-Compose-2496ed?logo=docker&logoColor=white)](https://docs.docker.com/compose)
15
+ [![SQLite](https://img.shields.io/badge/SQLite-embedded-003B57?logo=sqlite&logoColor=white)](https://sqlite.org)
16
16
  [![Documentation](https://img.shields.io/badge/docs-slackhive.mintlify.app-D97757?logo=gitbook&logoColor=white)](https://slackhive.mintlify.app)
17
17
  [![Security Audit](https://github.com/pelago-labs/slackhive/actions/workflows/audit.yml/badge.svg)](https://github.com/pelago-labs/slackhive/actions/workflows/audit.yml)
18
18
 
@@ -67,28 +67,42 @@ slackhive init
67
67
  ```
68
68
 
69
69
  The CLI will:
70
- 1. Check prerequisites (Docker, Docker Compose, Git, Claude Code)
70
+ 1. Check prerequisites (Git, Node.js 20, Claude Code)
71
71
  2. Clone the repository
72
72
  3. Auto-detect your Claude installation (cross-platform compatible)
73
73
  4. Walk you through configuration (API key or subscription, admin credentials)
74
- 5. Start all services automatically
74
+ 5. Build and start the services natively — no Docker required
75
75
 
76
76
  Open `http://localhost:3001` and create your first agent.
77
77
 
78
+ #### Hit `EACCES: permission denied` on install?
79
+
80
+ If you installed Node from nodejs.org on macOS/Linux, `/usr/local/lib/node_modules` is root-owned and `npm install -g` fails without sudo. Point npm at a user-owned prefix once — no sudo needed again:
81
+
82
+ ```bash
83
+ mkdir -p ~/.npm-global
84
+ npm config set prefix '~/.npm-global'
85
+ echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc # or ~/.bashrc
86
+ source ~/.zshrc
87
+ npm install -g slackhive
88
+ ```
89
+
90
+ Installing Node via [nvm](https://github.com/nvm-sh/nvm) or Homebrew (`brew install node`) puts it in a user-writable location by default and avoids this entirely. If you'd rather skip global install, `npx slackhive init` works too — just prefix every command with `npx`.
91
+
78
92
  ### CLI Commands
79
93
 
80
94
  | Command | Description |
81
95
  |---------|-------------|
82
96
  | `slackhive init` | Clone, configure, and start SlackHive |
83
97
  | `slackhive start` | Start all services |
84
- | `slackhive stop` | Stop all services |
85
- | `slackhive status` | Show running containers |
98
+ | `slackhive stop` | Stop all services (and any orphaned runner processes) |
99
+ | `slackhive status` | Show running services + ports |
86
100
  | `slackhive logs` | Tail runner logs |
87
101
  | `slackhive update` | Pull latest changes and rebuild |
88
102
 
89
103
  ### Option B: Manual setup
90
104
 
91
- **Prerequisites:** [Docker](https://docs.docker.com/get-docker/) + [Docker Compose](https://docs.docker.com/compose/), Node.js 20
105
+ **Prerequisites:** Node.js 20, Git, [Claude Code](https://docs.anthropic.com/en/docs/claude-code/setup) on your PATH
92
106
 
93
107
  ```bash
94
108
  git clone https://github.com/pelago-labs/slackhive.git
@@ -101,13 +115,18 @@ Edit `.env` with your credentials:
101
115
  ```env
102
116
  ANTHROPIC_API_KEY=sk-ant-... # or use Claude Pro/Max subscription
103
117
  ADMIN_USERNAME=admin
104
- ADMIN_PASSWORD=changeme
105
- POSTGRES_PASSWORD=slackhive
118
+ ADMIN_PASSWORD=<strong-random-password>
119
+ AUTH_SECRET= # generate: openssl rand -hex 32
106
120
  ENV_SECRET_KEY= # generate: openssl rand -hex 32
121
+ DATABASE_TYPE=sqlite # embedded — no external DB needed
107
122
  ```
108
123
 
109
124
  ```bash
110
- docker compose up -d --build
125
+ npm install
126
+ npm run build
127
+
128
+ # Start the stack (web on :3001, runner on :3002)
129
+ npx slackhive start
111
130
  ```
112
131
 
113
132
  Open `http://localhost:3001`, log in, and create your first agent.
@@ -124,7 +143,7 @@ Every agent is a full **Claude Code** agent — with tools, memory, identity, an
124
143
 
125
144
  | | |
126
145
  |---|---|
127
- | 🧠 **Persistent Memory** | Agents write memories during conversations — feedback, user context, project state. Synced to Postgres, injected on next start. They don't forget. |
146
+ | 🧠 **Persistent Memory** | Agents write memories during conversations — feedback, user context, project state. Synced to SQLite, injected on next start. They don't forget. |
128
147
  | 🔌 **MCP Tool Integration** | Connect any MCP server (Redshift, GitHub, Notion, Figma, custom APIs) — stdio, SSE, or HTTP transports. |
129
148
  | 📝 **Inline TypeScript MCPs** | Paste TypeScript source directly into the UI — no deployment needed. The runner compiles and executes it. |
130
149
  | 🧵 **Full Thread Context** | Agents fetch the entire Slack thread on every invocation — zero context lost in handoffs. |
@@ -163,11 +182,12 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
163
182
  │ Socket Mode (Bolt)
164
183
 
165
184
  ┌──────────────────────────────────────────────────┐
166
- Docker Compose
185
+ Local host — two Node.js processes
167
186
  │ │
168
- │ Web (Next.js) ──── Redis ────► Runner
169
-
170
- └──────── PostgreSQL ──────┘
187
+ │ Web (Next.js :3001) ──HTTP──► Runner (:3002)
188
+
189
+ └───── SQLite file ──────┘
190
+ │ (./data/slackhive.db) │
171
191
  └──────────────────────────────────────────────────┘
172
192
  ```
173
193
 
@@ -175,8 +195,8 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
175
195
  |---------|-------------|
176
196
  | **Web** (Next.js 15) | Dashboard — create agents, edit skills, view logs, manage users |
177
197
  | **Runner** (Node.js) | Hosts all agent processes and Slack connections |
178
- | **PostgreSQL** | Stores agents, memories, skills, sessions, users, history |
179
- | **Redis** | Delivers hot-reload events from Web to Runner instantly |
198
+ | **SQLite** | Embedded — stores agents, memories, skills, sessions, users, history. No external DB to install |
199
+ | **Event bus** | Web posts to the runner's internal HTTP port to deliver hot-reload events |
180
200
 
181
201
  **How a message flows:**
182
202
  1. User @mentions an agent in Slack
@@ -184,7 +204,7 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
184
204
  3. Claude Code processes the message with the agent's compiled `CLAUDE.md`
185
205
  4. Agent uses MCP tools if needed (Redshift, GitHub, Notion, etc.)
186
206
  5. Response is formatted as Slack Block Kit and posted to the thread
187
- 6. Memory files written during the session are synced to Postgres
207
+ 6. Memory files written during the session are synced to SQLite
188
208
  7. Next conversation starts with all accumulated knowledge
189
209
 
190
210
  ---
@@ -219,9 +239,9 @@ For more installation options, uninstall steps, and troubleshooting, see the [se
219
239
 
220
240
  Then log in:
221
241
  ```bash
222
- claude login # run on host machine, saves credentials to ~/.claude/
242
+ claude login # saves credentials to your system keychain / ~/.claude/
223
243
  ```
224
- Mount `~/.claude` into the runner container and leave `ANTHROPIC_API_KEY` unset. Best for individual developers.
244
+ Leave `ANTHROPIC_API_KEY` unset the runner picks up credentials from the system keychain automatically. Best for individual developers.
225
245
 
226
246
  > Full guide → [slackhive.mintlify.app/configuration/env-vars](https://slackhive.mintlify.app/configuration/env-vars)
227
247
 
@@ -253,12 +273,12 @@ Have an idea? [Open an issue](https://github.com/pelago-labs/slackhive/issues)
253
273
  git clone https://github.com/pelago-labs/slackhive.git
254
274
  cd slackhive && npm install
255
275
 
256
- # Start infra
257
- docker compose up postgres redis -d
276
+ # Configure
277
+ cp .env.example .env # then fill in ADMIN_PASSWORD, AUTH_SECRET, ENV_SECRET_KEY
258
278
 
259
- # Run locally
279
+ # Run locally (SQLite — no external services required)
260
280
  cd apps/web && npm run dev # http://localhost:3000
261
- cd apps/runner && npm run dev
281
+ cd apps/runner && npm run dev # http://localhost:3002
262
282
  ```
263
283
 
264
284
  Open an issue before submitting large PRs so we can align on the approach.
package/cli/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [![npm downloads](https://img.shields.io/npm/dt/slackhive?color=cb3837&logo=npm&logoColor=white&label=installs)](https://www.npmjs.com/package/slackhive)
13
13
  [![Node.js](https://img.shields.io/badge/Node.js-≥20-339933?logo=node.js&logoColor=white)](https://nodejs.org)
14
14
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178c6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
15
- [![Docker](https://img.shields.io/badge/Docker-Compose-2496ed?logo=docker&logoColor=white)](https://docs.docker.com/compose)
15
+ [![SQLite](https://img.shields.io/badge/SQLite-embedded-003B57?logo=sqlite&logoColor=white)](https://sqlite.org)
16
16
  [![Documentation](https://img.shields.io/badge/docs-slackhive.mintlify.app-D97757?logo=gitbook&logoColor=white)](https://slackhive.mintlify.app)
17
17
  [![Security Audit](https://github.com/pelago-labs/slackhive/actions/workflows/audit.yml/badge.svg)](https://github.com/pelago-labs/slackhive/actions/workflows/audit.yml)
18
18
 
@@ -67,11 +67,11 @@ slackhive init
67
67
  ```
68
68
 
69
69
  The CLI will:
70
- 1. Check prerequisites (Docker, Docker Compose, Git, Claude Code)
70
+ 1. Check prerequisites (Git, Node.js 20, Claude Code)
71
71
  2. Clone the repository
72
72
  3. Auto-detect your Claude installation (cross-platform compatible)
73
73
  4. Walk you through configuration (API key or subscription, admin credentials)
74
- 5. Start all services automatically
74
+ 5. Build and start the services natively — no Docker required
75
75
 
76
76
  Open `http://localhost:3001` and create your first agent.
77
77
 
@@ -81,14 +81,14 @@ Open `http://localhost:3001` and create your first agent.
81
81
  |---------|-------------|
82
82
  | `slackhive init` | Clone, configure, and start SlackHive |
83
83
  | `slackhive start` | Start all services |
84
- | `slackhive stop` | Stop all services |
85
- | `slackhive status` | Show running containers |
84
+ | `slackhive stop` | Stop all services (and any orphaned runner processes) |
85
+ | `slackhive status` | Show running services + ports |
86
86
  | `slackhive logs` | Tail runner logs |
87
87
  | `slackhive update` | Pull latest changes and rebuild |
88
88
 
89
89
  ### Option B: Manual setup
90
90
 
91
- **Prerequisites:** [Docker](https://docs.docker.com/get-docker/) + [Docker Compose](https://docs.docker.com/compose/), Node.js 20
91
+ **Prerequisites:** Node.js 20, Git, [Claude Code](https://docs.anthropic.com/en/docs/claude-code/setup) on your PATH
92
92
 
93
93
  ```bash
94
94
  git clone https://github.com/pelago-labs/slackhive.git
@@ -101,13 +101,18 @@ Edit `.env` with your credentials:
101
101
  ```env
102
102
  ANTHROPIC_API_KEY=sk-ant-... # or use Claude Pro/Max subscription
103
103
  ADMIN_USERNAME=admin
104
- ADMIN_PASSWORD=changeme
105
- POSTGRES_PASSWORD=slackhive
104
+ ADMIN_PASSWORD=<strong-random-password>
105
+ AUTH_SECRET= # generate: openssl rand -hex 32
106
106
  ENV_SECRET_KEY= # generate: openssl rand -hex 32
107
+ DATABASE_TYPE=sqlite # embedded — no external DB needed
107
108
  ```
108
109
 
109
110
  ```bash
110
- docker compose up -d --build
111
+ npm install
112
+ npm run build
113
+
114
+ # Start the stack (web on :3001, runner on :3002)
115
+ npx slackhive start
111
116
  ```
112
117
 
113
118
  Open `http://localhost:3001`, log in, and create your first agent.
@@ -124,7 +129,7 @@ Every agent is a full **Claude Code** agent — with tools, memory, identity, an
124
129
 
125
130
  | | |
126
131
  |---|---|
127
- | 🧠 **Persistent Memory** | Agents write memories during conversations — feedback, user context, project state. Synced to Postgres, injected on next start. They don't forget. |
132
+ | 🧠 **Persistent Memory** | Agents write memories during conversations — feedback, user context, project state. Synced to SQLite, injected on next start. They don't forget. |
128
133
  | 🔌 **MCP Tool Integration** | Connect any MCP server (Redshift, GitHub, Notion, Figma, custom APIs) — stdio, SSE, or HTTP transports. |
129
134
  | 📝 **Inline TypeScript MCPs** | Paste TypeScript source directly into the UI — no deployment needed. The runner compiles and executes it. |
130
135
  | 🧵 **Full Thread Context** | Agents fetch the entire Slack thread on every invocation — zero context lost in handoffs. |
@@ -162,11 +167,12 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
162
167
  │ Socket Mode (Bolt)
163
168
 
164
169
  ┌──────────────────────────────────────────────────┐
165
- Docker Compose
170
+ Local host — two Node.js processes
166
171
  │ │
167
- │ Web (Next.js) ──── Redis ────► Runner
168
-
169
- └──────── PostgreSQL ──────┘
172
+ │ Web (Next.js :3001) ──HTTP──► Runner (:3002)
173
+
174
+ └───── SQLite file ──────┘
175
+ │ (./data/slackhive.db) │
170
176
  └──────────────────────────────────────────────────┘
171
177
  ```
172
178
 
@@ -174,8 +180,8 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
174
180
  |---------|-------------|
175
181
  | **Web** (Next.js 15) | Dashboard — create agents, edit skills, view logs, manage users |
176
182
  | **Runner** (Node.js) | Hosts all agent processes and Slack connections |
177
- | **PostgreSQL** | Stores agents, memories, skills, sessions, users, history |
178
- | **Redis** | Delivers hot-reload events from Web to Runner instantly |
183
+ | **SQLite** | Embedded — stores agents, memories, skills, sessions, users, history. No external DB to install |
184
+ | **Event bus** | Web posts to the runner's internal HTTP port to deliver hot-reload events |
179
185
 
180
186
  **How a message flows:**
181
187
  1. User @mentions an agent in Slack
@@ -183,7 +189,7 @@ Slack Workspace (@boss, @data-bot, @writer, ...)
183
189
  3. Claude Code processes the message with the agent's compiled `CLAUDE.md`
184
190
  4. Agent uses MCP tools if needed (Redshift, GitHub, Notion, etc.)
185
191
  5. Response is formatted as Slack Block Kit and posted to the thread
186
- 6. Memory files written during the session are synced to Postgres
192
+ 6. Memory files written during the session are synced to SQLite
187
193
  7. Next conversation starts with all accumulated knowledge
188
194
 
189
195
  ---
@@ -200,9 +206,9 @@ Billed per token via the Anthropic API. Best for teams and production.
200
206
 
201
207
  **Option B — Claude Pro or Max Subscription**
202
208
  ```bash
203
- claude login # run on host machine, saves credentials to ~/.claude/
209
+ claude login # saves credentials to your system keychain / ~/.claude/
204
210
  ```
205
- Mount `~/.claude` into the runner container and leave `ANTHROPIC_API_KEY` unset. Best for individual developers.
211
+ Leave `ANTHROPIC_API_KEY` unset the runner picks up credentials from the system keychain automatically. Best for individual developers.
206
212
 
207
213
  > Full guide → [slackhive.mintlify.app/configuration/env-vars](https://slackhive.mintlify.app/configuration/env-vars)
208
214
 
@@ -234,12 +240,12 @@ Have an idea? [Open an issue](https://github.com/pelago-labs/slackhive/issues)
234
240
  git clone https://github.com/pelago-labs/slackhive.git
235
241
  cd slackhive && npm install
236
242
 
237
- # Start infra
238
- docker compose up postgres redis -d
243
+ # Configure
244
+ cp .env.example .env # then fill in ADMIN_PASSWORD, AUTH_SECRET, ENV_SECRET_KEY
239
245
 
240
- # Run locally
246
+ # Run locally (SQLite — no external services required)
241
247
  cd apps/web && npm run dev # http://localhost:3000
242
- cd apps/runner && npm run dev
248
+ cd apps/runner && npm run dev # http://localhost:3002
243
249
  ```
244
250
 
245
251
  Open an issue before submitting large PRs so we can align on the approach.