Platform

Platform overviewArchitectureWorkflow orchestrationGitOps configurationGovernance and AAAAI and MCPKnowledge and contextRuntime and executionEvidence and monitoring

Use cases

All use casesProduction incidentRelease preparationHotfix to productionSecurity scan triage
Why NopsAIIntegrationsSecurity

Resources

All resourcesAI agent governanceMCP governanceMCP securitySelf-hosted platforms
PricingGitHub

Company

How a run worksAboutContactBook a demo

Models

Provider, model, endpoint, credential, and generation settings — the layer that decides which model actually runs.

ReferenceAutomation authorAdministratorSecurity

Key points

  • Supported providers: gemini, lmstudio, openai, anthropic, groq, mistral, ollama, openrouter, azure-openai.
  • reasoning and thinking are generic NopsAI options for LM Studio only. Other providers reject a generic value rather than silently ignoring stale configuration.
  • max_tokens is supported by every current provider.
  • allowed_scopes restricts which run scopes may select the profile; an empty list permits every scope.
  • The credential value is write-only and is never returned by the API after submission.
  • A local provider URL must be reachable from the API runtime — inside containers use a LAN IP or host.docker.internal, not localhost.

Field reference

providerllm profilestringRequiredNone

Model provider client used for this profile.

Example

provider: anthropic

Allowed values

gemini, lmstudio, openai, anthropic, groq, mistral, ollama, openrouter, azure-openai

Evidence

config/config.go

modelllm profilestringOptionalProvider default

Model identifier passed to the provider.

Example

model: claude-sonnet-4-5

base_urlllm profilestringOptionalProvider default endpoint

Endpoint override for self-hosted, proxied, or Azure deployments.

Example

base_url: http://host.docker.internal:1234/v1

Rules
  • Must be reachable from the API runtime. Inside containers use a LAN IP or host.docker.internal, not localhost.
credential_refllm profilestringConditionalNone

Reference into the encrypted credential registry holding the provider API key.

Example

credential_ref: llm/anthropic-prod

Rules
  • Required for providers that authenticate; local providers such as Ollama may not need one.
Security

The credential value is never returned by the API after submission.

Evidence

config/config.go

api_key_secretllm profilestringOptionalNone

Legacy inline secret name. Kept for migration compatibility.

Example

api_key_secret: OPENAI_API_KEY

Deprecated

Superseded by credential_ref

allowed_scopesllm profilestring[]OptionalAll scopes

Runtime scopes allowed to select this profile. An empty list permits every scope.

Example

allowed_scopes:
  - platform/production

Rules
  • Scope comparison trims surrounding slashes and is case-insensitive.
Permission

Scope restriction is applied in addition to AAA authorization, not instead of it.

Evidence

services/nopsai/pkg/validation/pipeline.go

timeout_secondsllm profileintegerOptionalPlatform default

Per-request timeout for provider calls made with this profile.

Example

timeout_seconds: 120

max_tokensllm profileintegerOptionalProvider default

Maximum output tokens per request. Supported by every current provider.

Example

max_tokens: 8192

Evidence

config/config.go

pricingllm profileobjectOptionalUnpriced (zero for local providers)

Optional rate card in USD per million tokens, used to report AI usage as money. Takes input_per_million_usd and output_per_million_usd, plus optional cached_input_per_million_usd and cache_write_per_million_usd that default to the input rate. Leave it out when the rate is unknown: the model still runs and its cost records as unknown rather than zero, so dashboards report it as unpriced instead of understating spend. Local providers default to explicit zeroes because they have no per-token charge.

Example

pricing:
  input_per_million_usd: 0.30
  output_per_million_usd: 2.50

Evidence

config/config.go

temperaturellm profilefloatOptionalProvider default

Sampling temperature. Unset leaves the provider default in place.

Example

temperature: 0.2

reasoningllm profilestringOptionalNone

Generic reasoning level. Supported only for the LM Studio provider.

Example

reasoning: high

Allowed values

off, low, medium, high, on

Rules
  • Other providers reject a generic value rather than silently ignoring stale configuration.
Evidence

config/config.go

thinkingllm profilebooleanOptionalNone

Boolean form of the reasoning toggle. Supported only for LM Studio; reasoning takes precedence.

Example

thinking: true

Evidence

config/config.go

prompt_cache.modellm profilestringOptionalNone

Provider prompt-cache behavior for this profile.

Example

prompt_cache:
  mode: auto

prompt_cache.scopellm profilestringOptionalNone

Cache partition boundary applied to prompt caching.

Example

prompt_cache:
  scope: run

prompt_cache.retentionllm profilestringOptionalNone

How long a cached prompt prefix stays valid.

Example

prompt_cache:
  retention: 1h

provider_state.modellm profilestringOptionalNone

Whether provider-side conversation state is used for multi-turn goal work.

Example

provider_state:
  mode: auto

extrallm profilemap<string,string>OptionalNone

Provider-specific settings passed through unchanged.

Example

extra:
  api_version: "2024-10-21"

Examples

Hosted provider with scope restrictionyaml
reasoning-large:
  provider: anthropic
  model: claude-sonnet-4-5
  credential_ref: llm/anthropic-prod
  max_tokens: 8192
  temperature: 0.2
  timeout_seconds: 120
  allowed_scopes:
    - platform/production
Local LM Studio profile with reasoningyaml
local-reasoning:
  provider: lmstudio
  model: qwen2.5-coder-32b
  base_url: http://host.docker.internal:1234/v1
  reasoning: high
Result

Accepted. The same reasoning value on an OpenAI profile would be rejected.

How it works

Profiles can be system-wide or team-owned, and a team can set its own default. Assistant chat and AI Evaluation select from the same profile set that pipelines do.

Use the profile test action before a pipeline depends on it. A broken credential surfaces there instead of failing every goal at run time.

Prompt cache and provider state settings are recorded in telemetry as hashes, revision markers, cache and session identity, and token counts — prompt bodies are not stored.

Implementation evidence

  • config/config.go

    Provider constants, reasoning levels, and profile struct.

  • doc/llm-model-selection.md

    Provider and model selection notes.