GPU Tunnels
BetaExpose your own GPU machine's local models as first-class API endpoints.
Run open-weight models on your own GPU and call them through the normal Tarqa API, at $0 Tarqa token cost. A small agent on your machine connects out to Tarqa and passes requests to a model server you already run locally (Ollama, LM Studio or vLLM).
The agent only makes an outbound WebSocket connection. Nothing on your machine listens for incoming traffic, so you don't need port forwarding.
The agent (packages/tunnel-agent, CLI name tarqa-tunnel) isn't on npm yet. The steps below are the current working flow.
Set it up
- 1Register the machineIn the dashboard, open Build → GPU Tunnel and click Register Agent. Give it a name, OS, GPU info and total memory. This registers the machine, not a model yet.
- 2Download the config and start the agent
The dashboard shows your Agent ID and a
tarqa-tunnel.config.jsonfilled in with your details. Save it, then run the agent on the GPU machine:cURLcd packages/tunnel-agent npm install npm run build node dist/src/cli.js start --config ~/.tarqa/tarqa-tunnel.config.json - 3Register a modelWhen the agent shows Online, click Register Model. Pick the agent, choose one of the local models it found (or type one in), and set the local endpoint, e.g.
http://localhost:11434for Ollama. - 4Use itThe model appears in the chat model picker as
hosted-<id>with a tunnel badge. Every request goes over the tunnel to your machine and back.
Call it from the API
Use the hosted-<id> shown in the dashboard (not the raw local model name) like any other model:
curl -X POST "https://api.tarqaai.com/api/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "hosted-<your-model-id>",
"messages": [{"role": "user", "content": "Hello from local GPU!"}]
}'Tool calling works too, with the same tools / tool_calls format, as long as the local server is OpenAI-compatible (LM Studio, vLLM). Ollama doesn't forward tool definitions yet.
Security
| Outbound-only | The agent only opens outbound connections. Nothing on your machine accepts incoming traffic. |
| Paired at registration | Each agent is bound to your account by a certificate thumbprint; connections without a match are rejected. |
| Private by default | Hosted models start private. Share one with your team, or make it public to your workspace, in the model's settings. |