Docs

Prerequisites & Installation

This page covers everything you need to install and configure before running CROWDio.


Prerequisites

Requirement Version / Notes
Python 3.10 or newer
Operating System Windows, Linux, or macOS
Virtual Environment Strongly recommended (.venv)
Android Studio (optional) Required only for building the Android worker

1. Clone the Repository

git clone https://github.com/your-org/CROWDio.git
cd CROWDio

2. Create a Virtual Environment

=== “Windows” powershell python -m venv .venv .venv\Scripts\activate

=== “Linux / macOS” bash python -m venv .venv source .venv/bin/activate


3. Install Dependencies

python -m pip install --upgrade pip
pip install -r requirements.txt

Option B — Editable install via pyproject.toml

pip install -e .

!!! warning “Dependency Sources” requirements.txt and pyproject.toml are not fully aligned in all environments. Use one source consistently per environment. For development, requirements.txt is the safer choice.


4. Verify Installation

Run a quick sanity check to confirm all core modules are importable:

python -c "import foreman; import pc_worker; import developer_sdk; print('OK')"

Expected output:

OK

Project Layout

CROWDio/
├── foreman/               # Orchestration server, REST API, scheduler, DB layer
│   ├── main.py            # Foreman entry point
│   ├── core/              # ws_manager, job_manager, dispatcher, handlers
│   ├── db/                # SQLAlchemy models, migrations
│   └── api/               # FastAPI route definitions
├── pc_worker/             # Desktop worker runtime
│   └── main.py            # Worker entry point
├── developer_sdk/         # Client SDK
│   ├── api.py             # Public async API surface
│   ├── client.py          # CrowdComputeClient class
│   └── decorators.py      # @crowdio.task decorator
├── common/                # Protocol, serialization, utilities
│   └── protocol.py        # Message type constants
├── evaluation/            # Benchmarking and analysis
│   └── experiments/       # Experiment modules
├── tests/                 # Quick-start runners and sample clients
├── requirements.txt
└── pyproject.toml

Default Service Ports

Service Port Protocol
Foreman REST API 8000 HTTP
Foreman WebSocket 9000 WS
Foreman Dashboard 8000 HTTP
Foreman API Docs 8000/docs HTTP
Model/Artifact Transfer 8001 HTTP (optional)

Next Step

Once dependencies are installed, head to Quick Start to run your first distributed job.