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

# Authentication

> Log in to Danube and configure API keys for the CLI.

## Device Code Login

The simplest way to authenticate. Opens your browser to authorize the CLI:

```bash theme={null}
danube login
```

This displays a code like `AB12-CDEF`, prompts you to press Enter to open your browser, and waits for you to authorize. Once authorized, your API key is saved to `~/.danube/config.json`.

## API Key Login

If you already have an API key (e.g. from the dashboard), save it directly:

```bash theme={null}
danube login --api-key YOUR_API_KEY
```

The key is validated against the API before saving.

## Environment Variable

Set `DANUBE_API_KEY` to skip the config file entirely. Ideal for CI/CD:

```bash theme={null}
export DANUBE_API_KEY=YOUR_API_KEY
danube search "send email"
```

## Per-Command Override

Pass `--api-key` on any command:

```bash theme={null}
danube search "send email" --api-key YOUR_API_KEY
```

## Config File

The CLI stores credentials in `~/.danube/config.json` (permissions `600`):

```json theme={null}
{
  "profiles": {
    "default": {
      "api_key": "YOUR_API_KEY"
    }
  }
}
```

## Named Profiles

Use profiles for multiple accounts:

```bash theme={null}
# Login to a named profile
danube login --profile work

# Use that profile
danube search "send email" --profile work

# Check active identity
danube whoami --profile work

# List all profiles
danube config profiles
```

## Priority Order

API key is resolved in this order:

1. `--api-key` flag (highest)
2. `DANUBE_API_KEY` environment variable
3. Config file (`~/.danube/config.json`)

## Commands

| Command                               | Description                               |
| ------------------------------------- | ----------------------------------------- |
| `danube login`                        | Authenticate via browser device code flow |
| `danube login --api-key YOUR_API_KEY` | Save an existing API key                  |
| `danube logout`                       | Remove stored credentials                 |
| `danube whoami`                       | Show current identity                     |

## Troubleshooting

<AccordionGroup>
  <Accordion title="'No API key found' error">
    Run `danube login` to authenticate, or set `DANUBE_API_KEY` environment variable.
  </Accordion>

  <Accordion title="Browser doesn't open during login">
    Copy the verification URL from the terminal output and open it manually.
  </Accordion>

  <Accordion title="Login times out">
    The device code expires after 10 minutes. Run `danube login` again to get a new code.
  </Accordion>
</AccordionGroup>
