System Settings
System Settings
System settings are the installation-wide defaults for Logship. They're managed from Administration → System Settings in the frontend and through the /settings API.
If you're trying to configure behavior that should apply across the whole deployment, this is the place to start. These settings currently cover:
- default outbound email connection details
- the frontend base URL used in incident notification links
- search executor concurrency limits
Permissions
Viewing and updating system settings requires global admin access.
Sensitive values
Sensitive settings are redacted on read. You can save a value like an email password, but the UI and
GET /settingswon't return the stored value later.
Maintenance note
This page is tied directly to the code-defined registry in
src/Logship/Service/Services/Configuration/Settings/SystemSettingStore.csand the code that consumes those settings. Whenever a system setting is added, removed, renamed, retyped, or its behavior changes in code, this documentation must be updated in the same change.
Quick example
A common setup is:
- configure the default outbound email connection for the whole system
- configure the frontend base URL so incident notifications can include deep links
POST /settings
Authorization: Bearer <token>
Content-Type: application/json
{
"settings": [
{
"key": "Logship.Communication.Email.Endpoint",
"value": "mail.domain.com:993"
},
{
"key": "Logship.Communication.Email.UserName",
"value": "notifications@domain.com"
},
{
"key": "Logship.Communication.Email.Password",
"value": "<secret>"
},
{
"key": "Logship.Communication.Email.FromAddress",
"value": "alerts@domain.com"
},
{
"key": "Logship.Application.FrontendUrl",
"value": "https://app.domain.com"
}
]
} If you read the settings back later, the password will be redacted.
How system settings work
System settings act as the deployment-wide defaults.
In practice, that means:
- the messenger service uses the system email settings as its default email configuration
- account-level email settings can override the matching system email connection values for account-scoped mail
Logship.Application.FrontendUrlis used to build incident deep links in notifications- the search executor concurrency settings are polled and applied dynamically by
UpdateExecutionSemaphoreValuesTask
Setting reference
| Setting | Type | Default | Sensitive | What it does |
|---|---|---|---|---|
Logship.Communication.Email.UserName | string | null | No | System default email username. |
Logship.Communication.Email.Endpoint | string | null | No | System default email endpoint. |
Logship.Communication.Email.Password | string | null | Yes | System default email password. |
Logship.Communication.Email.FromAddress | string | null | No | From address used for email. If left empty, downstream email handling defaults it to the username. |
Logship.Communication.Email.Send.Interval | TimeSpan | 00:00:10 | No | Default interval between email send attempts. |
Logship.Application.FrontendUrl | string | null | No | Frontend base URL used to build incident deep links in notifications. |
Logship.Search.Executor.Query.MaxConcurrent | int | 10 | No | Maximum number of concurrent queries per executor. |
Logship.Search.Executor.File.MaxConcurrentRead | int | 10 | No | Maximum number of concurrent file reads globally. |
Logship.Search.Executor.File.Rowgroup.MaxConcurrentRead | int | 100 | No | Maximum number of concurrent rowgroup reads per executor. |
Email defaults
These settings define the system-wide email defaults:
Logship.Communication.Email.EndpointLogship.Communication.Email.UserNameLogship.Communication.Email.PasswordLogship.Communication.Email.FromAddress
This is the right level when most or all accounts should share one mail configuration.
If a specific account needs its own mail connection details, account settings can override the matching values for that account.
Logship.Communication.Email.Send.Interval
Logship.Communication.Email.Send.Interval is also a system setting, but it is different from the connection settings above: it controls the default cadence used by the system when processing outbound email.
Use a standard TimeSpan value such as:
00:00:10
00:01:00
00:05:00 Frontend URL for incident links
Logship.Application.FrontendUrl is used by IncidentAssignmentNotificationService when building incident deep links.
Example value:
https://app.domain.com When it's valid, notifications can include links like:
https://app.domain.com/account/<accountId>/incidents/<incidentId> Important
This setting must be a valid absolute URL.
If it's blank or invalid, Logship skips the deep link instead of generating a broken one.
Search executor concurrency settings
These three settings are operational tuning knobs for the search executor:
Logship.Search.Executor.Query.MaxConcurrentLogship.Search.Executor.File.MaxConcurrentReadLogship.Search.Executor.File.Rowgroup.MaxConcurrentRead
UpdateExecutionSemaphoreValuesTask polls these settings and updates the corresponding semaphore limits dynamically. In other words, these aren't just startup values sitting in a config file somewhere — the running service is designed to pick up changes.
If you're tuning throughput, start conservatively, make one change at a time, and observe the effect on query latency and system load.
Common variations
Use one shared email configuration for every account
Set the system email settings and leave the account-level email connection settings unset.
Override email settings for one account only
Keep the system defaults in place, then set account-level email endpoint, username, password, and/or from address for the specific account that needs different behavior.
Enable incident deep links in notifications
Set:
Logship.Application.FrontendUrl
That's enough for incident links, as long as the value is a valid absolute URL.
Troubleshooting
I saved the email password, but the field looks empty afterward
That's expected.
Sensitive settings are redacted on read, so the stored password is not returned by the API or the frontend.
Incident notifications don't include clickable links
Check Logship.Application.FrontendUrl.
One common mistake is saving only a hostname or a relative path. Use a full absolute URL such as:
https://app.domain.com I changed a search concurrency setting and expected it to update right away
These values are applied by a background task that polls and updates semaphores dynamically. If you just changed a value, allow a short delay for the new value to be picked up.
Related docs
For per-account overrides and account-specific behavior, see Account Settings.