> ## Documentation Index
> Fetch the complete documentation index at: https://docs.boat.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Accounts & sign-in

> Sign-in methods, reinstalling or using a second machine, and which surface (CLI, API, SDKs, dashboard) does what.

## Sign-in methods

GitHub, Google and an emailed 6-digit code are three ways in, on both the CLI and the [dashboard](https://boat.dev/dashboard). None of them is the "real" one: pick whichever you like, and you can add the others later.

```bash theme={null}
boat login                          # asks: github, google, or email
boat login --google
boat login --email you@example.com
```

Each method you use is a **connection** on your account, listed under [Dashboard > Account](https://boat.dev/dashboard?tab=account). They all open the same account, with the same sandboxes, settings and billing. Add or remove them at any time, as long as one remains. The connection marked **primary** decides which address receives account notifications, so making another one primary is how you change that address.

<Note>
  Signing in with a method that is not yet connected creates a **separate** account, even when the email address matches. To use a second method on an account you already have, sign in the way you always do and add the connection from the Account tab. Moving a connection between two existing accounts is a merge, which is support-side only.
</Note>

Signing in with Google or email does not give Boat any access to your code. Cloning [repositories](/environments#repositories) needs a GitHub connection, which you can add whenever you first want one.

## Reinstalling, or a second machine

Your plan, environment, sandboxes and settings live on your account, not on the machine. Reinstalling Boat, or installing it on a new computer, only needs that machine signed in:

```bash theme={null}
boat onboard   # or: boat login
```

Sign in the same way you did the first time and `boat onboard` picks up the account you already have: it skips every step that account has finished, and does **not** open Stripe Checkout when your plan is active.

<Note>
  Use the same sign-in method as before. A method that has never been connected to your account opens a **separate** one, with its own empty plan, which is the usual reason a reinstall looks like it is asking you to subscribe again.
</Note>

## What the sandboxes are for

Onboarding asks whether the sandboxes are for your own work, or for a platform of yours driven by third-party users. The second is the default, and it marks your environment [safe for third parties](/environments#safe-for-third-parties) so none of your credentials reach those sandboxes. Change it any time from [Dashboard > Environment](https://boat.dev/dashboard?tab=environment).

## Four ways to drive Boat

Everything is the same platform behind four front doors. Code examples across these docs come as **CLI**, **curl**, **TypeScript** and **Python** tabs; pick your tab once and the rest of the page follows it.

|                                                                   | Use it for                                                       | Auth                              |
| ----------------------------------------------------------------- | ---------------------------------------------------------------- | --------------------------------- |
| **CLI** (`boat`)                                                  | your terminal, CI jobs, shell scripts, and from inside a sandbox | browser sign-in or `BOAT_API_KEY` |
| **REST API**                                                      | any language, webhooks, anything the SDKs do not cover yet       | `BOAT_API_KEY`                    |
| **SDKs** ([Python](/sdks/python), [TypeScript](/sdks/typescript)) | typed calls from your own service                                | `BOAT_API_KEY`                    |
| **[Dashboard](https://boat.dev/dashboard)**                       | one-off work, and the things that must not be automatable        | browser sign-in                   |

They are not identical, and the differences are deliberate:

| Only in the dashboard                                                                                                                                                                                      | Only in the CLI                                             | Only in the API and SDKs                                                                                       |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| [Webhook delivery history](/webhooks), [organization membership and invites](/billing#organizations), sign-in connections, per-sandbox metrics, [closing your account](/data-retention#close-your-account) | interactive SSH, SCP, port forwarding, `boat snapshot pull` | editing a webhook in place (`PATCH /webhooks/{webhookId}`), reading and writing files in a sandbox without SSH |

Creating, rotating and revoking [API keys](/api-keys) and turning on [zero data retention](/data-retention) need a browser sign-in on either the CLI or the dashboard, and are refused to an API key on purpose.

An agent can also sign itself in and claim a human: see [Agent sign-in](/agent-auth).
