@vefimov/crew 1.0.0 → 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 +188 -0
- package/dist/crew.js +1 -1
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="https://valyefimov.github.io/crew/logo.svg" width="96" alt="Crew logo" />
|
|
4
|
+
|
|
5
|
+
# Crew
|
|
6
|
+
|
|
7
|
+
Your AI colleagues, at home.
|
|
8
|
+
|
|
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.
|
|
10
|
+
|
|
11
|
+
[](https://www.npmjs.com/package/@vefimov/crew)
|
|
12
|
+
[](https://github.com/valyefimov/crew/actions)
|
|
13
|
+
[](https://github.com/valyefimov/crew/blob/main/LICENSE)
|
|
14
|
+
[](https://github.com/valyefimov/crew/blob/main/.nvmrc)
|
|
15
|
+
|
|
16
|
+
[Docs](https://valyefimov.github.io/crew/) ·
|
|
17
|
+
[Русский](https://valyefimov.github.io/crew/ru/) ·
|
|
18
|
+
[Українська](https://valyefimov.github.io/crew/uk/) ·
|
|
19
|
+
[Roadmap](https://valyefimov.github.io/crew/guide/roadmap)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx @vefimov/crew
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
<br />
|
|
26
|
+
|
|
27
|
+
<a href="https://valyefimov.github.io/crew/media/demo.mp4">
|
|
28
|
+
<img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/demo.gif" alt="Crew demo" width="860" />
|
|
29
|
+
</a>
|
|
30
|
+
|
|
31
|
+
The full 90-second demo with voice-over:
|
|
32
|
+
[English](https://valyefimov.github.io/crew/media/demo.mp4) ·
|
|
33
|
+
[Русский](https://valyefimov.github.io/crew/media/demo-ru.mp4) ·
|
|
34
|
+
[Українська](https://valyefimov.github.io/crew/media/demo-uk.mp4)
|
|
35
|
+
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## What it is
|
|
41
|
+
|
|
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.
|
|
43
|
+
|
|
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.
|
|
54
|
+
|
|
55
|
+
## Screenshots
|
|
56
|
+
|
|
57
|
+
<table>
|
|
58
|
+
<tr>
|
|
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>
|
|
61
|
+
</tr>
|
|
62
|
+
<tr>
|
|
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>
|
|
65
|
+
</tr>
|
|
66
|
+
<tr>
|
|
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>
|
|
69
|
+
</tr>
|
|
70
|
+
</table>
|
|
71
|
+
|
|
72
|
+
<p align="center"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/cli.png" width="760" alt="Crew CLI" /></p>
|
|
73
|
+
|
|
74
|
+
## Quick start
|
|
75
|
+
|
|
76
|
+
You need Node.js 22.13 or newer and Ollama:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
ollama pull qwen2.5:3b
|
|
80
|
+
ollama pull nomic-embed-text
|
|
81
|
+
|
|
82
|
+
npx @vefimov/crew
|
|
83
|
+
```
|
|
84
|
+
|
|
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:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npm i -g @vefimov/crew
|
|
91
|
+
crew agent create Artem --template backend --folder ~/code/my-api
|
|
92
|
+
crew chat Artem
|
|
93
|
+
crew doctor # check your setup
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
<details>
|
|
97
|
+
<summary>Docker</summary>
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
docker compose -f docker/docker-compose.yml up
|
|
101
|
+
docker compose -f docker/docker-compose.yml exec ollama ollama pull qwen2.5:3b
|
|
102
|
+
docker compose -f docker/docker-compose.yml exec ollama ollama pull nomic-embed-text
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
</details>
|
|
106
|
+
|
|
107
|
+
<details>
|
|
108
|
+
<summary>Telegram</summary>
|
|
109
|
+
|
|
110
|
+
Create a bot with @BotFather, then:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
crew config set telegramToken 123456:ABC...
|
|
114
|
+
crew start
|
|
115
|
+
# ✔ Telegram bot online — send /pair 482913 to it
|
|
116
|
+
```
|
|
117
|
+
|
|
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?"
|
|
119
|
+
|
|
120
|
+
</details>
|
|
121
|
+
|
|
122
|
+
<details>
|
|
123
|
+
<summary>Another model provider</summary>
|
|
124
|
+
|
|
125
|
+
LM Studio, llama.cpp, vLLM, OpenRouter and OpenAI all work, since they speak the same API:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
CREW_PROVIDER=openai OPENAI_BASE_URL=http://127.0.0.1:1234/v1 crew start
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
</details>
|
|
132
|
+
|
|
133
|
+
## How it works
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
Web UI ─┐
|
|
137
|
+
CLI ────┼──▶ Crew runtime ──▶ Ollama / OpenAI-compatible
|
|
138
|
+
Telegram┘ │ ▲
|
|
139
|
+
▼ │ tools: remember · recall · list/read/write files
|
|
140
|
+
SQLite (one file: chats, memories, vectors, queue)
|
|
141
|
+
│
|
|
142
|
+
▼
|
|
143
|
+
background worker ──▶ memory extraction, embeddings
|
|
144
|
+
```
|
|
145
|
+
|
|
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.
|
|
153
|
+
|
|
154
|
+
More in the [architecture docs](https://valyefimov.github.io/crew/guide/architecture).
|
|
155
|
+
|
|
156
|
+
## Repository
|
|
157
|
+
|
|
158
|
+
```
|
|
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
|
|
163
|
+
packages/channels Telegram (grammY)
|
|
164
|
+
cli the `crew` command, published as @vefimov/crew
|
|
165
|
+
docs VitePress site in English, Russian and Ukrainian
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
git clone https://github.com/valyefimov/crew && cd crew
|
|
170
|
+
pnpm install
|
|
171
|
+
pnpm dev # API on :3001, web UI on :5173
|
|
172
|
+
pnpm test
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Roadmap
|
|
176
|
+
|
|
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
|
|
181
|
+
|
|
182
|
+
## Security
|
|
183
|
+
|
|
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.
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vefimov/crew",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "A lightweight local-first workspace for your persistent AI colleagues. Memory, files, Telegram — one command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"node": ">=22.13"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
|
-
"build": "tsup && node scripts/copy-web.mjs",
|
|
24
|
+
"build": "tsup && node scripts/copy-web.mjs && node scripts/copy-readme.mjs",
|
|
25
25
|
"typecheck": "tsc -p .",
|
|
26
26
|
"prepublishOnly": "pnpm build"
|
|
27
27
|
},
|