If the below steps do not work out for you, it would be great if you can open an issue on GitHub.
System Requirements
- git to clone the forked repository
- Node.js 24 to run the UI (we recommend using NVM on macOS/Linux or NVM for Windows on Windows to manage your node versions locally)
- Python 3.13 to run the backend
- Docker to run the database and redis cache locally
All commands below are shown for macOS / Linux. Expand the Windows tab for the PowerShell equivalent where it differs.
Steps
- Fork the Peachdesk repository on GitHub
- Clone your fork on your machine. You can skip
--recurse-submoduleshere — the bootstrap script in the next step will initialize submodules for you.
- Run the contributor bootstrap. It configures
origin(your fork) andupstream(peachdesk-hq/peachdesk), initializes the pipecat submodule, creates the Python venv, and copies the.envtemplates. Re-running it is safe — already-configured pieces are skipped.
- Ensure you are on right version of Node.js using
node --version
- Install UI dependencies
- Start local docker services
Please ensure you dont have any other instance of conflicting services running by checking
docker ps
docker ps
- Install Python requirements. The script installs
api/requirements.txtand pipecat with the required extras. Add the dev flag if you also want the pipecat dev dependency group (pytest, ruff, pre-commit, etc.).
- Start backend services
Restarting the backend
Re-run the same start script to restart. It reads the PID files underrun/, terminates the previous services along with their descendants, and starts fresh ones.
uvicorn runs with --reload --reload-dir api, so edits under api/ are picked up automatically — no restart needed. The other services (ari_manager, campaign_orchestrator, arq) do not auto-reload; re-run the start script after changing code they execute.- Start the UI
- You should be able to open the application on
localhost:3000now
New users default to the “Peachdesk” managed provider, which needs
MANAGED_OPENAI_API_KEY, MANAGED_DEEPGRAM_API_KEY, and MANAGED_ELEVENLABS_API_KEY set in api/.env. Until they are set, calls fail with a 503. Alternatively, configure your own provider keys in /settings.Keeping your fork in sync with upstream
The bootstrap script configures two remotes:origin (your fork, where you push) and upstream (peachdesk-hq/peachdesk, where new commits land). To pull in upstream changes:
git remote -v. You should see:
Always push feature branches to
origin (your fork), then open a pull request against peachdesk-hq/peachdesk:main. Never push directly to upstream.