@vefimov/crew 1.0.1 → 1.0.2
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 +55 -50
- package/dist/crew.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,18 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
# Crew
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Your AI colleagues, at home.
|
|
8
8
|
|
|
9
|
-
A
|
|
10
|
-
They remember everything, work with your files, and talk to you in the browser, the terminal and Telegram.
|
|
9
|
+
A local-first workspace for AI agents that stick around. They remember what you tell them, can work with files in folders you share, and answer in the browser, the terminal or Telegram.
|
|
11
10
|
|
|
12
11
|
[](https://www.npmjs.com/package/@vefimov/crew)
|
|
13
12
|
[](https://github.com/valyefimov/crew/actions)
|
|
14
13
|
[](https://github.com/valyefimov/crew/blob/main/LICENSE)
|
|
15
14
|
[](https://github.com/valyefimov/crew/blob/main/.nvmrc)
|
|
16
|
-
[](#why-crew)
|
|
17
15
|
|
|
18
|
-
[
|
|
16
|
+
[Docs](https://valyefimov.github.io/crew/) ·
|
|
19
17
|
[Русский](https://valyefimov.github.io/crew/ru/) ·
|
|
20
18
|
[Українська](https://valyefimov.github.io/crew/uk/) ·
|
|
21
19
|
[Roadmap](https://valyefimov.github.io/crew/guide/roadmap)
|
|
@@ -30,7 +28,7 @@ npx @vefimov/crew
|
|
|
30
28
|
<img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/demo.gif" alt="Crew demo" width="860" />
|
|
31
29
|
</a>
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
The full 90-second demo with voice-over:
|
|
34
32
|
[English](https://valyefimov.github.io/crew/media/demo.mp4) ·
|
|
35
33
|
[Русский](https://valyefimov.github.io/crew/media/demo-ru.mp4) ·
|
|
36
34
|
[Українська](https://valyefimov.github.io/crew/media/demo-uk.mp4)
|
|
@@ -39,34 +37,35 @@ npx @vefimov/crew
|
|
|
39
37
|
|
|
40
38
|
---
|
|
41
39
|
|
|
42
|
-
##
|
|
40
|
+
## What it is
|
|
43
41
|
|
|
44
|
-
Most
|
|
42
|
+
Most AI assistants forget you when you close the tab. Crew keeps a small team of agents on your own machine instead. Each one has a name, a role, a personality and its own long-term memory, so a conversation can pick up where it stopped last week.
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
It runs on [Ollama](https://ollama.com) or any OpenAI-compatible server. State lives in one SQLite file, and nothing is sent anywhere unless you use Telegram or point Crew at a remote provider.
|
|
45
|
+
|
|
46
|
+
What you get:
|
|
47
|
+
|
|
48
|
+
- Agents with a role, a personality, instructions and, if you want, their own model. Five templates to start from: backend developer, frontend developer, product manager, writer, coach.
|
|
49
|
+
- Long-term memory for each agent. It is stored in SQLite, searched with full text and vectors, and filled in automatically after every chat.
|
|
50
|
+
- Shared folders, read-only or read-write. An agent can list, read and write files inside them and nowhere else.
|
|
51
|
+
- A web UI, a CLI and a Telegram bot. All three talk to the same agents and share the same memory.
|
|
52
|
+
- A REST and WebSocket API and a background task queue.
|
|
53
|
+
- An interface and docs in English, Russian and Ukrainian.
|
|
55
54
|
|
|
56
55
|
## Screenshots
|
|
57
56
|
|
|
58
57
|
<table>
|
|
59
58
|
<tr>
|
|
60
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard.png" alt="Dashboard
|
|
61
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/chat-memory.png" alt="Chat with memory panel" /><br /><sub
|
|
59
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard.png" alt="Dashboard" /><br /><sub>The dashboard shows what each agent is doing right now.</sub></td>
|
|
60
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/chat-memory.png" alt="Chat with memory panel" /><br /><sub>A chat with the memory panel open. You can search, add and delete memories.</sub></td>
|
|
62
61
|
</tr>
|
|
63
62
|
<tr>
|
|
64
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/files.png" alt="Agent reading files" /><br /><sub
|
|
65
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/new-agent.png" alt="New colleague dialog" /><br /><sub
|
|
63
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/files.png" alt="Agent reading files" /><br /><sub>An agent reading a file from a shared folder. Tool calls show up in the chat.</sub></td>
|
|
64
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/new-agent.png" alt="New colleague dialog" /><br /><sub>Creating an agent from a template.</sub></td>
|
|
66
65
|
</tr>
|
|
67
66
|
<tr>
|
|
68
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-ru.png" alt="Russian UI" /><br /><sub
|
|
69
|
-
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-uk.png" alt="Ukrainian UI" /><br /><sub
|
|
67
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-ru.png" alt="Russian UI" /><br /><sub>Russian interface</sub></td>
|
|
68
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-uk.png" alt="Ukrainian UI" /><br /><sub>Ukrainian interface</sub></td>
|
|
70
69
|
</tr>
|
|
71
70
|
</table>
|
|
72
71
|
|
|
@@ -74,7 +73,7 @@ Most "AI assistants" are a chat box that forgets you the moment you close the ta
|
|
|
74
73
|
|
|
75
74
|
## Quick start
|
|
76
75
|
|
|
77
|
-
You need
|
|
76
|
+
You need Node.js 22.13 or newer and Ollama:
|
|
78
77
|
|
|
79
78
|
```bash
|
|
80
79
|
ollama pull qwen2.5:3b
|
|
@@ -83,10 +82,11 @@ ollama pull nomic-embed-text
|
|
|
83
82
|
npx @vefimov/crew
|
|
84
83
|
```
|
|
85
84
|
|
|
86
|
-
Open <http://localhost:3000>,
|
|
85
|
+
Open <http://localhost:3000>, create an agent and say hi. Close the tab and come back tomorrow. The agent still knows who you are.
|
|
86
|
+
|
|
87
|
+
The same thing from the terminal:
|
|
87
88
|
|
|
88
89
|
```bash
|
|
89
|
-
# or from the terminal
|
|
90
90
|
npm i -g @vefimov/crew
|
|
91
91
|
crew agent create Artem --template backend --folder ~/code/my-api
|
|
92
92
|
crew chat Artem
|
|
@@ -94,7 +94,7 @@ crew doctor # check your setup
|
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
<details>
|
|
97
|
-
<summary
|
|
97
|
+
<summary>Docker</summary>
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
100
|
docker compose -f docker/docker-compose.yml up
|
|
@@ -105,22 +105,24 @@ docker compose -f docker/docker-compose.yml exec ollama ollama pull nomic-embed-
|
|
|
105
105
|
</details>
|
|
106
106
|
|
|
107
107
|
<details>
|
|
108
|
-
<summary
|
|
108
|
+
<summary>Telegram</summary>
|
|
109
|
+
|
|
110
|
+
Create a bot with @BotFather, then:
|
|
109
111
|
|
|
110
112
|
```bash
|
|
111
|
-
crew config set telegramToken 123456:ABC...
|
|
113
|
+
crew config set telegramToken 123456:ABC...
|
|
112
114
|
crew start
|
|
113
115
|
# ✔ Telegram bot online — send /pair 482913 to it
|
|
114
116
|
```
|
|
115
117
|
|
|
116
|
-
`/agents`, `/use <name>`, `/memory
|
|
118
|
+
The bot understands `/agents`, `/use <name>`, `/memory` and `/forget`. You can also address an agent by name in a message: "Lena, how does this look?"
|
|
117
119
|
|
|
118
120
|
</details>
|
|
119
121
|
|
|
120
122
|
<details>
|
|
121
|
-
<summary
|
|
123
|
+
<summary>Another model provider</summary>
|
|
122
124
|
|
|
123
|
-
LM Studio, llama.cpp, vLLM, OpenRouter
|
|
125
|
+
LM Studio, llama.cpp, vLLM, OpenRouter and OpenAI all work, since they speak the same API:
|
|
124
126
|
|
|
125
127
|
```bash
|
|
126
128
|
CREW_PROVIDER=openai OPENAI_BASE_URL=http://127.0.0.1:1234/v1 crew start
|
|
@@ -141,43 +143,46 @@ CREW_PROVIDER=openai OPENAI_BASE_URL=http://127.0.0.1:1234/v1 crew start
|
|
|
141
143
|
background worker ──▶ memory extraction, embeddings
|
|
142
144
|
```
|
|
143
145
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
Crew uses Node's built-in `node:sqlite`, so there is nothing to compile and `npx` works anywhere Node 22.13 does.
|
|
147
|
+
|
|
148
|
+
Memory search combines SQLite FTS5 (BM25) with cosine similarity over embeddings. The two rankings are merged with reciprocal-rank fusion and adjusted a little for importance and age. A new memory that is nearly identical to an existing one is skipped.
|
|
149
|
+
|
|
150
|
+
Providers sit behind a small interface with streaming and tool calls, so adding another one is a short file.
|
|
151
|
+
|
|
152
|
+
For files, Crew resolves every path with `realpath` before checking permissions, which stops `../` and symlink escapes. Writing needs an explicit `rw` grant.
|
|
148
153
|
|
|
149
|
-
|
|
154
|
+
More in the [architecture docs](https://valyefimov.github.io/crew/guide/architecture).
|
|
150
155
|
|
|
151
156
|
## Repository
|
|
152
157
|
|
|
153
158
|
```
|
|
154
|
-
apps/server
|
|
155
|
-
apps/web
|
|
156
|
-
packages/core
|
|
157
|
-
packages/memory
|
|
159
|
+
apps/server Hono: REST + WebSocket
|
|
160
|
+
apps/web React 19, Vite, Tailwind v4
|
|
161
|
+
packages/core agent runtime, providers, tools, worker
|
|
162
|
+
packages/memory SQLite store, FTS5 + vectors, task queue
|
|
158
163
|
packages/channels Telegram (grammY)
|
|
159
|
-
cli
|
|
160
|
-
docs
|
|
164
|
+
cli the `crew` command, published as @vefimov/crew
|
|
165
|
+
docs VitePress site in English, Russian and Ukrainian
|
|
161
166
|
```
|
|
162
167
|
|
|
163
168
|
```bash
|
|
164
169
|
git clone https://github.com/valyefimov/crew && cd crew
|
|
165
170
|
pnpm install
|
|
166
|
-
pnpm dev # API :3001, web UI :5173
|
|
171
|
+
pnpm dev # API on :3001, web UI on :5173
|
|
167
172
|
pnpm test
|
|
168
173
|
```
|
|
169
174
|
|
|
170
175
|
## Roadmap
|
|
171
176
|
|
|
172
|
-
- [x]
|
|
173
|
-
- [ ]
|
|
174
|
-
- [ ]
|
|
175
|
-
- [ ]
|
|
177
|
+
- [x] v1.0: agents, memory, web UI, files, Ollama, CLI, Telegram, background tasks
|
|
178
|
+
- [ ] v1.1: local voice (Whisper.cpp and Piper or Kokoro), scheduled tasks, sandboxed commands
|
|
179
|
+
- [ ] v1.2: Slack, multiple workspaces, agents talking to each other
|
|
180
|
+
- [ ] v2.0: team mode, a marketplace of characters and skills, PWA, plugins
|
|
176
181
|
|
|
177
182
|
## Security
|
|
178
183
|
|
|
179
|
-
Crew listens on `127.0.0.1` by default and its API has
|
|
184
|
+
Crew listens on `127.0.0.1` by default, and its API has no authentication. If you expose it beyond your machine, put a reverse proxy with auth in front of it.
|
|
180
185
|
|
|
181
186
|
## License
|
|
182
187
|
|
|
183
|
-
[MIT](https://github.com/valyefimov/crew/blob/main/LICENSE) © Valentyn Yefimov
|
|
188
|
+
[MIT](https://github.com/valyefimov/crew/blob/main/LICENSE), © Valentyn Yefimov
|
package/dist/crew.js
CHANGED
|
@@ -1356,7 +1356,7 @@ import { serveStatic } from "@hono/node-server/serve-static";
|
|
|
1356
1356
|
import { createNodeWebSocket } from "@hono/node-ws";
|
|
1357
1357
|
|
|
1358
1358
|
// ../apps/server/src/version.ts
|
|
1359
|
-
var VERSION = "1.0.
|
|
1359
|
+
var VERSION = "1.0.2";
|
|
1360
1360
|
|
|
1361
1361
|
// ../apps/server/src/app.ts
|
|
1362
1362
|
var SECRET_KEYS = /* @__PURE__ */ new Set(["openaiApiKey", "telegramToken"]);
|
package/package.json
CHANGED