Skip to main content
Your sandboxes get the AI credentials of a credential profile: Claude and ChatGPT sign-ins, API keys, and custom APIs. With the AI credentials proxy on, a sandbox gets placeholder keys, and the real keys stay with Boat. The profile and proxy calls need an API key with account.admin. Account usage needs account.read. Sandbox usage needs box.read on that sandbox.

Credential profiles

A credential profile is a named set of AI credentials. Boat encrypts it at rest. The API never returns a secret value: it lists which credentials a profile holds (connected) and the names of its custom APIs. Each account has one default profile. A sandbox gets the default profile of its owner, unless its environment names another profile. The credentials you had before profiles existed are now the profile named default. On the dashboard Agents & Proxying page, pick a profile at the top. Both tabs then show and edit only that profile: its sign-ins and keys, its proxy switch, its custom APIs and its usage. You can remove any credential with rm-key. A sign-in sent to set-key returns 400 not_an_api_key.

Use several Claude or ChatGPT accounts

To switch between two accounts, keep one profile per account and make one of them the default.
  1. Create a second profile.
  2. Make it the default.
  3. Sign in to the second account on the dashboard Agents & Proxying page. The sign-in goes into the new default profile.
  4. To switch back, make the first profile the default again.
Sandboxes that use the owner’s default switch to the new default at their next start. Name a profile on an environment to pin it (see Environments).

Set and remove API keys

--copy-from starts a new profile with a copy of the API keys and custom APIs of a profile you manage. Sign-ins are not copied: one sign-in in two profiles would sign itself out at the first renewal. Sign in again on the new profile. The CLI reads a key from stdin when you omit the value, so the key stays out of your shell history.
Running sandboxes that use the profile get a changed key. You cannot delete a default profile (409 is_default) or a profile that an environment names (409 in_use).

Organization profiles

An organization can own profiles too. Every active member can use them. Only organization owners create and change them. In a profile list, owner.kind is org and canManage tells you if you can change it.
To give a team’s sandboxes the organization profile, name it on an organization environment. See Organizations & teams.

Custom APIs

A custom API is a secret for any HTTPS API, such as Stripe or your own service. You give it a name, a value and a base URL. The sandbox gets two variables: The name is an environment variable name: A-Z, 0-9 and _, up to 64 characters. Provider names (ANTHROPIC_*, OPENAI_*, AWS_*, and so on) and names that end in _BASE_URL are reserved. The base URL must use HTTPS on the default port, with a public DNS name.
Code in the sandbox must send its requests to $<NAME>_BASE_URL. With the proxy on, a request sent straight to the API with the placeholder fails.

The AI credentials proxy

Without the proxy, a sandbox holds your real keys and sign-ins. Anyone with a shell in it can copy them. With the proxy on, the real keys never enter the sandbox.
  • A placeholder is worthless outside Boat. It does not contain the real key.
  • A copied placeholder stops working when the sandbox stops. Each start gives the sandbox new placeholders.
  • The proxy sends each credential only to its own provider. An Anthropic key never goes to another host.
  • Boat renews Claude and ChatGPT sign-ins behind the proxy. The sandbox never sees a renew token.

What the proxy covers

Bedrock signs each request with AWS keys, so there is nothing to swap. The Kimi Code CLI renews its sign-in itself. While the proxy is on, Boat withholds these credentials from sandboxes. Use a Moonshot API key in place of the Kimi sign-in.

Turn it on

The switch is per account: one for you, one for each organization. Only an organization owner can change the organization switch. On the dashboard, open Agents & Proxying, then the Proxying tab. It holds the switch, the custom APIs and the AI usage, for the account in view: you, or the organization you selected. A sandbox goes through the proxy when either switch is on:
  • the switch of the account that owns its credential profile, or
  • the switch of the organization that pays for the sandbox. An organization can make sure that no real key enters its sandboxes, whoever’s profile they use.
Running sandboxes switch at their next start. Stop and resume a sandbox to switch it now.
The proxy applies to sandboxes that use a profile of an account with the switch on. A sandbox that uses an organization profile follows the organization switch.

Safe for third parties, with AI credentials

An environment marked safe for third parties passes nothing of yours. Turn on proxyAiCredentials on that environment to still pass AI credentials, as placeholders. The sandbox user can run the agents, but cannot take your keys. You can block the sandbox at any time. proxyAiCredentials needs the proxy on for the account that owns the profile. If it is off, the call returns 400 ai_proxy_off.

Environments

An environment can name the profile its sandboxes get, with credentialProfileId (an id or a name). null, or --credential-profile default in the CLI, means the default profile of the sandbox owner. Like every environment change, this makes a new version. Running sandboxes move at boat env upgrade. See Environments.

Usage

For each proxied sandbox, Boat counts requests and errors, and the tokens per UTC day, credential and model. The token counts are the numbers the provider reports in its replies: input, output, cache read and cache write. A sandbox that holds real keys has no usage here, because its requests do not go through Boat.
The account view covers the wallet in scope: your own, or an organization with --org, org or X-Boat-Org.

Block a sandbox

Block a sandbox to stop its AI requests at once, running or stopped. The proxy refuses its placeholders with 403. Unblock it to accept them again. Blocking has no effect on a sandbox that holds real keys (proxy off). The sandbox creator and the managers of its profile can block it.

Pricing

Profiles, custom APIs and usage tracking are free. The proxy costs money, paid in Boat time like named snapshots: dollars in the usage responses is the request charge for the period. The provider bills your tokens as usual, on your own provider account.