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