Get started with Aperture
You can purchase tokens directly within Aperture. To use your own API keys with Aperture on a plan other than the personal Tailscale plan, contact sales.
Sign up for Aperture, configure an LLM provider, and send a test request. To learn what Aperture does, refer to What is Aperture?.
Prerequisites
Before you begin, confirm you have the following:
-
An API key from an LLM provider's developer platform. Aperture supports OpenAI, Anthropic, Google Gemini, OpenRouter, Amazon Bedrock, the Gemini Enterprise Agent Platform, and OpenAI-compatible providers. Refer to Supported providers and clients for API formats and setup requirements. Get an API key from the provider's developer portal (for example, the Anthropic Console, OpenAI Platform, or Google AI Studio).
You can also use a subscription plan through passthrough mode. Plans such as Claude Pro, ChatGPT Plus, or Gemini Advanced provide OAuth tokens rather than developer API keys. Aperture forwards the client's
Authorizationorx-api-keyheader. If the client sends neither header, Aperture uses the configured provider key. -
A device connected to your tailnet. Aperture listens at
http://<aperture-hostname>in your tailnet. Your device must be running Tailscale and connected to the same tailnet as your Aperture gateway. If you need to connect a device that is not in the tailnet, refer to connect devices outside your tailnet.
Step 1: Sign up for Aperture
- Visit
aperture.tailscale.comand complete the sign-up form. If you don't have a Tailscale account, the sign-up process creates a free one for you. - Open
http://<aperture-hostname>/and confirm that the Aperture web portal loads. If you are an Aperture admin, you can open the admin dashboard athttp://<aperture-hostname>/admin/.
Step 2: Configure an LLM provider
Adding a provider is an admin task. You can use either the visual Providers page or the JSON Configuration editor.
Visual editor:
Open the Aperture admin dashboard and go to Administration > Providers.
Fill in the provider name, base URL, API key, and model list through the form interface.JSON editor:
Open the Aperture admin dashboard and go to Administration > Configuration.
Paste or write the configuration directly. The following example configures Anthropic with two Claude models:{
"providers": {
"anthropic": {
"baseurl": "https://api.anthropic.com",
"apikey": "<anthropic-api-key>",
"models": [
"claude-sonnet-5-5",
"claude-opus-5-5"
],
"authorization": "x-api-key",
"compatibility": {
"anthropic_messages": true
}
}
}
}
For provider-specific instructions, refer to Set up LLM providers. For all available settings, refer to the configuration reference.
The default configuration includes subscription passthrough providers rather than shared API keys. To use your own API key, configure a provider as shown above.
Step 3: Send a test request
The examples below use a shared provider key configured in the gateway. The Anthropic example matches step 2. To use an OpenAI example, configure a provider that supports its API format and model.
For a passthrough provider without a fallback key, you must also send provider credentials. Follow the passthrough setup instructions for the required Authorization or x-api-key header.
Anthropic API format:
curl -s http://<aperture-hostname>/v1/messages \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 25,
"messages": [{"role": "user", "content": "respond with: hello"}]
}'
OpenAI Chat Completions API format:
curl -s http://<aperture-hostname>/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [{"role": "user", "content": "respond with: hello"}]
}'
OpenAI Responses API format:
curl -s http://<aperture-hostname>/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"input": [{"role": "user", "content": "respond with: hello"}]
}'
If the request succeeds, Aperture is routing to your provider. Open Sessions at http://<aperture-hostname>/sessions to find the request in your personal history. Aperture admins can also inspect it on the Logs page of the admin dashboard.
If your device is not in the tailnet, connect through an Aperture CLI bridge or ts-unplug and replace http://<aperture-hostname> with http://localhost:<port-number> in the examples above.
Next steps
After the test request succeeds:
- Grant users access to models so team members can send requests through Aperture.
- Set up LLM clients to route traffic from tools such as Claude Code or Codex through Aperture.
- Use Aperture Chat to let users talk to models directly from their browser.
- Set spending limits to control costs across your organization.
- Connect devices outside your tailnet if team members need access from devices that aren't in the tailnet.
- Proxy MCP servers and HTTP APIs to give AI agents authenticated access to external tools through Aperture.