# Deploy any model on your own GPU

Text, images, video and speech from Hugging Face, on vLLM, SGLang, vLLM-Omni or llama.cpp. Paste your own engine options, get an OpenAI-style endpoint with its own key and root SSH, and pay for the GPU by the hour, not per request. Start in the console's **Models** page ([/console/#/models](/console/#/models)) or with `POST /v1/deploy` ([guide](/docs/models.html.md)).

## What you can serve

- **Text and vision.** Chat, completions, embeddings and speech to text on vLLM, SGLang or llama.cpp. Any model on Hugging Face, GGUF files at any quantization included. `POST /v1/chat/completions`
- **Images.** FLUX, Qwen-Image, Z-Image and more on vLLM-Omni or SGLang Diffusion. Text to image and image editing. `POST /v1/images/generations`
- **Video.** Wan 2.2 text to video and image to video, as jobs you start, check and download. `POST /v1/videos`
- **Speech and sound.** Qwen3-TTS and CosyVoice for speech, Stable Audio for sound and music, on vLLM-Omni. `POST /v1/audio/speech`

## Popular image, video and speech models

The GPU memory each needs to serve, and the smallest GPU that holds it. Deploy any of them from the console's **Models** page. For text models, see [GPU requirements for open models](/models.html.md).

| Model | Makes | What it does | GPU memory | Engines |
|---|---|---|---|---|
| `black-forest-labs/FLUX.1-schnell` | Images | Fast text to image, 1 to 4 steps | 41 GB: one [L40S](/gpus/l40s.html.md), [RTX 6000 Ada](/gpus/rtx-6000-ada.html.md) or [RTX A6000](/gpus/rtx-a6000.html.md), L40S from $0.44 per GPU-hour | vLLM-Omni, SGLang |
| `black-forest-labs/FLUX.1-dev` | Images | Text to image | 41 GB: one [L40S](/gpus/l40s.html.md), [RTX 6000 Ada](/gpus/rtx-6000-ada.html.md) or [RTX A6000](/gpus/rtx-a6000.html.md), L40S from $0.44 per GPU-hour | vLLM-Omni, SGLang |
| `black-forest-labs/FLUX.2-klein-9B` | Images | Text to image and editing | 42 GB: one [L40S](/gpus/l40s.html.md), [RTX 6000 Ada](/gpus/rtx-6000-ada.html.md) or [RTX A6000](/gpus/rtx-a6000.html.md), L40S from $0.44 per GPU-hour | vLLM-Omni |
| `Qwen/Qwen-Image-2512` | Images | Text to image, strong at text in pictures | 70 GB: one [H100](/gpus/h100.html.md) or [A100](/gpus/a100.html.md), H100 from $2.01 per GPU-hour | vLLM-Omni, SGLang |
| `Qwen/Qwen-Image-Edit-2511` | Images | Image editing | 70 GB: one [H100](/gpus/h100.html.md) or [A100](/gpus/a100.html.md), H100 from $2.01 per GPU-hour | vLLM-Omni, SGLang |
| `Tongyi-MAI/Z-Image-Turbo` | Images | Fast text to image, 8 steps | 25 GB: one [RTX 5090](/gpus/rtx-5090.html.md), from $0.58 per GPU-hour | vLLM-Omni, SGLang |
| `Wan-AI/Wan2.2-T2V-A14B-Diffusers` | Video | Text to video, 480p and 720p | 83 GB: one [RTX PRO 6000](/gpus/rtx-pro-6000.html.md), from $1.90 per GPU-hour | vLLM-Omni, SGLang |
| `Wan-AI/Wan2.2-I2V-A14B-Diffusers` | Video | Image to video | 83 GB: one [RTX PRO 6000](/gpus/rtx-pro-6000.html.md), from $1.90 per GPU-hour | vLLM-Omni, SGLang |
| `Wan-AI/Wan2.2-TI2V-5B-Diffusers` | Video | Text or image to video, 720p, on one GPU | 28 GB: one [RTX 5090](/gpus/rtx-5090.html.md), from $0.58 per GPU-hour | vLLM-Omni, SGLang |
| `Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice` | Speech | Text to speech, preset voices | 6.0 GB: one [RTX 4090](/gpus/rtx-4090.html.md) or [RTX 3090](/gpus/rtx-3090.html.md), RTX 3090 from $0.19 per GPU-hour | vLLM-Omni |
| `FunAudioLLM/Fun-CosyVoice3-0.5B-2512` | Speech | Text to speech, voice cloning | 3.0 GB: one [RTX 4090](/gpus/rtx-4090.html.md) or [RTX 3090](/gpus/rtx-3090.html.md), RTX 3090 from $0.19 per GPU-hour | vLLM-Omni |
| `stabilityai/stable-audio-open-1.0` | Sound and music | Sound effects and music | 8.0 GB: one [RTX 4090](/gpus/rtx-4090.html.md) or [RTX 3090](/gpus/rtx-3090.html.md), RTX 3090 from $0.19 per GPU-hour | vLLM-Omni |
| `lerobot/pi05_base` | Robot policy | Vision-language-action policy (pi0.5) | 18 GB: one [RTX 4090](/gpus/rtx-4090.html.md) or [RTX 3090](/gpus/rtx-3090.html.md), RTX 3090 from $0.19 per GPU-hour | vLLM-Omni |
| `nvidia/GR00T-N1.7-3B` | Robot policy | Humanoid robot policy | 9.0 GB: one [RTX 4090](/gpus/rtx-4090.html.md) or [RTX 3090](/gpus/rtx-3090.html.md), RTX 3090 from $0.19 per GPU-hour | vLLM-Omni |

## Bring the options you tuned

Paste your flags, the whole command or a docker run line, with variables in front and JSON values in quotes. You choose them and keep them current; Arrakis keeps the address, port, key and model, and shows the start line before you rent. Change them later without a new machine: over SSH, edit `/etc/arrakis/serve` and run `arrakis-serve restart`.

```sh
VLLM_USE_DEEP_GEMM=1 vllm serve Qwen/Qwen3-8B \
  --max-model-len 32768 --enable-prefix-caching \
  --speculative-config '{"method": "eagle3", "num_speculative_tokens": 3}'
```

## Your options run. Nothing else does.

- **No shell, ever.** Your options reach the engine word for word, as its argument list. Shell syntax is refused, never run.
- **A key on every request.** A gate on the endpoint checks its API key before a request reaches the engine, which listens only inside the machine.
- **Only the GPUs you rent.** Settings that choose a machine's GPUs are refused, so a machine never reaches another renter's.
- **Your token stays yours.** Your Hugging Face token goes to the machine only. Arrakis never stores it.

## Call it like any OpenAI-style API

```python
from openai import OpenAI

client = OpenAI(base_url="http://<your endpoint>/v1", api_key="sk-...")
picture = client.images.generate(model="black-forest-labs/FLUX.1-schnell",
                                 prompt="a lighthouse at dawn", size="1024x1024",
                                 response_format="b64_json")
```

## Questions about deploying models

**Can I run FLUX or Wan on my own GPU?** Yes. In the console's Models page, pick vLLM-Omni or SGLang, name the model as Hugging Face does (black-forest-labs/FLUX.1-dev or Wan-AI/Wan2.2-T2V-A14B-Diffusers), add a Hugging Face token for a gated model, and choose a GPU it fits on. The endpoint answers at /v1/images/generations or /v1/videos.

**Which engine options can I use?** Any option your engine takes. You paste them, the engine reads them, and you keep them current with its releases. Arrakis keeps only where the engine listens, its key and the model, and refuses shell syntax and settings that choose GPUs.

**Is it serverless?** No. Each model runs on a GPU of its own, charged by the hour from when the machine runs until you stop it or its removal time comes. Once it is loaded there are no cold starts, and no charge per picture, second or token.

**How long until the endpoint answers?** Usually a few minutes: the machine starts, then the engine downloads the model and loads it. Large video models take longer. The console shows when it is ready, and the engine's log.

**Can I change the options without a new machine?** Yes. Over SSH, edit /etc/arrakis/serve/command and run arrakis-serve restart. The endpoint keeps its address and its key.

**What does it cost?** The hourly price of the GPU you choose, the same as renting it, from the cheapest machines listed now. Nothing per request.
