Configure AI provider API keys, deployment concurrency limits, timeout settings, and LLM audit logging for your ops0 organization.
ops0 uses Anthropic Claude as its primary AI provider, powering all AI-driven features. You need a Claude API key to use any of these features.
Go to console.anthropic.com → API Keys → Create Key. Copy the key — it is only shown once.
In ops0, navigate to Settings → API Configuration.
Paste your key into the Claude API Key field, then click Test Connection to verify it is valid and has sufficient credits.
Click Save API Settings. The key is masked immediately and encrypted at rest — you cannot retrieve the full value again. Store it somewhere safe before saving.
| Field | Description |
|---|---|
| Claude API Key | Your Anthropic API key (sk-ant-...) |
| Test Connection | Verifies the key is valid and has sufficient credits before saving |
Generate Terraform and OpenTofu code from natural language descriptions.
Conversational assistant for querying and understanding your infrastructure.
AI-generated summaries and analysis of discovered cloud resources.
Generate Ansible playbooks from natural language task descriptions.
ops0 also supports OpenAI-compatible APIs as an alternative or supplemental AI provider. This is useful for organizations that:
| Field | Description | Example |
|---|---|---|
| OpenAI API Key | Your OpenAI API key | sk-... |
| Base URL | API endpoint — leave blank to use the OpenAI default | https://YOUR-RESOURCE.openai.azure.com |
OpenAI (default cloud)
Leave Base URL blank and enter your sk-... API key. ops0 will call api.openai.com directly.
Azure OpenAI Service
Set Base URL to your Azure endpoint (e.g. https://YOUR-RESOURCE.openai.azure.com) and enter your Azure API key. No trailing slash.
Ollama (local inference)
Set Base URL to http://localhost:11434/v1. Leave API Key blank or enter ollama. No data leaves your environment.
vLLM or other OpenAI-compatible endpoint Set Base URL to your endpoint's base URL and enter the appropriate API key if your server requires one.
When both a Claude API key and an OpenAI API key are configured, ops0 uses Claude by default for all features. OpenAI is used as a fallback only when Claude is unavailable or returns an error.
Control how ops0 executes Terraform and OpenTofu deployments across your organization.
| Setting | Default | Range | Description |
|---|---|---|---|
| Max Concurrent Deployments | 5 | 1–20 | Maximum number of plan and apply operations running simultaneously across all projects |
| Deployment Timeout | 300 seconds | 60–3600 | Maximum time a plan or apply can run before being cancelled and marked as failed |
This setting limits how many plan and apply operations ops0 will run at the same time, across all projects and all users in your organization.
Increase this value if:
Decrease this value if:
The timeout applies to both terraform plan and terraform apply operations. A deployment that exceeds the timeout is cancelled and marked as failed — no partial state is committed.
The default of 300 seconds (5 minutes) is sufficient for most deployments. Increase toward 3600 (1 hour) for large Terraform projects that provision many resources in a single apply — for example, an initial environment build that creates VPCs, subnets, RDS instances, EKS clusters, and supporting IAM roles in one run.
When the timeout is reached, ops0 sends a termination signal to the running Terraform process. Cloud resources that were partially provisioned during the apply are not automatically destroyed. Review your Terraform state after a timeout and clean up any orphaned resources manually.
When enabled, ops0 records the full input and output of every LLM call made on behalf of your organization — including the prompts sent to Claude or OpenAI and the model responses received.
Go to Settings → API Configuration → toggle Enable LLM I/O Logging to on.
Click Save API Settings. Logging takes effect immediately for all subsequent LLM calls.
Navigate to Settings → Audit Logs and filter by type LLM to see all recorded calls.
Every LLM call record includes:
| Field | Description |
|---|---|
| Feature | The ops0 feature that triggered the call, such as iac_generate, discovery_generate, k8s_incidents, or kiwi_chat |
| Model | The model name and version that processed the request |
| Input tokens | Prompt token count, including any cache read tokens |
| Output tokens | Completion token count |
| Duration | Time in milliseconds from request to first response token |
| Status | success or error with error message if applicable |
| Full prompt | Complete prompt text (only when LLM I/O logging is enabled) |
| Full completion | Complete model response text (only when LLM I/O logging is enabled) |
LLM I/O logging captures the full content of every prompt. Prompts sent by ops0 features routinely contain your Terraform code, resource names, cloud account identifiers, configuration file contents, and other infrastructure details. Enable this setting only if you require a complete audit trail and have reviewed your data-handling and retention policies for this category of data.
All API keys stored in ops0 are protected by the following controls:
sk-ant-...***.If you lose a key after saving, you cannot retrieve it from ops0. Generate a new key in the provider console (Anthropic Console or OpenAI dashboard), paste it into ops0, and save. Revoke the old key in the provider console to prevent unauthorized use.
Navigate to Settings → API Configuration → LLM Usage to view a dashboard of all AI activity across your organization.
| Metric | Description |
|---|---|
| Total calls | Number of LLM requests in the selected time window |
| Total tokens | Input + output tokens consumed |
| By feature | Token usage per ops0 feature (iac_generate, discovery_generate, k8s_incidents, kiwi_chat, etc.) |
| By model | Usage split across Claude Sonnet, Claude Haiku, and any OpenAI-compatible models |
| By provider | Anthropic vs OpenAI total calls and tokens |
| Time series | Daily call volume and token usage over the selected period |
The Logs tab shows individual call records:
| Field | Description |
|---|---|
| Timestamp | When the call was made |
| Feature | The ops0 feature that triggered it |
| Model | Model name and provider |
| Input tokens | Prompt size (including cache read tokens) |
| Output tokens | Completion size |
| Duration | Latency in milliseconds |
| Status | Success or error |
| Full prompt / response | Only visible when LLM I/O Logging is enabled |
Click any row to see full call detail. Full prompt and completion text are shown only when LLM I/O Logging is enabled.