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

The three suppliers


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 spends your organization’s key first, when one is stored, and this machine’s own key otherwise. A key typed into a client is your organization’s: Narya stores it encrypted, and every member’s turns spend it. Storing one needs the keys:manage permission. narya auth login stores this machine’s own key. 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 this machine’s key from 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.
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.

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 the key it spends. 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 goes to the host log alone.
  • The two browser sign-in hosts above, during a sign-in.
  • The identity provider in your [identity] settings.
  • The address in [identity] plane_url, when you set one. The host reads your organization’s settings there every 15 minutes, and a share finds your organization’s home there. A session you share goes to that home.
  • 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. deny network ** turns it off, and a per-host rule narrows fetch, never the search. An unattended run searches only where the rules allow every host.
  • The tool servers, OpenAPI tool trees and PDF converter you declare. See Extending Narya.
  • Registered extensions and packages. The host sends every registered extension the prompts, tool arguments and tool results of the sessions it covers. narya ext add downloads the package’s Go module from the module source.
  • The OpenTelemetry collector you name under [telemetry] or in OTEL_EXPORTER_OTLP_ENDPOINT. Telemetry is off until you name one.
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.