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 on your tailnet at
http://<aperture-hostname>. 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. - Confirm that your device can reach the Aperture dashboard at
http://<aperture-hostname>/ui/.
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 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 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-4-6",
"claude-opus-4-8"
],
"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.
If you skip this step, Aperture uses a default configuration that includes OpenAI and Anthropic with common models. You still need to add your own API keys before requests can succeed.
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-4-6",
"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 the Aperture dashboard at http://<aperture-hostname>/ui/ to check the request in your usage history.
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.
- Set up the chat UI 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.