Get started with Aperture

Last validated:
Start using 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 Authorization or x-api-key header. 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

  1. Visit aperture.tailscale.com and complete the sign-up form. If you don't have a Tailscale account, the sign-up process creates a free one for you.
  2. 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: