Run tasks on your own hardware.
In the workspace
Toggle to "Private" when running an app:
1Run on: [○ Cloud] [● Private]Via API
1result = client.run({2 "app": "my-app",3 "input": {...},4 "infra": "private"5})Use infra: "private_first" when you want private workers when available, with automatic cloud fallback:
1result = client.run({2 "app": "my-app",3 "input": {...},4 "infra": "private_first"5})Specific workers
Target exact workers:
1result = client.run({2 "app": "my-app",3 "input": {...},4 "infra": "private",5 "workers": ["my-server-gpu-0"]6})Agents on private
Agents can use private workers too.
When an agent calls a tool, it respects your infra setting.
Monitoring
Check your engines at Engines:
- Online/offline status
- Resource usage
- Running tasks
- Drain / Update — graceful maintenance (see Updating)
To drain or upgrade an engine without killing in-flight tasks, see Managing engines.
Use Drain before maintenance or Update for a safe binary upgrade (in-flight tasks finish first). The same operations are available via the Engines API or client.engines.drain() / client.engines.updateBinary() in the JavaScript SDK.
Caching
The engine caches:
- App code
- Downloaded models
- Container images
Second runs are much faster.
Next
| Guide | Topic |
|---|---|
| Managing engines | Drain, update, and restart |
| Configuration | Engine and worker settings |
| Why private? | When to use your own hardware |