by getcrew44
Orchestrate a crew of specialist AI agents in one local-first workspace. Each role on its best model, with memory and skills that compound. Free, MIT.
# Add to your Claude Code skills
git clone https://github.com/getcrew44/crew44Last scanned: 6/5/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@expo/bunyan: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/cli: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/config: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/config-plugins: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@expo/metro-config: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/ngrok: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/plist: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@expo/prebuild-config: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/rudder-sdk-node: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@expo/steps: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@xmldom/xmldom: xmldom: XML injection via unsafe CDATA serialization allows attacker-controlled markup insertion",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ajv: ajv has ReDoS when using `$data` option",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "diff: jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
"severity": "low"
},
{
"type": "npm-audit",
"message": "eas-cli: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "expo: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "expo-asset: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "expo-constants: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "expo-linking: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "expo-router: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "minimatch: minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"severity": "high"
},
{
"type": "npm-audit",
"message": "node-forge: node-forge has ASN.1 Unbounded Recursion",
"severity": "high"
},
{
"type": "npm-audit",
"message": "postcss: PostCSS has XSS via Unescaped </style> in its CSS Stringify Output",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "tar: Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in node-tar Extraction",
"severity": "high"
},
{
"type": "npm-audit",
"message": "tmp: tmp has Path Traversal via unsanitized prefix/postfix that enables directory escape",
"severity": "high"
},
{
"type": "npm-audit",
"message": "uuid: uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "xcode: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "yaml: yaml is vulnerable to Stack Overflow via deeply nested YAML collections",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-06-05T08:07:50.236Z",
"npmAuditRan": true,
"pipAuditRan": true
}No comments yet. Be the first to share your thoughts!
Download · Website · What's new
Crew44 turns the AI agents you already run — Claude Code, Codex, Gemini, Cursor, and more — into a coordinated team. Instead of one generalist agent re-explaining context to itself all day, you assemble specialists, bind each to the model that wins at its job, and let them hand work off to each other inside one shared workspace.
Everything runs on your machine. State is plain files under ~/.crew44/. No cloud account, no subscription, no telemetry — the only network traffic is whatever your underlying coding agent already makes.
https://github.com/user-attachments/assets/ce6e5293-6c58-4c37-8e00-74d654d2277c
Grab a signed desktop build for your platform — free, no account required:
| Platform | Format |
|----------|--------|
| macOS (Apple Silicon) | .dmg |
| Windows (x64) | .exe installer |
| Linux (ARM64) | .AppImage / .deb |
Prefer to build it yourself? See Getting started.
| The old way — one agent | With Crew44 — a crew of specialists |
|-------------------------|----------------------|
| A new contractor every morning: never seen your repo, never learned your conventions. | Per-project memory. Monday's fix is in the crew's muscle memory by Thursday. |
| Skills never compound — whatever it figured out is gone by next task. | Skills that compound. Capture a workflow once as SKILL.md; every agent you attach it to gets it on every turn, across providers. |
| One generalist plans, builds, and reviews — no deep expertise in any role. | Specialists in parallel. Planner drafts while builder codes while reviewer checks. Handovers ship the baton, not the whole context. |
| Locked to a single model: pays Opus rates for a rename, runs a fast model on a hard call. | The right model per role. Opus plans, GPT-5.5 codes, a local model reviews — swap per task, not per app. |
Crew44 detects and routes to any of these installed on your machine:
Claude Code · Codex · Cursor Agent · Gemini CLI · Hermes · Kimi · OpenCode · OpenClaw · Pi · Qoder · Qwen Code
The same skills folder runs across every provider, so you're never locked in. Have another CLI? The runtime layer is a small Go interface — add an adapter under daemon/internal/backendagent/ and it shows up in the picker.
| Concept | What it is |
|-----------|---------------------------------------------------------------------------------------------------------|
| Runtime | A coding-agent CLI on disk (Claude, Codex, Cursor, …) discovered by scanning. |
| Agent | A named persona bound to one runtime + model, with an instruction and attached skills. |
| Skill | A file-based capability (SKILL.md + assets) injected into the runtime session when its agent runs. |
| Project | A working directory plus the chats that belong to it. Stored under Documents/Crew44/ or a folder you pick. |
| Chat | A turn-by-turn thread. One in-flight response at a time; events are an append-only events.jsonl. |
| Worktree | An optional isolated git checkout for a chat. Toggle it on a new task and the crew works on its own crew/… branch without touching your working tree. |
| Handover | A marker an agent emits to pass the turn to a teammate, with a one-line brief. |
The default crew ships with a Partner, an Engineer, a Product Lead, and a Designer — each owning a role, a model, and its own skills folder.
┌─────────────────┐ WebSocket JSON-RPC ┌──────────────────┐ spawn ┌─────────────────┐
│ Electron / UI │ ◄───────────────────► │ Go daemon │ ──────────► │ agent CLIs │
│ React 19 │ │ 127.0.0.1 │ │ (claude, codex,│
└─────────────────┘ └──────────────────┘ │ cursor, …) │
│ └─────────────────┘
▼
~/.crew44/ (plain-file state)
daemon/. Owns runtime discovery, agent/skill/chat state, and the JSON-RPC + event-stream surface. Auth is a per-launch bearer token; only /health is unauthenticated.src/. Routes for Crew (agents, skills, runtimes), Tasks (chat threads with live streaming), New Task, Auto (suggestions), and Onboarding.packages/mobile/ pairs over an end-to-end encrypted Noise tunnel through a small relay, so you can read or nudge a running crew from your phone.127.0.0.1. Crew44 itself does not call out to any remote service.claude, codex, …) makes on its own — including the on-demand headless browser, which fetches its Playwright package and Chromium via npm and visits the URLs the agent navigates to.claude, codex, cursor, …)npm install
npm run dev
This builds the Go daemon, starts Vite, launches Electron, and connects the renderer once the daemon reports healthy.
.
├── electron/ Electron main process, preload, app assets
├── src/ React renderer
├── packages/mobile/ Expo mobile app
├── daemon/ Go module
│ ├── cmd/crew44-daemon daemon entrypoint
│ ├── internal/ app, rpc, httpapi, store, runtime, agent adapters
│ └── test-utils/
├── docs/ manual e2e harnesses + design notes
└── public/ renderer static assets
npm run dev # development app
npm run build # renderer build + local app
npm run web:dev # daemon + bare Vite development server
npm run test # Go tests + renderer tests + mobile tests
npm run clean # remove local build artifacts
Daemon configuration via env vars:
| Variable | Default | Description |
|-----------------------------------------------|----------------------------------------|----------------------------------------------------------|
| HOST / CREW44_DAEMON_HOST | 127.0.0.1 | TCP listen host. |
| PORT / CREW44_DAEMON_PORT | 8080 | TCP listen port. |
| AUTH_TOKEN / CREW44_AUTH_TOKEN | empty | WebSocket bearer subprotocol token. Empty = dev mode. |
| CREW44_STATE_DIR | ~/.crew44 | Root directory for persisted state. |
When auth is enabled, /rpc requires WebSocket subprotocols:
new WebSocket("ws://127.0.0.1:8080/rpc", [
"crew44.rpc.v1",
`crew44.bearer.${token}`,
])
See the JSON-RPC method list and skill-injection walkthrough in docs/.
MIT © 2026