Skip to main content

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 (--gpus support)
  • 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:

  1. Detect your GPU/CUDA capabilities
  2. Send heartbeats to the portal
  3. Long-poll for inference jobs
  4. Pull the correct Docker image (tagged by CUDA version) on first job
  5. Run inference in an isolated container with GPU access
  6. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poly_hammer_worker-0.1.0.dev5.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

poly_hammer_worker-0.1.0.dev5-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

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

Hashes for poly_hammer_worker-0.1.0.dev5.tar.gz
Algorithm Hash digest
SHA256 8e9936cac8c222b37c0de0af9c75e2fb57a41cf5e090d79a5cdb9c4ac8e9e9df
MD5 0bab0881eb6533429a564acb8902eee7
BLAKE2b-256 e2c2f0a829dcb16ad3513022c8e427c2cdf2cda2fb45b06e41871d222c6edb31

See more details on using hashes here.

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

Hashes for poly_hammer_worker-0.1.0.dev5-py3-none-any.whl
Algorithm Hash digest
SHA256 84b96b6a611f7efc7e9298284612a399ab8d2e607c174e84027b5761a503a315
MD5 16309e81d3e291ac9b2e2c1d997fc252
BLAKE2b-256 c0600d55be65d851b7fdbe3ca924198f2af2bdf21fe405e49d112aae8059893d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page