# Quickstart

> Get started with Shelve in minutes.

<steps level="3">

### Create an account

Sign up for a Shelve account on [Shelve](https://app.shelve.cloud) <prose-icon name="custom:shelve">



</prose-icon>

 . Or if you prefer to self-host, follow the instructions in the [Self-hosting](/docs/self-hosting/vercel) guide. Once you have an account, complete the onboarding process to create your first team (workspace).

![login](/docs/login.png)

### Install the Shelve CLI package

<code-group sync="pm">

```bash [pnpm]
pnpm add -D @shelve/cli
```

```bash [yarn]
yarn add -D @shelve/cli
```

```bash [npm]
npm install -D @shelve/cli
```

```bash [bun]
bun add -D @shelve/cli
```

</code-group>

<callout>

You can also install the CLI globally using the `-g / --global` flag of your package manager.

</callout>

### Connect the CLI to your account

You will need a token to authenticate the CLI with your account. You can generate a token in your account settings on the [Shelve App](https://app.shelve.cloud/user/tokens). Once you have your token, run the following command in your terminal:

```bash [terminal]
shelve login
```

This will prompt you to enter your token. Once you have entered your token, you will be logged in and ready to use the CLI.

<card>
<accordion>
<accordion-item icon="i-lucide-badge-help" label="Can I use the CLI with my self-hosted instance?">

Before running the `shelve login` command, you can set the URL of your self-hosted instance in a manually created `shelve.json` file in the root of your project. The file should look like this:

```json [shelve.json]
{
  "url": "https://your-instance-url.com"
}
```

</accordion-item>

<accordion-item icon="i-lucide-users" label="Can i use the CLI with multiple accounts?">

No, the CLI only supports one account at a time. If you need to switch accounts, you will need to log out and log back in with the new account.

</accordion-item>

<accordion-item icon="i-lucide-refresh-cw" label="Can I use the CLI in a CI/CD pipeline, for example GitHub Actions?">

Yes. Create a scoped, expiring [API token](/docs/core-features/tokens) and expose it as `SHELVE_TOKEN` in your CI secrets. The CLI reads it directly — no `shelve login` needed. Pair it with `shelve run -- <your command>` to inject variables without writing a `.env` file on the runner.

</accordion-item>

<accordion-item icon="i-lucide-search" label="What if I forget my token?">

If you forget your token, you can always generate a new one in your account settings on the [Shelve App](https://app.shelve.cloud/user/tokens).

</accordion-item>
</accordion>
</card>

<note to="/docs/cli/create">

You can now start using the CLI to manage your secrets. Check out the [CLI documentation](/docs/cli) for more information.

</note>
</steps>
