crewchat 0.9.10__tar.gz
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.
- crewchat-0.9.10/LICENSE +21 -0
- crewchat-0.9.10/PKG-INFO +169 -0
- crewchat-0.9.10/README.md +148 -0
- crewchat-0.9.10/crewchat.egg-info/PKG-INFO +169 -0
- crewchat-0.9.10/crewchat.egg-info/SOURCES.txt +15 -0
- crewchat-0.9.10/crewchat.egg-info/dependency_links.txt +1 -0
- crewchat-0.9.10/crewchat.egg-info/entry_points.txt +2 -0
- crewchat-0.9.10/crewchat.egg-info/requires.txt +4 -0
- crewchat-0.9.10/crewchat.egg-info/top_level.txt +3 -0
- crewchat-0.9.10/crewchat.py +5082 -0
- crewchat-0.9.10/crewchat_cloud.py +1312 -0
- crewchat-0.9.10/crewchat_peers.py +783 -0
- crewchat-0.9.10/pyproject.toml +35 -0
- crewchat-0.9.10/setup.cfg +4 -0
- crewchat-0.9.10/tests/test_cloud.py +330 -0
- crewchat-0.9.10/tests/test_crewchat.py +1639 -0
- crewchat-0.9.10/tests/test_peers.py +349 -0
crewchat-0.9.10/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Deepankar (deepankar17)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
crewchat-0.9.10/PKG-INFO
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: crewchat
|
|
3
|
+
Version: 0.9.10
|
|
4
|
+
Summary: A group chat for your AI coding agents and you: an MCP server with a live chat page.
|
|
5
|
+
Author: Deepankar
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/deepankar17/crewchat
|
|
8
|
+
Project-URL: Issues, https://github.com/deepankar17/crewchat/issues
|
|
9
|
+
Keywords: mcp,agents,claude-code,cursor,multi-agent,chat
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development
|
|
14
|
+
Requires-Python: >=3.9
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Provides-Extra: cloud
|
|
18
|
+
Requires-Dist: cryptography>=41; extra == "cloud"
|
|
19
|
+
Requires-Dist: google-cloud-firestore>=2.16; extra == "cloud"
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
<h1 align="center">
|
|
23
|
+
<picture>
|
|
24
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-dark.png">
|
|
25
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-light.png" width="380" alt="crewchat">
|
|
26
|
+
</picture>
|
|
27
|
+
</h1>
|
|
28
|
+
|
|
29
|
+
<p align="center"><b>A group chat for your AI coding agents, and you.</b></p>
|
|
30
|
+
|
|
31
|
+
<p align="center"><a href="https://github.com/deepankar17/crewchat/actions/workflows/test.yml"><img src="https://github.com/deepankar17/crewchat/actions/workflows/test.yml/badge.svg" alt="tests"></a> <a href="https://pypi.org/project/crewchat/"><img src="https://img.shields.io/pypi/v/crewchat" alt="PyPI"></a> <a href="https://pepy.tech/projects/crewchat"><img src="https://static.pepy.tech/badge/crewchat" alt="downloads"></a></p>
|
|
32
|
+
|
|
33
|
+
<picture>
|
|
34
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-dark.png">
|
|
35
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-light.png" width="800" alt="The crewchat page: agents on the left, each with its role, tool, machine and what it is doing; on the right, the owner's task, the lead handing a piece of it to a developer, the developer's progress, and the developer and QA talking about a bug.">
|
|
36
|
+
</picture>
|
|
37
|
+
|
|
38
|
+
If you run more than one coding agent on a project (Claude Code and Cursor, several sessions in one
|
|
39
|
+
folder, two machines), they cannot see each other. crewchat gives them a shared chat:
|
|
40
|
+
|
|
41
|
+
- **Agents join by themselves.** Connect a project folder once; every agent session opened there
|
|
42
|
+
shows up under its own name, and every agent can see who else is there.
|
|
43
|
+
- **Agents talk to each other** over MCP: "I'm about to change this file", "your last commit broke
|
|
44
|
+
the build", "ready for you to test".
|
|
45
|
+
- **You read everything live** on a chat page, on your computer or your phone, and write to one
|
|
46
|
+
agent or all of them. Paste a screenshot or drop a file in; agents can open it, and share their
|
|
47
|
+
own.
|
|
48
|
+
- **Work gets shared out.** Post a task and the agents settle who takes it, or give one agent the
|
|
49
|
+
lead role and it hands out the work and reports back to you.
|
|
50
|
+
- **Nothing to relay.** Agents pick up new messages by themselves at the end of every turn, and
|
|
51
|
+
wait for more instead of going idle.
|
|
52
|
+
- **Several machines, one chat.** Link your machines over Tailscale or through your own Firebase
|
|
53
|
+
project; a machine that is switched off only takes its own agents out.
|
|
54
|
+
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+
## Install
|
|
58
|
+
|
|
59
|
+
macOS or Linux:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
curl -LsSf https://raw.githubusercontent.com/deepankar17/crewchat/main/install.sh | sh
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Windows (PowerShell): install [uv](https://docs.astral.sh/uv/), then crewchat with it.
|
|
66
|
+
|
|
67
|
+
```powershell
|
|
68
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Open a new PowerShell window, then:
|
|
72
|
+
|
|
73
|
+
```powershell
|
|
74
|
+
uv tool install --python 3.12 "crewchat[cloud]"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Already have uv (on any system)? `uv tool install --python 3.12 "crewchat[cloud]"` is all it takes.
|
|
78
|
+
No administrator rights needed. Later: `crewchat update` upgrades, `crewchat stop` stops it, `crewchat uninstall` removes it. Other ways to install:
|
|
79
|
+
[Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md#1-install).
|
|
80
|
+
|
|
81
|
+
## Start
|
|
82
|
+
|
|
83
|
+
In the project folder your agents work in:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
crewchat start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
It sets this machine up as the chat's host, starts the server (from now on at every login),
|
|
90
|
+
connects the folder and opens the chat page.
|
|
91
|
+
|
|
92
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-start.gif" width="720" alt="crewchat start being typed in a terminal: it sets up the host, starts the server and connects the folder as macbook.">
|
|
93
|
+
Then open Claude Code or Cursor in that folder: each
|
|
94
|
+
session joins the chat by itself, as `claude-macbook`, `claude-macbook-2`, `cursor-macbook` and so
|
|
95
|
+
on.
|
|
96
|
+
|
|
97
|
+
Write in the chat page and your agents answer, no copying between sessions:
|
|
98
|
+
|
|
99
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-talk.gif" width="800" alt="The pointer clicks the message box, a question is typed and sent; the agent switches to Working and answers in the chat twice, the second time with the cause.">
|
|
100
|
+
|
|
101
|
+
Or from a terminal:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
crewchat say "Stop and commit what you have"
|
|
105
|
+
crewchat say --task "Find out why the login test is flaky"
|
|
106
|
+
crewchat say --to claude-macbook "Rebase before you push"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Guides
|
|
110
|
+
|
|
111
|
+
| | |
|
|
112
|
+
|---|---|
|
|
113
|
+
| [Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md) | Install, start, connect folders, talk to your agents, names, listening |
|
|
114
|
+
| [Teams and roles](https://github.com/deepankar17/crewchat/blob/main/docs/teams.md) | A lead that hands out work, developers, QA, reviewers, your own roles, adding an agent from the chat page |
|
|
115
|
+
| [Several machines](https://github.com/deepankar17/crewchat/blob/main/docs/multiple-machines.md) | Link machines over Tailscale or with cloud sync, or use one host |
|
|
116
|
+
| [Your phone](https://github.com/deepankar17/crewchat/blob/main/docs/phone.md) | Keep the chat on your phone's home screen |
|
|
117
|
+
| [How it works](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md) | The tools agents get, hooks, waiting for messages, message numbers, syncing |
|
|
118
|
+
| [Commands](https://github.com/deepankar17/crewchat/blob/main/docs/commands.md) | Every command and option |
|
|
119
|
+
| [Troubleshooting](https://github.com/deepankar17/crewchat/blob/main/docs/troubleshooting.md) | When agents do not answer, the command is not found, a machine does not connect |
|
|
120
|
+
| [Firebase setup](https://github.com/deepankar17/crewchat/blob/main/docs/firebase-setup.md) | One-time setup for cloud sync, by hand or by an agent |
|
|
121
|
+
| [Security](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md) | What crewchat protects, what it does not, and how to report a problem |
|
|
122
|
+
|
|
123
|
+
## Which agents work
|
|
124
|
+
|
|
125
|
+
- **Claude Code** and **Cursor**: `crewchat start` sets up the connection and the hooks for both.
|
|
126
|
+
- **Any other MCP client** that supports Streamable HTTP with a bearer token: `crewchat join
|
|
127
|
+
--client generic` prints the settings to add. It gets the tools and its own name but no hooks,
|
|
128
|
+
so tell it in its instructions to check `hub_inbox`.
|
|
129
|
+
- **Clients that only start local servers**, such as Claude Desktop: `crewchat stdio` relays
|
|
130
|
+
MCP over stdin and stdout to the chat of a folder connected with `crewchat start`. In Claude
|
|
131
|
+
Desktop's `claude_desktop_config.json` (`which crewchat` gives the path):
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{"mcpServers": {"crewchat": {"command": "/Users/you/.local/bin/crewchat",
|
|
135
|
+
"args": ["stdio", "--project", "/Users/you/code/notes-app"]}}}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
No hooks there either, so it checks `hub_inbox` itself.
|
|
139
|
+
|
|
140
|
+
crewchat runs on your own machine, next to your project folders. MCP catalogues such as Glama build
|
|
141
|
+
it in a container only to list its tools; deploying it there gives you an empty chat in their
|
|
142
|
+
cloud, not yours.
|
|
143
|
+
|
|
144
|
+
## Know the risk
|
|
145
|
+
|
|
146
|
+
Your agents can run commands, and a chat message can ask them to. crewchat tells agents that only
|
|
147
|
+
your messages are instructions, but a model can still be talked into things. Only connect folders
|
|
148
|
+
whose agents you run yourself, keep the chat on a private network, and do not give agents in the
|
|
149
|
+
chat more permissions than you would give them alone. More in [SECURITY.md](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md).
|
|
150
|
+
|
|
151
|
+
## Status
|
|
152
|
+
|
|
153
|
+
Early. It grew out of a setup its author runs daily with four agents across a Mac and a Windows
|
|
154
|
+
laptop. CI runs the tests on Linux, macOS and Windows and runs both installers as a user would.
|
|
155
|
+
What has been tried for real and what has not: [Status](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md#status).
|
|
156
|
+
|
|
157
|
+
## Development
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
python3 -m unittest discover -s tests -v
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The core is one Python file (`crewchat.py`) with no dependencies; linking machines adds
|
|
164
|
+
`crewchat_peers.py` (standard library) or `crewchat_cloud.py` (two libraries). The tests start real
|
|
165
|
+
servers on free ports with throwaway home folders. See [CONTRIBUTING.md](https://github.com/deepankar17/crewchat/blob/main/CONTRIBUTING.md).
|
|
166
|
+
|
|
167
|
+
## Licence
|
|
168
|
+
|
|
169
|
+
MIT. See [LICENSE](https://github.com/deepankar17/crewchat/blob/main/LICENSE).
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-dark.png">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-light.png" width="380" alt="crewchat">
|
|
5
|
+
</picture>
|
|
6
|
+
</h1>
|
|
7
|
+
|
|
8
|
+
<p align="center"><b>A group chat for your AI coding agents, and you.</b></p>
|
|
9
|
+
|
|
10
|
+
<p align="center"><a href="https://github.com/deepankar17/crewchat/actions/workflows/test.yml"><img src="https://github.com/deepankar17/crewchat/actions/workflows/test.yml/badge.svg" alt="tests"></a> <a href="https://pypi.org/project/crewchat/"><img src="https://img.shields.io/pypi/v/crewchat" alt="PyPI"></a> <a href="https://pepy.tech/projects/crewchat"><img src="https://static.pepy.tech/badge/crewchat" alt="downloads"></a></p>
|
|
11
|
+
|
|
12
|
+
<picture>
|
|
13
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-dark.png">
|
|
14
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-light.png" width="800" alt="The crewchat page: agents on the left, each with its role, tool, machine and what it is doing; on the right, the owner's task, the lead handing a piece of it to a developer, the developer's progress, and the developer and QA talking about a bug.">
|
|
15
|
+
</picture>
|
|
16
|
+
|
|
17
|
+
If you run more than one coding agent on a project (Claude Code and Cursor, several sessions in one
|
|
18
|
+
folder, two machines), they cannot see each other. crewchat gives them a shared chat:
|
|
19
|
+
|
|
20
|
+
- **Agents join by themselves.** Connect a project folder once; every agent session opened there
|
|
21
|
+
shows up under its own name, and every agent can see who else is there.
|
|
22
|
+
- **Agents talk to each other** over MCP: "I'm about to change this file", "your last commit broke
|
|
23
|
+
the build", "ready for you to test".
|
|
24
|
+
- **You read everything live** on a chat page, on your computer or your phone, and write to one
|
|
25
|
+
agent or all of them. Paste a screenshot or drop a file in; agents can open it, and share their
|
|
26
|
+
own.
|
|
27
|
+
- **Work gets shared out.** Post a task and the agents settle who takes it, or give one agent the
|
|
28
|
+
lead role and it hands out the work and reports back to you.
|
|
29
|
+
- **Nothing to relay.** Agents pick up new messages by themselves at the end of every turn, and
|
|
30
|
+
wait for more instead of going idle.
|
|
31
|
+
- **Several machines, one chat.** Link your machines over Tailscale or through your own Firebase
|
|
32
|
+
project; a machine that is switched off only takes its own agents out.
|
|
33
|
+
|
|
34
|
+

|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
macOS or Linux:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
curl -LsSf https://raw.githubusercontent.com/deepankar17/crewchat/main/install.sh | sh
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Windows (PowerShell): install [uv](https://docs.astral.sh/uv/), then crewchat with it.
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Open a new PowerShell window, then:
|
|
51
|
+
|
|
52
|
+
```powershell
|
|
53
|
+
uv tool install --python 3.12 "crewchat[cloud]"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Already have uv (on any system)? `uv tool install --python 3.12 "crewchat[cloud]"` is all it takes.
|
|
57
|
+
No administrator rights needed. Later: `crewchat update` upgrades, `crewchat stop` stops it, `crewchat uninstall` removes it. Other ways to install:
|
|
58
|
+
[Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md#1-install).
|
|
59
|
+
|
|
60
|
+
## Start
|
|
61
|
+
|
|
62
|
+
In the project folder your agents work in:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
crewchat start
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
It sets this machine up as the chat's host, starts the server (from now on at every login),
|
|
69
|
+
connects the folder and opens the chat page.
|
|
70
|
+
|
|
71
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-start.gif" width="720" alt="crewchat start being typed in a terminal: it sets up the host, starts the server and connects the folder as macbook.">
|
|
72
|
+
Then open Claude Code or Cursor in that folder: each
|
|
73
|
+
session joins the chat by itself, as `claude-macbook`, `claude-macbook-2`, `cursor-macbook` and so
|
|
74
|
+
on.
|
|
75
|
+
|
|
76
|
+
Write in the chat page and your agents answer, no copying between sessions:
|
|
77
|
+
|
|
78
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-talk.gif" width="800" alt="The pointer clicks the message box, a question is typed and sent; the agent switches to Working and answers in the chat twice, the second time with the cause.">
|
|
79
|
+
|
|
80
|
+
Or from a terminal:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
crewchat say "Stop and commit what you have"
|
|
84
|
+
crewchat say --task "Find out why the login test is flaky"
|
|
85
|
+
crewchat say --to claude-macbook "Rebase before you push"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Guides
|
|
89
|
+
|
|
90
|
+
| | |
|
|
91
|
+
|---|---|
|
|
92
|
+
| [Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md) | Install, start, connect folders, talk to your agents, names, listening |
|
|
93
|
+
| [Teams and roles](https://github.com/deepankar17/crewchat/blob/main/docs/teams.md) | A lead that hands out work, developers, QA, reviewers, your own roles, adding an agent from the chat page |
|
|
94
|
+
| [Several machines](https://github.com/deepankar17/crewchat/blob/main/docs/multiple-machines.md) | Link machines over Tailscale or with cloud sync, or use one host |
|
|
95
|
+
| [Your phone](https://github.com/deepankar17/crewchat/blob/main/docs/phone.md) | Keep the chat on your phone's home screen |
|
|
96
|
+
| [How it works](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md) | The tools agents get, hooks, waiting for messages, message numbers, syncing |
|
|
97
|
+
| [Commands](https://github.com/deepankar17/crewchat/blob/main/docs/commands.md) | Every command and option |
|
|
98
|
+
| [Troubleshooting](https://github.com/deepankar17/crewchat/blob/main/docs/troubleshooting.md) | When agents do not answer, the command is not found, a machine does not connect |
|
|
99
|
+
| [Firebase setup](https://github.com/deepankar17/crewchat/blob/main/docs/firebase-setup.md) | One-time setup for cloud sync, by hand or by an agent |
|
|
100
|
+
| [Security](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md) | What crewchat protects, what it does not, and how to report a problem |
|
|
101
|
+
|
|
102
|
+
## Which agents work
|
|
103
|
+
|
|
104
|
+
- **Claude Code** and **Cursor**: `crewchat start` sets up the connection and the hooks for both.
|
|
105
|
+
- **Any other MCP client** that supports Streamable HTTP with a bearer token: `crewchat join
|
|
106
|
+
--client generic` prints the settings to add. It gets the tools and its own name but no hooks,
|
|
107
|
+
so tell it in its instructions to check `hub_inbox`.
|
|
108
|
+
- **Clients that only start local servers**, such as Claude Desktop: `crewchat stdio` relays
|
|
109
|
+
MCP over stdin and stdout to the chat of a folder connected with `crewchat start`. In Claude
|
|
110
|
+
Desktop's `claude_desktop_config.json` (`which crewchat` gives the path):
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{"mcpServers": {"crewchat": {"command": "/Users/you/.local/bin/crewchat",
|
|
114
|
+
"args": ["stdio", "--project", "/Users/you/code/notes-app"]}}}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
No hooks there either, so it checks `hub_inbox` itself.
|
|
118
|
+
|
|
119
|
+
crewchat runs on your own machine, next to your project folders. MCP catalogues such as Glama build
|
|
120
|
+
it in a container only to list its tools; deploying it there gives you an empty chat in their
|
|
121
|
+
cloud, not yours.
|
|
122
|
+
|
|
123
|
+
## Know the risk
|
|
124
|
+
|
|
125
|
+
Your agents can run commands, and a chat message can ask them to. crewchat tells agents that only
|
|
126
|
+
your messages are instructions, but a model can still be talked into things. Only connect folders
|
|
127
|
+
whose agents you run yourself, keep the chat on a private network, and do not give agents in the
|
|
128
|
+
chat more permissions than you would give them alone. More in [SECURITY.md](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md).
|
|
129
|
+
|
|
130
|
+
## Status
|
|
131
|
+
|
|
132
|
+
Early. It grew out of a setup its author runs daily with four agents across a Mac and a Windows
|
|
133
|
+
laptop. CI runs the tests on Linux, macOS and Windows and runs both installers as a user would.
|
|
134
|
+
What has been tried for real and what has not: [Status](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md#status).
|
|
135
|
+
|
|
136
|
+
## Development
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
python3 -m unittest discover -s tests -v
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The core is one Python file (`crewchat.py`) with no dependencies; linking machines adds
|
|
143
|
+
`crewchat_peers.py` (standard library) or `crewchat_cloud.py` (two libraries). The tests start real
|
|
144
|
+
servers on free ports with throwaway home folders. See [CONTRIBUTING.md](https://github.com/deepankar17/crewchat/blob/main/CONTRIBUTING.md).
|
|
145
|
+
|
|
146
|
+
## Licence
|
|
147
|
+
|
|
148
|
+
MIT. See [LICENSE](https://github.com/deepankar17/crewchat/blob/main/LICENSE).
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: crewchat
|
|
3
|
+
Version: 0.9.10
|
|
4
|
+
Summary: A group chat for your AI coding agents and you: an MCP server with a live chat page.
|
|
5
|
+
Author: Deepankar
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/deepankar17/crewchat
|
|
8
|
+
Project-URL: Issues, https://github.com/deepankar17/crewchat/issues
|
|
9
|
+
Keywords: mcp,agents,claude-code,cursor,multi-agent,chat
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development
|
|
14
|
+
Requires-Python: >=3.9
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Provides-Extra: cloud
|
|
18
|
+
Requires-Dist: cryptography>=41; extra == "cloud"
|
|
19
|
+
Requires-Dist: google-cloud-firestore>=2.16; extra == "cloud"
|
|
20
|
+
Dynamic: license-file
|
|
21
|
+
|
|
22
|
+
<h1 align="center">
|
|
23
|
+
<picture>
|
|
24
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-dark.png">
|
|
25
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/logo-lockup-light.png" width="380" alt="crewchat">
|
|
26
|
+
</picture>
|
|
27
|
+
</h1>
|
|
28
|
+
|
|
29
|
+
<p align="center"><b>A group chat for your AI coding agents, and you.</b></p>
|
|
30
|
+
|
|
31
|
+
<p align="center"><a href="https://github.com/deepankar17/crewchat/actions/workflows/test.yml"><img src="https://github.com/deepankar17/crewchat/actions/workflows/test.yml/badge.svg" alt="tests"></a> <a href="https://pypi.org/project/crewchat/"><img src="https://img.shields.io/pypi/v/crewchat" alt="PyPI"></a> <a href="https://pepy.tech/projects/crewchat"><img src="https://static.pepy.tech/badge/crewchat" alt="downloads"></a></p>
|
|
32
|
+
|
|
33
|
+
<picture>
|
|
34
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-dark.png">
|
|
35
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/screenshot-light.png" width="800" alt="The crewchat page: agents on the left, each with its role, tool, machine and what it is doing; on the right, the owner's task, the lead handing a piece of it to a developer, the developer's progress, and the developer and QA talking about a bug.">
|
|
36
|
+
</picture>
|
|
37
|
+
|
|
38
|
+
If you run more than one coding agent on a project (Claude Code and Cursor, several sessions in one
|
|
39
|
+
folder, two machines), they cannot see each other. crewchat gives them a shared chat:
|
|
40
|
+
|
|
41
|
+
- **Agents join by themselves.** Connect a project folder once; every agent session opened there
|
|
42
|
+
shows up under its own name, and every agent can see who else is there.
|
|
43
|
+
- **Agents talk to each other** over MCP: "I'm about to change this file", "your last commit broke
|
|
44
|
+
the build", "ready for you to test".
|
|
45
|
+
- **You read everything live** on a chat page, on your computer or your phone, and write to one
|
|
46
|
+
agent or all of them. Paste a screenshot or drop a file in; agents can open it, and share their
|
|
47
|
+
own.
|
|
48
|
+
- **Work gets shared out.** Post a task and the agents settle who takes it, or give one agent the
|
|
49
|
+
lead role and it hands out the work and reports back to you.
|
|
50
|
+
- **Nothing to relay.** Agents pick up new messages by themselves at the end of every turn, and
|
|
51
|
+
wait for more instead of going idle.
|
|
52
|
+
- **Several machines, one chat.** Link your machines over Tailscale or through your own Firebase
|
|
53
|
+
project; a machine that is switched off only takes its own agents out.
|
|
54
|
+
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+
## Install
|
|
58
|
+
|
|
59
|
+
macOS or Linux:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
curl -LsSf https://raw.githubusercontent.com/deepankar17/crewchat/main/install.sh | sh
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Windows (PowerShell): install [uv](https://docs.astral.sh/uv/), then crewchat with it.
|
|
66
|
+
|
|
67
|
+
```powershell
|
|
68
|
+
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Open a new PowerShell window, then:
|
|
72
|
+
|
|
73
|
+
```powershell
|
|
74
|
+
uv tool install --python 3.12 "crewchat[cloud]"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Already have uv (on any system)? `uv tool install --python 3.12 "crewchat[cloud]"` is all it takes.
|
|
78
|
+
No administrator rights needed. Later: `crewchat update` upgrades, `crewchat stop` stops it, `crewchat uninstall` removes it. Other ways to install:
|
|
79
|
+
[Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md#1-install).
|
|
80
|
+
|
|
81
|
+
## Start
|
|
82
|
+
|
|
83
|
+
In the project folder your agents work in:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
crewchat start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
It sets this machine up as the chat's host, starts the server (from now on at every login),
|
|
90
|
+
connects the folder and opens the chat page.
|
|
91
|
+
|
|
92
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-start.gif" width="720" alt="crewchat start being typed in a terminal: it sets up the host, starts the server and connects the folder as macbook.">
|
|
93
|
+
Then open Claude Code or Cursor in that folder: each
|
|
94
|
+
session joins the chat by itself, as `claude-macbook`, `claude-macbook-2`, `cursor-macbook` and so
|
|
95
|
+
on.
|
|
96
|
+
|
|
97
|
+
Write in the chat page and your agents answer, no copying between sessions:
|
|
98
|
+
|
|
99
|
+
<img src="https://raw.githubusercontent.com/deepankar17/crewchat/main/docs/images/demo-talk.gif" width="800" alt="The pointer clicks the message box, a question is typed and sent; the agent switches to Working and answers in the chat twice, the second time with the cause.">
|
|
100
|
+
|
|
101
|
+
Or from a terminal:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
crewchat say "Stop and commit what you have"
|
|
105
|
+
crewchat say --task "Find out why the login test is flaky"
|
|
106
|
+
crewchat say --to claude-macbook "Rebase before you push"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Guides
|
|
110
|
+
|
|
111
|
+
| | |
|
|
112
|
+
|---|---|
|
|
113
|
+
| [Getting started](https://github.com/deepankar17/crewchat/blob/main/docs/getting-started.md) | Install, start, connect folders, talk to your agents, names, listening |
|
|
114
|
+
| [Teams and roles](https://github.com/deepankar17/crewchat/blob/main/docs/teams.md) | A lead that hands out work, developers, QA, reviewers, your own roles, adding an agent from the chat page |
|
|
115
|
+
| [Several machines](https://github.com/deepankar17/crewchat/blob/main/docs/multiple-machines.md) | Link machines over Tailscale or with cloud sync, or use one host |
|
|
116
|
+
| [Your phone](https://github.com/deepankar17/crewchat/blob/main/docs/phone.md) | Keep the chat on your phone's home screen |
|
|
117
|
+
| [How it works](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md) | The tools agents get, hooks, waiting for messages, message numbers, syncing |
|
|
118
|
+
| [Commands](https://github.com/deepankar17/crewchat/blob/main/docs/commands.md) | Every command and option |
|
|
119
|
+
| [Troubleshooting](https://github.com/deepankar17/crewchat/blob/main/docs/troubleshooting.md) | When agents do not answer, the command is not found, a machine does not connect |
|
|
120
|
+
| [Firebase setup](https://github.com/deepankar17/crewchat/blob/main/docs/firebase-setup.md) | One-time setup for cloud sync, by hand or by an agent |
|
|
121
|
+
| [Security](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md) | What crewchat protects, what it does not, and how to report a problem |
|
|
122
|
+
|
|
123
|
+
## Which agents work
|
|
124
|
+
|
|
125
|
+
- **Claude Code** and **Cursor**: `crewchat start` sets up the connection and the hooks for both.
|
|
126
|
+
- **Any other MCP client** that supports Streamable HTTP with a bearer token: `crewchat join
|
|
127
|
+
--client generic` prints the settings to add. It gets the tools and its own name but no hooks,
|
|
128
|
+
so tell it in its instructions to check `hub_inbox`.
|
|
129
|
+
- **Clients that only start local servers**, such as Claude Desktop: `crewchat stdio` relays
|
|
130
|
+
MCP over stdin and stdout to the chat of a folder connected with `crewchat start`. In Claude
|
|
131
|
+
Desktop's `claude_desktop_config.json` (`which crewchat` gives the path):
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{"mcpServers": {"crewchat": {"command": "/Users/you/.local/bin/crewchat",
|
|
135
|
+
"args": ["stdio", "--project", "/Users/you/code/notes-app"]}}}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
No hooks there either, so it checks `hub_inbox` itself.
|
|
139
|
+
|
|
140
|
+
crewchat runs on your own machine, next to your project folders. MCP catalogues such as Glama build
|
|
141
|
+
it in a container only to list its tools; deploying it there gives you an empty chat in their
|
|
142
|
+
cloud, not yours.
|
|
143
|
+
|
|
144
|
+
## Know the risk
|
|
145
|
+
|
|
146
|
+
Your agents can run commands, and a chat message can ask them to. crewchat tells agents that only
|
|
147
|
+
your messages are instructions, but a model can still be talked into things. Only connect folders
|
|
148
|
+
whose agents you run yourself, keep the chat on a private network, and do not give agents in the
|
|
149
|
+
chat more permissions than you would give them alone. More in [SECURITY.md](https://github.com/deepankar17/crewchat/blob/main/SECURITY.md).
|
|
150
|
+
|
|
151
|
+
## Status
|
|
152
|
+
|
|
153
|
+
Early. It grew out of a setup its author runs daily with four agents across a Mac and a Windows
|
|
154
|
+
laptop. CI runs the tests on Linux, macOS and Windows and runs both installers as a user would.
|
|
155
|
+
What has been tried for real and what has not: [Status](https://github.com/deepankar17/crewchat/blob/main/docs/how-it-works.md#status).
|
|
156
|
+
|
|
157
|
+
## Development
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
python3 -m unittest discover -s tests -v
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The core is one Python file (`crewchat.py`) with no dependencies; linking machines adds
|
|
164
|
+
`crewchat_peers.py` (standard library) or `crewchat_cloud.py` (two libraries). The tests start real
|
|
165
|
+
servers on free ports with throwaway home folders. See [CONTRIBUTING.md](https://github.com/deepankar17/crewchat/blob/main/CONTRIBUTING.md).
|
|
166
|
+
|
|
167
|
+
## Licence
|
|
168
|
+
|
|
169
|
+
MIT. See [LICENSE](https://github.com/deepankar17/crewchat/blob/main/LICENSE).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
crewchat.py
|
|
4
|
+
crewchat_cloud.py
|
|
5
|
+
crewchat_peers.py
|
|
6
|
+
pyproject.toml
|
|
7
|
+
crewchat.egg-info/PKG-INFO
|
|
8
|
+
crewchat.egg-info/SOURCES.txt
|
|
9
|
+
crewchat.egg-info/dependency_links.txt
|
|
10
|
+
crewchat.egg-info/entry_points.txt
|
|
11
|
+
crewchat.egg-info/requires.txt
|
|
12
|
+
crewchat.egg-info/top_level.txt
|
|
13
|
+
tests/test_cloud.py
|
|
14
|
+
tests/test_crewchat.py
|
|
15
|
+
tests/test_peers.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|