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

# Models and credentials

> Choose a model supplier, give Narya your own key, and see exactly what leaves your machine and what it costs.

Narya calls the model supplier you configure, with your own credential. Three suppliers ship with the binary.

## The three suppliers

***

| Provider     | Endpoint                    |
| ------------ | --------------------------- |
| `anthropic`  | `https://api.anthropic.com` |
| `openai`     | `https://api.openai.com`    |
| `openrouter` | `https://openrouter.ai/api` |

`openrouter` is a gateway to other suppliers.

A fresh installation with no `config.toml` runs on the default model of the provider you signed in to. Override the wire family, the base URL and the default model per provider under `[providers.<name>]` in `config.toml`. Your file wins on any collision with the catalog in the binary.

Run `narya providers` to list the providers, and `narya models` to list the models.

## Where your key comes from

***

Narya derives the environment variable name from the provider name, uppercased, plus `_API_KEY`. So `anthropic` reads `ANTHROPIC_API_KEY`, `openai` reads `OPENAI_API_KEY`, and `openrouter` reads `OPENROUTER_API_KEY`.

Narya reads three tiers in order:

1. The environment variable, which wins on every read.
2. The operating system keychain: macOS Keychain or Linux Secret Service.
3. A per-provider file with `0600` permissions under `credentials` in your Narya home. Narya uses this tier only on a machine with no keychain backend at all.

If the keychain exists but refuses the request, Narya reports the error and does not use the file.

<Warning>
  `narya auth login` writes to the keychain even when the environment variable already holds a key for that provider. The environment variable then shadows the stored one on every read, without a message. Unset the variable to use what you stored.
</Warning>

## Sign in

***

Run `narya auth login <provider>` to store a key, and `narya auth logout <provider>` to remove it. Narya probes a typed key against the provider before it stores anything.

Add `--method key` to type a key, or `--method subscription` for a browser sign-in. Browser sign-in works for `anthropic` only, against `claude.ai` and `platform.claude.com`.

## What leaves your machine

***

Narya sends your prompts, the files it reads, and tool results to the model supplier you configure, with your credential. Lerian operates no endpoint in that path.

Narya also reaches these hosts:

* `models.dev`, for a model catalog refresh every 12 hours, and each provider you configured, for a `GET /v1/models` listing. Set `NARYA_MODELS_URL=off` to stop both. The refresh never blocks a turn, and a failure passes without a message.
* The two browser sign-in hosts above, during a sign-in.
* A release host, on an explicit upgrade command.
* Any host the model names through its `fetch` tool. That call runs under the network rule, which asks first. Narya reads at most 5 MiB and waits at most 30 seconds.
* The supplier's own web search, which runs on the supplier's side under the same key. Narya offers it to the `anthropic` and `openai` providers, and only against the supplier's own endpoint. The network ask does not reach it. Only `deny network **` turns it off, and a per-host rule narrows `fetch`, never the search.
* The tool servers, OpenAPI tool trees and PDF converter you declare. See [Extending Narya](/en/narya/extending-narya).

Shell commands the model runs reach the network under the shell rules, not the network rule.

## Cost

***

Prices come from a `models.dev` snapshot inside the binary, in US dollars per million tokens. A model with no published price reports no cost. It never reports a zero.

Run `narya records usage --from <time> --to <time>` for tokens and cost per group. An incomplete total prints with a `>=` marker.

Narya sets two spending ceilings by default:

* `$5.00` per scheduled fire, as `[schedules] ceiling_usd`.
* `$20.00` per owner per UTC day, as `[schedules] daily_ceiling_usd`.

A scheduled fire on a model Narya cannot price does not run.
