CrowdCompute is a modular, plugin-based distributed computing framework that allows you to offload heavy processing tasks—like password cracking or data sorting—to a network of lightweight worker nodes.
- Plugin Architecture: Extend with new job types (ML training, rendering, etc.).
- Docker-outside-of-Docker (DooD): Workers spawn sibling containers for heavy tasks.
- Generic Coordinator: Manages job queues, storage, and scheduling.
- Smart Distribution: Supports sharding, parallel execution, and Map→Reduce flows.
Install the following on all machines (Coordinator + Workers):
- Docker
- Docker Compose
- Python 3.11+ (optional, for submitting test jobs)
Workers must connect to the Coordinator through its IP.
On the machine running the Coordinator:
- macOS/Linux:
ifconfig - Windows:
ipconfig
Use this IP wherever <COORDINATOR_IP> is shown.
CrowdCompute relies on environment variables stored in .env or .env.local.
You must update these values on both Coordinator and Worker machines.
COORDINATOR_BASE_URL=http://<COORDINATOR_IP>:8000
NOT_TEST_URL=http://<COORDINATOR_IP>:8000
COORDINATOR_URL=http://<COORDINATOR_IP>:8000
NOT_TEST_URL=http://<COORDINATOR_IP>:8000
❗ Do not leave NOT_TEST_URL="your_coordinator_url" unchanged — workers will not connect.
This must be set to the actual Coordinator URL.
Required only if you will run password-cracking jobs.
Run this once on every Worker machine:
./build_images.shThis builds the optimized plugin image:
crowd-hashcat-cpu:latest
Easiest way to test everything:
docker-compose up --buildThis starts:
- 1 Coordinator
- 1 Worker
- Shared internal Docker network (
crowd-net)
Deploy Coordinator and Workers on different machines in the same network.
docker build -t coordinator -f core/coordinator/Dockerfile .docker run --rm \
--name coordinator \
-p 8000:8000 \
-v "$(pwd)/file_storage:/app/file_storage" \
coordinatorThe .env file provides the Coordinator URL — no -e flags needed.
docker build -t worker -f core/worker/Dockerfile ../build_images.shdocker run --rm \
--name worker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v crowdcompute_hashcat_cache:/root/.hashcat \
workerImportant Flags:
-v /var/run/docker.sock:/var/run/docker.sock→ Required for plugin containers-v crowdcompute_hashcat_cache:/root/.hashcat→ Optional cache for faster Hashcat runs
echo "password123" > demo_wordlist.txt
echo "secret" >> demo_wordlist.txt
echo "hashcat" >> demo_wordlist.txt
echo "admin" >> demo_wordlist.txtIn submit_hashcat.py, update:
COORDINATOR_URL="http://<COORDINATOR_IP>:8000"
Then run:
python submit_hashcat.pypython test.py sort_map demo_wordlist.txt --chunks 4core/coordinator/ → FastAPI coordinator service
core/worker/ → Generic worker agent
core/plugins/
hashcat.py → Hashcat plugin
sort_map.py → Map step for sorting
sort_reduce.py → Reduce step for sorting
core/images/ → Dockerfiles for plugin containers
file_storage/ → Uploaded files + task results
- Ensure the Worker can reach the Coordinator:
ping <COORDINATOR_IP> - Check firewall permissions for port 8000.
You forgot:
./build_images.shYou likely forgot this mount:
-v /var/run/docker.sock:/var/run/docker.sock