Install
Two binaries
| Binary | What it is | Runs on |
|---|---|---|
orchestrator-zero | The server (management, edge and embedded Temporal) and the operator CLI. A static Go binary. | Linux, macOS and Windows, amd64 and arm64 |
orchestrator-zero-node | The node. A static Go binary that installs uv, a managed Python and the agent runtime on first start. | Linux, macOS and Windows, amd64 and arm64 |
Windows on arm64 runs nodes with x86_64 Python under emulation, because Temporal's Python SDK has no arm64 build for Windows. Development and testing so far happen on Linux.
Build from source
Until the first release ships an install script and a Docker image, build both binaries and the runtime bundle from the repository:
git clone https://github.com/moon-ventures-se/orchestrator-zero.git
cd orchestrator-zero
make doctor # checks Go 1.27, uv 0.12 and buf 1.73
make build # bin/orchestrator-zero and bin/orchestrator-zero-node
make web build # the same, with the web UI built into the server (needs Node.js 24)
make dist # dist/: the node binary for each platform and the runtime bundle, for the edge to serve
With dist/ next to the server's bin/ folder (or server start --dist-dir), the edge serves new nodes everything they need: the web UI shows a single command that installs, joins and starts a node on Linux or macOS (see Join nodes). Without it, copy bin/orchestrator-zero-node to the machine and give run a bundle with --runtime-bundle (from make runtime-bundle).
What a node needs
- Outbound access to the edge on ports 7233 (Temporal, mTLS) and 7443 (HTTPS). Nothing inbound.
- Disk for uv, Python, Node.js (only when a plugin uses npm packages) and plugin environments, in the node's data directory (default
~/.local/share/orchestrator-zero-node). - Access to PyPI and npm while plugins install their dependencies. A mirror on the edge, for machines without internet, is planned.
What a cluster needs
- PostgreSQL 13 to 16, reachable from every server, with
max_connectionsof at least 100 per server. - A copy of the master key file on every server.
- Ports open between servers for Temporal's own traffic (7234 to 7236 and 7239, and 6933 to 6935 and 6939), and port 8443 for operators. See Ports.
For trying things out, dev mode needs none of this: one process on SQLite. See Dev mode.
Next
- Quickstart: an agent running on your machine.
- Run a cluster: servers on PostgreSQL.
- Join nodes: machines in the fleet.