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 14 (Sonoma) 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 up to 2 GB for the worker (the NVIDIA build is the largest) |
| 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 14 (Sonoma) | 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
(and won't install at all on anything older than Windows 10 /
Server 2016).
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, and data-centre cards from T4 on (A / L / H series) | CUDA | The production recommendation. Confirm the driver with nvidia-smi — it should list your GPU and a CUDA version. |
| Older NVIDIA cards — GTX 10-series and earlier, and data-centre cards such as the V100 and P100 | Vulkan | The CUDA build needs compute capability 7.5 or newer and has no kernels for these cards. Run it on one and the GPU goes unused — requests either fail or fall back to the much slower CPU — and the worker's health check (and pendra doctor) reports the GPU as unsupported. Check your card with nvidia-smi --query-gpu=name,compute_cap --format=csv — anything below 7.5 needs the Vulkan build (the pendra-vulkan package, the :vulkan Docker image, or the Vulkan option in the Windows installer). |
| 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 or text-to-speech: on ARM64 Linux (an NVIDIA DGX Spark, for example) the CUDA build runs both on the GPU, but with the Vulkan build both run on the CPU, so they are much slower there than on an x86_64 GPU host; and on Windows, text-to-speech uses the GPU only with the CUDA option on an NVIDIA card, or the Vulkan option on a discrete GPU. With the CPU option, or on an integrated GPU, it runs on the CPU. Chat, embeddings, and transcription are unaffected.
On ARM64 Linux the CUDA build needs an NVIDIA GPU of the Jetson Orin or DGX Spark class or newer (compute capability 8.7 or above). Image generation does not work with the CUDA build on an older ARM64 NVIDIA card: use the CPU build there.
One gap to know about for speech-to-text: with the CUDA build, NVIDIA cards older than the RTX 30-series — the RTX 20-series, GTX 16-series, T4, A100 and A30 (compute capability below 8.6) — transcribe on the CPU. Transcription still works, just more slowly; chat, embeddings, and image generation on the same card use the GPU as normal.
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 (on a PC shared by several accounts, every account after the first uses %USERPROFILE%\.pendra\models) |
| Docker | /root/.pendra/models, inside the volume you mount at /root/.pendra (how the container uses disk) |
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.