Skip to Content
Product guideSettings (LLM provider)

Settings (LLM provider)

Where: Settings in the sidebar (#/settings/llm). Step 5 of Get set up links here.

Settings screen with the Anthropic provider selected, masked key fields and the green “configured” banner.
Save as public/guide/settings.png

The agents need a large language model to work. TruStacks uses your key, so the model spend is on your own account with the provider you choose.

What you see

  • A banner: either No LLM provider configured yet, or which provider is configured, the first characters of the key, the model if one is pinned, and when it was last updated.
  • Provider: two cards, Anthropic (direct, console.anthropic.com) and OpenRouter (billing via OpenRouter).
  • API key and Confirm API key. You paste the key twice, to catch a bad paste before anything is called.
  • Model:
    • With Anthropic: Model override (optional). Leave it blank to use the runner’s default.
    • With OpenRouter: Model (required), and it must start with anthropic/ (for example anthropic/claude-sonnet-4-5).
  • Save + rotate. While it works the button reads Saving…; when done, Saved at … with a note that your runner picks the key up, checks it with a live call and uses it from the next run. What happened before that note depends on where your control plane runs; see What happens on save below. On the hosted product the runner’s check comes after the save, so the key reads pending until it reports. On a local or self-hosted control plane in the same cluster, the live check and the runner roll already happened before Saved at … appears, and a bad key fails the save instead.

What it means

The choice is your billing relationship, not the model. Both providers route to Claude Sonnet 4.5 or newer. TruStacks’ agents, prompts and policy expectations are tuned for that model family, so picking a different model family is not offered. The model field exists to pin a specific Claude release during a model rollover, not to swap vendors.

What happens on save (hosted):

  1. The control plane checks only the key’s shape (and, for OpenRouter, that a model is set). It makes no call with your key.
  2. It holds the key in memory, sealed to your runner, until your runner collects it. Your runner writes the trustacks-runner-llm Secret in its own namespace and makes the live test call to the provider.
  3. Nothing is rolled. The runner uses the key from its next run.

The key’s status reads pending until your runner has collected and checked it, then configured, or invalid if the provider rejected it. If the runner never collects it, the held key lapses (expired) and you paste it again.

On a local or self-hosted control plane in the same cluster, the control plane makes the live call itself, writes the Secret and rolls the runner.

TruStacks keeps only a short prefix of the key for display.

What to do here

  1. Create a key in the Anthropic console or the OpenRouter dashboard.
  2. Pick the matching provider, paste the key twice, and (for OpenRouter) enter an anthropic/… model.
  3. Save + rotate. To rotate a key later, paste the new one and save again.

Details on the Secret, rotation and egress are in the LLM provider reference.

How it connects

  • Every agent run (analyses, proposals, gap analyses, rule drafts) uses this key. Without it, runs fail at the configuration stage, and the failure shows on Overview.
  • The runner that receives the key is the one on Runners.

What the provider sees. While the agents work, they send your provider the context they need: prompts, your environment profile, and the contents of repository files they choose to read. That traffic goes from the runner in your cluster to your provider, under your key.

Beta limits

  • One provider configuration per workspace. There are no per-Application or per-agent keys, by design.
  • TruStacks-managed model billing is not offered today; bring your own key.
Last updated on