@vefimov/crew 1.0.0 → 1.0.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 +183 -0
- package/dist/crew.js +1 -1
- package/package.json +2 -2
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
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 lightweight, local-first workspace where persistent AI agents live.
|
|
10
|
+
They remember everything, work with your files, and talk to you in the browser, the terminal and Telegram.
|
|
11
|
+
|
|
12
|
+
[](https://www.npmjs.com/package/@vefimov/crew)
|
|
13
|
+
[](https://github.com/valyefimov/crew/actions)
|
|
14
|
+
[](https://github.com/valyefimov/crew/blob/main/LICENSE)
|
|
15
|
+
[](https://github.com/valyefimov/crew/blob/main/.nvmrc)
|
|
16
|
+
[](#why-crew)
|
|
17
|
+
|
|
18
|
+
[**Docs**](https://valyefimov.github.io/crew/) ·
|
|
19
|
+
[Русский](https://valyefimov.github.io/crew/ru/) ·
|
|
20
|
+
[Українська](https://valyefimov.github.io/crew/uk/) ·
|
|
21
|
+
[Roadmap](https://valyefimov.github.io/crew/guide/roadmap)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx @vefimov/crew
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
<br />
|
|
28
|
+
|
|
29
|
+
<a href="https://valyefimov.github.io/crew/media/demo.mp4">
|
|
30
|
+
<img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/demo.gif" alt="Crew demo" width="860" />
|
|
31
|
+
</a>
|
|
32
|
+
|
|
33
|
+
**▶ Watch the 90-second demo with voice-over:**
|
|
34
|
+
[English](https://valyefimov.github.io/crew/media/demo.mp4) ·
|
|
35
|
+
[Русский](https://valyefimov.github.io/crew/media/demo-ru.mp4) ·
|
|
36
|
+
[Українська](https://valyefimov.github.io/crew/media/demo-uk.mp4)
|
|
37
|
+
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Why Crew
|
|
43
|
+
|
|
44
|
+
Most "AI assistants" are a chat box that forgets you the moment you close the tab. Crew is the opposite: a small team of **persistent colleagues** that live on your machine.
|
|
45
|
+
|
|
46
|
+
| | |
|
|
47
|
+
|---|---|
|
|
48
|
+
| 🏠 **Local-first** | Runs on [Ollama](https://ollama.com) (or any OpenAI-compatible server). One SQLite file. No cloud, no accounts, no telemetry. |
|
|
49
|
+
| 🧠 **Real memory** | Each agent keeps long-term facts, decisions and preferences. Hybrid full-text + vector search, auto-extracted after every chat. |
|
|
50
|
+
| 🎭 **Characters** | Name, role, personality, instructions, even a different model per agent. Start from templates: backend dev, designer, PM, writer, coach. |
|
|
51
|
+
| 📁 **Your files** | Share a folder read-only or read-write. Agents list, read and write files — symlink- and `../`-proof. |
|
|
52
|
+
| ✈️ **Telegram** | Paste a bot token, pair with a one-time code, chat with your crew from your phone. Memory is shared with the web UI. |
|
|
53
|
+
| 🌍 **Three languages** | UI and docs in English, Русский and Українська. |
|
|
54
|
+
| ⚡ **One command** | Web UI, CLI, REST + WebSocket API and a background worker — all in a single `npx`. |
|
|
55
|
+
|
|
56
|
+
## Screenshots
|
|
57
|
+
|
|
58
|
+
<table>
|
|
59
|
+
<tr>
|
|
60
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard.png" alt="Dashboard — who's doing what" /><br /><sub><b>Dashboard</b> — who's doing what, live</sub></td>
|
|
61
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/chat-memory.png" alt="Chat with memory panel" /><br /><sub><b>Chat + memory</b> — browse and edit what an agent remembers</sub></td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/files.png" alt="Agent reading files" /><br /><sub><b>Files</b> — shared folders and visible tool calls</sub></td>
|
|
65
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/new-agent.png" alt="New colleague dialog" /><br /><sub><b>Templates</b> — hire a new colleague in seconds</sub></td>
|
|
66
|
+
</tr>
|
|
67
|
+
<tr>
|
|
68
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-ru.png" alt="Russian UI" /><br /><sub><b>Русский</b></sub></td>
|
|
69
|
+
<td width="50%"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/dashboard-uk.png" alt="Ukrainian UI" /><br /><sub><b>Українська</b></sub></td>
|
|
70
|
+
</tr>
|
|
71
|
+
</table>
|
|
72
|
+
|
|
73
|
+
<p align="center"><img src="https://raw.githubusercontent.com/valyefimov/crew/main/media/cli.png" width="760" alt="Crew CLI" /></p>
|
|
74
|
+
|
|
75
|
+
## Quick start
|
|
76
|
+
|
|
77
|
+
You need **Node.js 22.13+** and **Ollama**:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
ollama pull qwen2.5:3b
|
|
81
|
+
ollama pull nomic-embed-text
|
|
82
|
+
|
|
83
|
+
npx @vefimov/crew
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Open <http://localhost:3000>, hire your first colleague, say hi. Close the tab, come back tomorrow — they still know who you are.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# or from the terminal
|
|
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><b>Docker</b></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><b>Telegram</b></summary>
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
crew config set telegramToken 123456:ABC... # from @BotFather
|
|
112
|
+
crew start
|
|
113
|
+
# ✔ Telegram bot online — send /pair 482913 to it
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`/agents`, `/use <name>`, `/memory`, `/forget` — or just address someone: *"Lena, how does this look?"*
|
|
117
|
+
|
|
118
|
+
</details>
|
|
119
|
+
|
|
120
|
+
<details>
|
|
121
|
+
<summary><b>Use a different model provider</b></summary>
|
|
122
|
+
|
|
123
|
+
LM Studio, llama.cpp, vLLM, OpenRouter, OpenAI — anything OpenAI-compatible:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
CREW_PROVIDER=openai OPENAI_BASE_URL=http://127.0.0.1:1234/v1 crew start
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
</details>
|
|
130
|
+
|
|
131
|
+
## How it works
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Web UI ─┐
|
|
135
|
+
CLI ────┼──▶ Crew runtime ──▶ Ollama / OpenAI-compatible
|
|
136
|
+
Telegram┘ │ ▲
|
|
137
|
+
▼ │ tools: remember · recall · list/read/write files
|
|
138
|
+
SQLite (one file: chats, memories, vectors, queue)
|
|
139
|
+
│
|
|
140
|
+
▼
|
|
141
|
+
background worker ──▶ memory extraction, embeddings
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
- **No native dependencies** — uses Node's built-in `node:sqlite`, so `npx` just works.
|
|
145
|
+
- **Hybrid memory in SQLite** — FTS5 (BM25) + cosine over embeddings, fused with reciprocal-rank fusion, nudged by importance and recency. Near-duplicates are skipped.
|
|
146
|
+
- **Provider-agnostic** — a tiny `Provider` interface with streaming and tool calls.
|
|
147
|
+
- **Safe files** — paths are resolved with `realpath` *before* the permission check; writes need an explicit `rw` grant.
|
|
148
|
+
|
|
149
|
+
Read more in the [architecture docs](https://valyefimov.github.io/crew/guide/architecture).
|
|
150
|
+
|
|
151
|
+
## Repository
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
apps/server Hono — REST + WebSocket
|
|
155
|
+
apps/web React 19 · Vite · Tailwind v4
|
|
156
|
+
packages/core agent runtime, providers, tools, worker
|
|
157
|
+
packages/memory SQLite store, FTS5 + vectors, task queue
|
|
158
|
+
packages/channels Telegram (grammY)
|
|
159
|
+
cli `crew` — published as @vefimov/crew
|
|
160
|
+
docs VitePress site (en · ru · uk)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
git clone https://github.com/valyefimov/crew && cd crew
|
|
165
|
+
pnpm install
|
|
166
|
+
pnpm dev # API :3001, web UI :5173
|
|
167
|
+
pnpm test
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Roadmap
|
|
171
|
+
|
|
172
|
+
- [x] **v1.0** — agents, memory, web UI, files, Ollama, CLI, Telegram, background tasks
|
|
173
|
+
- [ ] **v1.1** — local voice (Whisper.cpp + Piper/Kokoro), scheduled tasks, sandboxed commands
|
|
174
|
+
- [ ] **v1.2** — Slack, multiple workspaces, agents talking to each other
|
|
175
|
+
- [ ] **v2.0** — team mode, marketplace of characters and skills, PWA, plugins
|
|
176
|
+
|
|
177
|
+
## Security
|
|
178
|
+
|
|
179
|
+
Crew listens on `127.0.0.1` by default and its API has **no authentication**. Don't expose it to the internet without a reverse proxy that adds auth.
|
|
180
|
+
|
|
181
|
+
## License
|
|
182
|
+
|
|
183
|
+
[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.1";
|
|
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.1",
|
|
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
|
},
|