@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.
Files changed (3) hide show
  1. package/README.md +188 -0
  2. package/dist/crew.js +1 -1
  3. 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
+ [![npm](https://img.shields.io/npm/v/@vefimov/crew?color=8b5cf6&label=npm)](https://www.npmjs.com/package/@vefimov/crew)
12
+ [![CI](https://img.shields.io/github/actions/workflow/status/valyefimov/crew/ci.yml?branch=main&label=ci)](https://github.com/valyefimov/crew/actions)
13
+ [![License: MIT](https://img.shields.io/badge/license-MIT-22d3ee)](https://github.com/valyefimov/crew/blob/main/LICENSE)
14
+ [![Node](https://img.shields.io/badge/node-%E2%89%A522.13-8b5cf6)](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.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.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
  },