Skip to content

FAQ

No. You need an SSH client and a key. ssh turm.dev signs you up.

Add its key from a computer that already works, then activate it. See SSH keys.

Yes. The disk stays until you rm the VM. See Persistent disks.

Why is my VM’s URL asking me to sign in?

Section titled “Why is my VM’s URL asking me to sign in?”

New VMs are private. Use share set-public, share add or share add-link. See HTTPS and sharing.

Do I need an OpenAI or Anthropic key for coding agents?

Section titled “Do I need an OpenAI or Anthropic key for coding agents?”

No, for pi, Codex, OpenCode and Claude Code. The VM points them at the LLM gateway. You can switch one of those agents to your own key, or to a subscription login that runs inside the VM. The key stays on the server. A subscription token stays in the VM. Agents that do not use the gateway are Gemini and Aider. Set GEMINI_API_KEY or GOOGLE_API_KEY for Gemini. Aider needs your own key. An account with no paid plan, including a trial, cannot call the gateway unless an admin sets a limit. A paid plan can call it, up to the monthly budget on that plan. The gateway meters usage to the account that owns the VM.

Your own key is stored encrypted on the server, one per provider, and shared by every VM. The gateway uses it when a request names that provider (openai/gpt-4.1, anthropic/claude-sonnet-4-5, and the same shape for Groq, xAI, OpenRouter, Mistral and DeepSeek). That usage is recorded for you and is not billed, and it does not count against the plan budget. For each provider you can keep the included gateway, use your key, call your own HTTPS endpoint, or turn that provider off. The choice is the account default, or one VM. There are no VM tags. A custom endpoint speaks the OpenAI chat API. The VM still calls the gateway, and the secret stays on the server.

Inside a VM, http://169.254.169.254/latest/llm lists that VM’s name, each active source, and its model ids. Each source includes a curl line. The response has no secrets. pi can read that URL.

A subscription login runs the agent’s own unmodified login inside the VM. We do not read the token. A ChatGPT subscription is not sent through the gateway. Claude Code: run claude, then /login. Codex: codex login --device-auth inside the VM. We do not run that login on our servers. OpenCode: opencode auth login, and do not use a Claude subscription there. pi: run pi, then /login, and do not sign in with a Claude subscription. Use the claude command for a Claude subscription. The browser agent uses the included gateway, so set pi back to gateway before using the web console.

Terminal window
ssh turm.dev llm keys add openai -
ssh turm.dev auth demo claude-code subscription
ssh turm.dev auth demo pi both

both is only for pi and OpenCode. It keeps the included gateway and adds a model for each key you have stored. Claude Code and Codex take one mode at a time.

Yes. Add --json to any command, or use the HTTPS API and MCP server.

One today: fsn1, in Falkenstein, Germany. More regions are coming soon.

Not yet. This is coming soon.