Worker
System requirements
Check this before you install. A Pendra worker runs on macOS, Windows, and Linux, with or without a GPU.
At a glance
| Requirement | |
|---|---|
| Operating system | macOS 12 (Monterey) or later, Windows 10 / Server 2016 or later, or Linux with glibc 2.38+ (Ubuntu 24.04+, Debian 13+) |
| Processor | 64-bit x86_64, or ARM64 on Apple Silicon and Linux. Intel Macs are not supported. |
| GPU | Optional, but strongly recommended. NVIDIA, AMD, Intel, or Apple Silicon — see which build to use |
| GPU driver | NVIDIA: driver R580 or newer, installed and loaded. On Linux, also the CUDA 13 runtime. AMD / Intel: your vendor's graphics driver, which provides Vulkan. Apple Silicon needs nothing. |
| Memory | Enough GPU memory for the model you install — 4 GB and up. Host RAM at least as large as your biggest GPU. |
| Disk | 4–80 GB per model, plus a few hundred MB for the worker |
| Network | Outbound HTTPS on port 443. No inbound ports. |
Before you install
Everything the worker needs to run models is bundled with it, with one exception: GPU drivers, which you install yourself. Do that first — the installer checks for the driver your chosen GPU build needs and stops if it isn't there, so a driverless host can't quietly end up running every request on the CPU.
| macOS | Windows | Linux | |
|---|---|---|---|
| Minimum version | macOS 12 (Monterey) | Windows 10 / Server 2016 | glibc 2.38+ — Ubuntu 24.04+, Debian 13+ |
| Architecture | Apple Silicon only | x86_64 | x86_64 or ARM64 |
| Install first | Nothing | NVIDIA: driver R580+, then reboot. AMD / Intel: your graphics driver | NVIDIA: driver R580+ and the CUDA 13 runtime. AMD / Intel: a Vulkan driver |
| You download | .dmg | PendraSetup.exe | apt / yum repo, .deb / .rpm, or Docker |
The install guide has the exact commands.
Every installer refuses to install a GPU build the machine can't
run, so you can't end up with a GPU that never gets used: on Linux
pendra-cuda requires the CUDA 13 runtime and
pendra-vulkan requires a Vulkan driver, and on Windows the
setup wizard won't accept a GPU option whose driver is missing or too old.
The CUDA runtime itself is bundled on Windows, so there a driver is all you
need.
Which GPU build to use
| Your GPU | Build | Notes |
|---|---|---|
| NVIDIA GTX 16-series, RTX 20/30/40/50-series, A / L / H data-centre cards | CUDA | The production recommendation. Confirm the driver with nvidia-smi — it should list your GPU and a CUDA version. |
| NVIDIA GTX 10-series and older | Vulkan | The CUDA build has no kernels for these cards. If you force CUDA onto one, models install but every request fails. |
| AMD or Intel | Vulkan | — |
| Apple Silicon | Nothing to choose | Metal acceleration is built in. |
| No GPU | CPU | Supported, but slow. Fine for embeddings and small chat models; not for 70B-class. |
Two gaps to know about if you need image generation: it isn't available on ARM64 Linux, and on Windows an NVIDIA host generates images on the CPU or through Vulkan rather than CUDA. Chat, embeddings, and transcription are unaffected.
How much memory do I need?
This is set by the model you install, not by Pendra. As a rough guide, at the default quantization:
| GPU memory | Largest model that runs comfortably |
|---|---|
| 8 GB | 8–9B — qwen3.5:9b is ~6.6 GB |
| 12 GB | 12–14B — gemma4:12b is ~7.8 GB |
| 16 GB | 20B — gpt-oss:20b is ~12 GB |
| 24 GB | 27–35B — qwen3.6:27b is ~18 GB |
| 48 GB | 70B — llama3.3:70b is ~43 GB |
| 80 GB and up | 109–123B |
Leave headroom above the model's size — the context window needs memory too. On Apple Silicon, where the GPU and CPU share one pool, budget around 70% of total memory. A few other rules:
- Give the host at least as much system RAM as your largest GPU's VRAM. Models load through memory on their way to the GPU, and a host with less has to page them in from disk, which makes cold loads slow and unpredictable.
- Vision and image models must fit on a single GPU. They can't be split across cards, so a box with 2×24 GB serves them as a 24 GB machine.
- A chat model that's too big still runs — the worker keeps what fits on the GPU and runs the rest on the CPU, more slowly. See choosing a model size.
Disk
The worker itself is small; models are what take space. Expect 4–80 GB per model. Pendra checks free space before downloading and refuses an install that wouldn't fit. Models are stored in:
| Install | Models directory |
|---|---|
| macOS, and Linux installed for one user | ~/.pendra/models |
Linux .deb / .rpm package | /var/lib/pendra/models |
| Windows | %ProgramData%\Pendra\models |
Point it somewhere with more room — a second drive, say — by setting
models_dir in the worker's
config file.
Network
The worker makes outbound HTTPS connections on port 443 to
api.pendra.ai (the connection that carries inference requests)
and get.pendra.ai (model downloads and updates).
No inbound ports need to be open — the worker never listens
on the network, so it's safe behind NAT or a restrictive firewall. Standard
HTTPS_PROXY and NO_PROXY environment variables are
honoured.
Check the machine
pendra doctor after installing. It reports a
missing or unloaded GPU driver, a GPU too old for the CUDA build, an OS whose
glibc is too old, and any model that won't fit — so you catch a host that's
quietly running on the CPU before you send it traffic.
Related
- Install the worker — the commands for each platform.
- Choosing a model size — picking a size your hardware runs well.
- Choosing a context size — how the context window is sized.
- Configuration — worker settings, including parallel requests.