# namera login

> Documentation index: [llms.txt](https://namera.ai/llms.txt).

Source: https://namera.ai/docs/cli/reference/authentication/login

Authorize a terminal connection through your browser.

Authorize a terminal connection through your browser.

## Usage [#usage]

```sh
namera login
```

## Output [#output]

<div className="docs-response">

```text
OK Signed in as "personal".
-> Run namera wallet list to see your wallets.
```

</div>

Example output uses fixture accounts and hashes, captured with the CLI's output
formatters. Plain-text output is shown without terminal colors; your values and
relative expiry dates will differ.

Before approval, the verification URL and code are printed to stderr. The
successful JSON result contains `profile`, `status: "connected"`, and the full
CLI `actor` record. No access or refresh token is printed.

<div className="docs-response">

```json
{
  "profile": "personal",
  "status": "connected",
  "actor": {
    "type": "cli",
    "data": {
      "actorId": "0199dfe1-0000-7000-8000-000000000014",
      "organizationId": "0199dfe1-0000-7000-8000-000000000004",
      "organizationName": "Example workspace",
      "grants": [
        {
          "grant": {
            "id": "0199dfe1-0000-7000-8000-000000000013",
            "organizationId": "0199dfe1-0000-7000-8000-000000000004",
            "actorId": "0199dfe1-0000-7000-8000-000000000014",
            "sessionKeyId": "0199dfe1-0000-7000-8000-000000000002",
            "grantedByActorId": "0199dfe1-0000-7000-8000-000000000015",
            "revokedAt": null,
            "revokedByActorId": null,
            "createdAt": "2026-10-11T09:00:00.000Z"
          },
          "sessionKey": {
            "id": "0199dfe1-0000-7000-8000-000000000002",
            "organizationId": "0199dfe1-0000-7000-8000-000000000004",
            "walletId": "0199dfe1-0000-7000-8000-000000000001",
            "signingKeyId": "0199dfe1-0000-7000-8000-000000000005",
            "createdByActorId": "0199dfe1-0000-7000-8000-000000000015",
            "metadata": {
              "version": 1,
              "name": "Example session",
              "logo": { "type": "emoji", "value": "🔑" },
              "description": "SDK test session"
            },
            "policyHash": "0x3333333333333333333333333333333333333333333333333333333333333333",
            "status": "active",
            "revokedAt": null,
            "revokedByActorId": null,
            "createdAt": "2026-10-11T09:00:00.000Z",
            "namespace": "eip155",
            "policies": [
              {
                "id": "0199dfe1-0000-7000-8000-000000000016",
                "appliesTo": "both",
                "type": "evm.chain-allowlist",
                "version": 1,
                "chainIds": ["eip155:84532"]
              }
            ]
          }
        }
      ],
      "authorization": {
        "id": "0199dfe1-0000-7000-8000-000000000017",
        "clientId": "0199dfe1-0000-7000-8000-000000000018",
        "scopes": [
          "wallet:read",
          "session-key:read",
          "execution:read",
          "execution:execute",
          "signature:create",
          "offline_access"
        ],
        "metadata": {
          "type": "cli",
          "version": 1,
          "deviceName": "Example laptop",
          "cliVersion": "1.2.0",
          "platform": "darwin"
        },
        "expiresAt": null,
        "lastUsedAt": "2026-10-11T09:10:00.000Z",
        "createdAt": "2026-10-11T09:00:00.000Z"
      }
    }
  }
}
```

</div>

## Options [#options]

### --profile [#--profile]

- **Type:** `string`
- **Default:** `personal`

Save the connection under this name. Pass it to later commands with `--profile`.
Logging in again replaces that profile's saved connection.

### --host [#--host]

- **Type:** absolute API URL
- **Default:** `https://api.namera.ai`

Connect to this API origin. Login uses this flag, not `NAMERA_API_URL`.
For local development, pass `--host http://localhost:8080`.

### --device-name [#--device-name]

- **Type:** `string`
- **Default:** `Namera CLI on <platform>`

Name shown during consent and in CLI execution history. Choose a recognizable
device name without secrets:

```sh
namera login --profile work --device-name "Work laptop"
```

The command also accepts [global options](https://namera.ai/docs/cli/reference/global-options):
`--output pretty|json`, `--quiet`, and `--help`.

## Browser Approval [#browser-approval]

Approve access only to the active session keys this connection needs. If the
browser cannot open, visit the printed URL and enter the code. Login waits for
approval and expires if you do not complete it in time.

Credentials are saved in the OS keyring. Imported signing keys are separate
from the login connection. Use [Authentication](https://namera.ai/docs/cli/authentication) for
API-key automation and sign-out behavior.

## Errors [#errors]

Failures exit nonzero and are written to stderr. With `--output json`, inspect
`error.code` and `error.nextStep`. See [Output and Errors](https://namera.ai/docs/cli/output-and-errors).
