Poly Hammer self-hosted GPU worker agent
Project description
ph-worker — Poly Hammer Self-Hosted GPU Worker
A CLI agent that connects your GPU workstation to the Poly Hammer Portal, letting you run AI inference jobs on your own hardware instead of consuming cloud credits.
Requirements
- NVIDIA GPU with CUDA drivers installed
- Docker with NVIDIA Container Toolkit (
--gpussupport) - Python 3.11+
- An active Poly Hammer Portal account with a registered worker key
Installation
cd workers/self-hosted/client
uv sync
Quick Start
1. Check GPU compatibility
ph-worker check-gpu
This will display your GPU model, VRAM, CUDA version, CPU cores, and RAM.
2. Register a worker in the Portal
Navigate to the Workers page in the Poly Hammer Portal and click Add Worker. You'll receive a worker key (ph_worker_...) — save it, it's shown only once.
3. Start the worker
ph-worker start --worker-key ph_worker_XXXXXXXX
Or use environment variables:
export PH_WORKER_KEY=ph_worker_XXXXXXXX
export PH_PORTAL_URL=https://portal.polyhammer.com # default
ph-worker start
The worker will:
- Detect your GPU/CUDA capabilities
- Send heartbeats to the portal
- Long-poll for inference jobs
- Pull the correct Docker image (tagged by CUDA version) on first job
- Run inference in an isolated container with GPU access
- Upload results and report completion
How It Works
Portal API ←→ ph-worker agent ←→ Docker (GPU container)
│ │
├── heartbeat (60s) ├── JSON stdin (job)
├── poll for jobs ├── JSON stdout (progress)
├── report progress └── S3 upload (result)
└── report complete/fail
- Images are pre-built with model weights baked in — no download delays at inference time
- CUDA-versioned tags (
cuda13.1, etc.) ensure compatibility with your local drivers - Dynamic pulling — the worker automatically pulls the right image when it receives a job for a model it hasn't run before
Configuration
| Option | Env Var | Default | Description |
|---|---|---|---|
--worker-key |
PH_WORKER_KEY |
(required) | Worker API key from the portal |
--portal-url |
PH_PORTAL_URL |
https://portal.polyhammer.com |
Portal API base URL |
Docker Image Tags
Worker images are published to GHCR with CUDA-versioned tags:
| Image | Tag | Description |
|---|---|---|
ghcr.io/poly-hammer/hy-motion-worker |
cuda13.1 |
HY-Motion models (latest stable) |
ghcr.io/poly-hammer/mdm-worker |
cuda13.1 |
MDM models (latest stable) |
cuda13.1-<sha> |
Pinned to a specific commit | |
latest |
Latest build (any CUDA version) |
Troubleshooting
"No CUDA detected"
- Ensure NVIDIA drivers are installed:
nvidia-smi - The NVIDIA Container Toolkit must be installed for Docker GPU support
Container fails to start
- Verify Docker GPU support:
docker run --rm --gpus all nvidia/cuda:13.1.0-base-ubuntu22.04 nvidia-smi - Check Docker daemon is running:
docker info
Worker shows OFFLINE in portal
- Heartbeats are sent every 60 seconds; the portal marks workers offline after 120 seconds
- Check network connectivity to the portal URL
- Verify your worker key is correct
Development
cd workers/self-hosted/client
uv sync --group dev
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file poly_hammer_worker-0.1.0.dev5.tar.gz.
File metadata
- Download URL: poly_hammer_worker-0.1.0.dev5.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e9936cac8c222b37c0de0af9c75e2fb57a41cf5e090d79a5cdb9c4ac8e9e9df
|
|
| MD5 |
0bab0881eb6533429a564acb8902eee7
|
|
| BLAKE2b-256 |
e2c2f0a829dcb16ad3513022c8e427c2cdf2cda2fb45b06e41871d222c6edb31
|
File details
Details for the file poly_hammer_worker-0.1.0.dev5-py3-none-any.whl.
File metadata
- Download URL: poly_hammer_worker-0.1.0.dev5-py3-none-any.whl
- Upload date:
- Size: 13.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84b96b6a611f7efc7e9298284612a399ab8d2e607c174e84027b5761a503a315
|
|
| MD5 |
16309e81d3e291ac9b2e2c1d997fc252
|
|
| BLAKE2b-256 |
c0600d55be65d851b7fdbe3ca924198f2af2bdf21fe405e49d112aae8059893d
|