Settings Reference¶
Complete reference for all SerOps settings modules.
User Preferences (Header Dropdown)¶
Location: Click your profile avatar in the top-right header
Personal preferences accessible from any page:
| Setting | Options |
|---|---|
| Language | English, Français |
| Appearance | Light, Dark, System |
| Timezone | Select from dropdown (shows current time) |
These settings are user-specific and stored in your browser.
General Settings (Organisation)¶
Location: Settings → General
| Setting | Description |
|---|---|
| Organisation Name | Display name for your org |
| Organisation Logo | PNG, JPEG, GIF or WebP up to 2 MB, shown next to the organisation name in the sidebar. Stored in the database, resized to at most 256 px. |
| Website | Organisation website URL |
AI Settings¶
Location: Settings → AI Providers
Model Selection¶
| Setting | Options |
|---|---|
| Primary Model | Gemini, Claude, OpenAI, DeepSeek, Ollama (any registered AIModelProvider) |
| Fallback Model | Same list, plus None to disable fallback |
| Use Custom Keys | Yes/No |
Provider Configuration¶
Manage AI providers and private API keys in Settings > AI Providers > Manage Providers. Each organisation's admin sets its own API key and, when needed, its own base URL (for example a local Ollama endpoint).
The provider list itself (adding a provider, Edit Config, deleting one) is shared by every organisation on the install. It can be changed by platform staff (a Django staff user), or by the admin when the install has a single organisation.
Adding/Editing a Provider¶
- Click Add Provider or Edit Config.
- Display Name: Name shown in dropdowns.
- Adapter Type:
- Google Gemini: For Gemini models via the
google-genaiSDK. - Anthropic Claude: Native adapter using the
anthropicSDK. Supports prompt caching viacache_control:ephemeralon the batch-analysis system prefix. - OpenAI Compatible: For OpenAI, DeepSeek, Ollama, Mistral, or any
v1/chat/completions-compatible endpoint. Prompt caching on OpenAI + DeepSeek activates automatically when the system-role prefix crosses 1,024 tokens.
- Google Gemini: For Gemini models via the
- API Base URL: Optional for cloud providers, required for local/self-hosted (e.g.,
http://localhost:11434/v1). - Default Model: The model ID to send in requests (e.g.,
llama3,claude-3-sonnet). - Active: Toggle to enable/disable.
Connection Testing¶
- Enter your API Key for a provider.
- Click the "Eye" icon to verify input.
- Click Save.
- Click Test Connection to verify the key works.
- Success: Shows "Connected" badge.
- Failed: Check the error message (usually "Auth Error" or "Invalid Key").
Troubleshooting¶
- "Auth Error": Usually means the stored API Key is invalid or expired. Delete the key and re-enter it.
- "Encryption Reset": If the backend secret key changes, old keys become unreadable. You will need to re-enter them.
- System Defaults: If no custom key is provided, the system may use environment variable defaults if configured.
Delivery Channels¶
Location: Alerts & routing → Delivery Channels
One row per notification destination, following the Grafana contact point model. Multiple channels of the same kind are supported.
| Kind | Auth | Configuration |
|---|---|---|
| Slack | Incoming Webhook URL | Paste the webhook URL |
| Microsoft Teams | Incoming Webhook connector URL | Paste the connector URL |
| PagerDuty | Events API v2 integration key | Paste the integration key |
| OpsGenie | API key + region | Key plus us or eu |
| None | Recipients in extra_config.to |
Secrets are encrypted at rest and never returned by the API.
This page also holds Rotate ingest secret, the per-organisation bearer token that inbound Alertmanager, Grafana, and Datadog webhooks authenticate with. The plaintext is displayed once only.
See Notifications for the full guide.
Routing Rules¶
Location: Alerts & routing → Routing Rules
Decides which delivery channels fire for which incidents — the Alertmanager route table, flattened.
| Field | Description |
|---|---|
| Minimum severity | LOW, MEDIUM, HIGH, CRITICAL, or blank for any |
| Environments | List of environment names, blank for all |
| Services | List of service names, blank for all |
| Event types | batch_analyzed, alert_triggered, critical_issue, blank for all |
| Targets | Which delivery channels this rule notifies |
| Priority | Evaluation order (informational — results are unioned) |
All matcher axes are ANDed. Every matching rule contributes its targets; the union is de-duplicated so a channel is contacted once.
Warning
With no active routing rules, nothing is sent regardless of how many delivery channels exist.
Notification Preferences (Per User)¶
Location: Settings → Preferences
Personal delivery preferences — channels, severity filters, quiet hours, and digest frequency. These are per-user and independent of the organisation-wide Delivery Channels above.
Security Settings¶
Location: Settings → Security
Password Validation¶
SerOps uses a NIST 800-63B compliant password policy:
| Setting | Value |
|---|---|
| Minimum Length | 8 characters (fixed) |
| Maximum Length | 128 characters |
| Complexity Requirements | None |
| Password Expiry | Never |
Note: Password policy is fixed and cannot be configured via UI. Validation occurs during password creation/reset with real-time feedback.
Session Settings¶
| Setting | Description |
|---|---|
| Session Timeout | 30m / 1h / 4h / 8h / 24h / Never |
| Token TTL | 30 days (auto-refresh on activity, at most once per hour) |
SSO Configuration¶
Supported providers:
- Keycloak
- Okta
- Azure AD
- Google Workspace
Team Settings¶
Location: Settings → Team
Roles¶
Viewer (read only), User (read, run analyses, edit projects, update issues) and Admin (everything in the organisation, including credentials, team and settings). The full list of permissions per role is on Team Management. The Settings menu only lists the pages your role can open.
Actions¶
- Invite user
- Change role
- Remove user
Integration Settings¶
Location: Integrations (sidebar)
Manage global provider integrations:
| Provider | Status |
|---|---|
| GitLab | Connected/Not configured |
| GitHub | Connected/Not configured |
| Azure DevOps | Connected/Not configured |
Observability Configuration¶
Location: Integrations (sidebar)
Log, metric, and trace providers are configured alongside SCM and CI/CD providers on the Integrations page — there is no separate Observability page.
SerOps supports a hybrid model for Logs and Metrics storage (Internal vs External). See Observability Providers for details.
Default Provider Configuration¶
These environment variables configure the System Default providers for organisations that haven't set up their own integrations.
| Variable | Description | Default |
|---|---|---|
ELASTICSEARCH_HOST |
Default Log Provider (ES) | http://elasticsearch:9200 |
ELASTICSEARCH_USERNAME |
ES User | elastic |
ELASTICSEARCH_PASSWORD |
ES Password | changeme |
Sentinel Settings¶
Location: Settings → Sentinel
Controls the Sentinel tiered intelligence system that evaluates batches before AI analysis.
Gating Mode¶
| Setting | Description |
|---|---|
| Enable Active Mode | When ON, quiet batches skip AI analysis (saves cost). When OFF, shadow mode — all batches run AI. |
Validate in Shadow Mode First
Start with shadow mode (default) to observe Sentinel decisions for 1-2 weeks before enabling active mode. Check the dashboard Sentinel Intelligence card to verify decisions are accurate.
Threshold Overrides¶
Fine-tune detection sensitivity. Set to 0 to use system defaults.
| Setting | Default | Description |
|---|---|---|
| Error Spike Multiplier | 2.0 | How many times above baseline error rate triggers an alert. Lower = more sensitive. |
| Z-Score Threshold | 3.0 | Standard deviations from mean for memory/CPU anomaly detection. Lower = more sensitive. |
| Max Quiet Batches | 12 | Force AI analysis after this many consecutive quiet batches (safety net). |
Tuning Tips
- For critical production services, use a lower multiplier (e.g., 1.5) to catch smaller error spikes.
- Keep max quiet batches at 12 or below to ensure periodic AI review.
See Sentinel How-To for the full guide.
Mail Server (SMTP)¶
SMTP is configured via environment variables (EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_USE_TLS, DEFAULT_FROM_EMAIL). There is no UI editor — SerOps follows the Grafana pattern: change .env, restart the backend.
Verify a config end-to-end:
The command prints which values are currently in effect and sends a test message.
See the Configuration Reference for the full env-var list.
Removed in 2026-09-01
An earlier release exposed a Settings → Mail Server UI backed by a SystemMailSettings DB row. It was removed on 2026-09-01 to eliminate a per-instance lifecycle-email hijack surface. If you're upgrading and had SMTP configured through the UI, copy those values into your .env before applying migration 0013_remove_systemmailsettings.
Data Settings¶
Location: Settings → Data Management
Retention Policy¶
| Setting | Options |
|---|---|
| Auto-Cleanup | Enabled/Disabled |
| Retention Days | 7-365 days |
| Frequency | Daily/Weekly/Monthly |
Batch Settings¶
| Setting | Default |
|---|---|
| Generation Interval | 10 minutes |
| Max Batch Size | 1000 logs |
Audit Log Settings¶
Location: Settings → Audit
| Setting | Options |
|---|---|
| Retention Days | 30/90/365/Forever |
| Export Format | CSV, JSON |
Clusters¶
Location: Settings → Clusters
Register the Kubernetes clusters your projects run on. Clusters scope observability integrations and are one dimension of the deployment filter used across the Data and Issues pages.
See Clusters.
Traces¶
Location: Settings → Distributed Traces
Manage OTLP ingest keys for distributed tracing. Each key is shown once on creation and stored as a hash afterwards, following the same model as the alert ingest secret.
See Distributed Traces.