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 systemmacOS 14 (Sonoma) or later, Windows 10 / Server 2016 or later, or Linux with glibc 2.38+ (Ubuntu 24.04+, Debian 13+)
Processor64-bit x86_64, or ARM64 on Apple Silicon and Linux. Intel Macs are not supported.
GPUOptional, but strongly recommended. NVIDIA, AMD, Intel, or Apple Silicon — see which build to use
GPU driverNVIDIA: 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.
MemoryEnough GPU memory for the model you install — 4 GB and up. Host RAM at least as large as your biggest GPU.
Disk4–80 GB per model, plus up to 2 GB for the worker (the NVIDIA build is the largest)
NetworkOutbound 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.

macOSWindowsLinux
Minimum versionmacOS 14 (Sonoma)Windows 10 / Server 2016glibc 2.38+ — Ubuntu 24.04+, Debian 13+
ArchitectureApple Silicon onlyx86_64x86_64 or ARM64
Install firstNothingNVIDIA: driver R580+, then reboot. AMD / Intel: your graphics driverNVIDIA: driver R580+ and the CUDA 13 runtime. AMD / Intel: a Vulkan driver
You download.dmgPendraSetup.exeapt / 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 GPUBuildNotes
NVIDIA GTX 16-series, RTX 20/30/40/50-series, and data-centre cards from T4 on (A / L / H series)CUDAThe 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 P100VulkanThe 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 IntelVulkan—
Apple SiliconNothing to chooseMetal acceleration is built in.
No GPUCPUSupported, 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 memoryLargest model that runs comfortably
8 GB8–9B — qwen3.5:9b is ~6.6 GB
12 GB12–14B — gemma4:12b is ~7.8 GB
16 GB20B — gpt-oss:20b is ~12 GB
24 GB27–35B — qwen3.6:27b is ~18 GB
48 GB70B — llama3.3:70b is ~43 GB
80 GB and up109–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:

InstallModels 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

Run 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