Component
Configuration portal
Problem to solve
Administrators frequently need to configure the same Mumble servers and channels for multiple Device IDs.
The current workflow requires the administrator to open each Device Profile and manually enter the same information repeatedly, including:
- Server name
- Server address
- Port
- Certificate trust policy
- Username
- Server password
- Channel label and alias
- Full channel path
- Channel access mode or token
- Physical preset key such as
P1, P2, or P3
In many cases, the required Server and Channel have already been configured successfully for another device. Re-entering the same values is slow and increases the risk of typographical errors, inconsistent channel paths, incorrect ports, and accidentally assigning the wrong server to a channel.
The Configuration Portal should provide a fast and safe way to reuse previously configured Server and Channel definitions.
Current behavior
The configuration editor currently provides:
Both actions create empty entries that must be completed manually.
There is currently no interface to:
- Select a previously used server.
- Select a previously used channel.
- Save a Server/Channel combination as a reusable preset.
- Copy Server and Channel settings from another Device ID.
- Add several related channels in one operation.
- Preview conflicts before adding reused configuration.
Desired outcome
Add a reusable Configuration Library to the portal.
The library should allow an administrator to:
- Save an existing Server definition as a reusable preset.
- Save one or more Channels associated with that Server.
- Select a saved preset while editing another Device Profile.
- Add the Server and selected Channels to the current configuration immediately.
- Copy Server and Channel settings from another registered Device ID.
- Preview the values before applying them.
- Resolve duplicate IDs and physical preset-key conflicts safely.
- Save the final Device Profile through the existing validation and versioning workflow.
The primary action should be presented as:
A secondary option may be:
Recommended interaction
Server tab
In the Servers tab, display:
Add server
Add from library
Selecting Add from library should open a searchable list of saved Server presets.
Each Server preset should display non-sensitive information such as:
- Preset name
- Server name
- Hostname or address
- Port
- Certificate policy
- Number of associated Channels
- Last updated time
Example:
Emergency Operations
voice.example.org:64738
4 channels
The administrator can select a preset and choose which associated Channels to add.
Channel tab
In the Channels & default tab, display:
Add channel
Add from library
The administrator should be able to select one or more Channels and add them to the current Device Profile.
The portal should automatically include the required Server definition when a selected Channel references a Server that is not yet present in the Device Profile.
Copy from another device
The editor should also allow the administrator to select an existing Device ID as the source.
Example workflow:
- Open the target Device Profile.
- Select
Copy from device.
- Search for the source Device ID or display label.
- Preview its Servers and Channels.
- Select the required items.
- Choose whether sensitive values should be included.
- Select
Add to current configuration.
- Review the merged configuration.
- Save the Device Profile.
This operation must copy only the selected Server and Channel configuration. It must not copy:
- Device ID
- Model profile
- Hardware mappings
- PTT key mappings
- Location capability
- APRS identity
- Device-specific service name
- Config version
- Other device-specific settings
Preset structure
A reusable preset should support one Server and one or more associated Channels.
Example conceptual structure:
{
"id": "emergency-operations",
"name": "Emergency Operations",
"connection": {
"id": "operations-server",
"name": "Operations server",
"host": "voice.example.org",
"port": 64738,
"serverCertificateSha256": "",
"autoTrustServerCertificate": true
},
"channels": [
{
"id": "main",
"label": "Main Operations",
"alias": "MAIN",
"connectionId": "operations-server",
"path": "/OPERATIONS/MAIN",
"presetKey": "P1",
"access": {
"mode": "none"
}
},
{
"id": "dispatch",
"label": "Dispatch",
"alias": "DISPATCH",
"connectionId": "operations-server",
"path": "/OPERATIONS/DISPATCH",
"presetKey": "P2",
"access": {
"mode": "none"
}
}
],
"createdAt": "2026-08-12T00:00:00.000Z",
"updatedAt": "2026-08-12T00:00:00.000Z"
}
The stored preset must be validated independently before it can be applied to a Device Profile.
Copy-on-add behavior
Presets should use copy-on-add semantics.
When a preset is added to a Device Profile:
- The selected Server and Channels are copied into the Device Profile.
- The administrator can modify the copied values before saving.
- Updating the Library preset later does not automatically change existing devices.
- Deleting a Library preset does not remove Servers or Channels already copied to devices.
- Existing Device Profiles are updated only through an explicit administrator action.
This prevents an accidental template edit from changing the operational configuration of several radios simultaneously.
A future bulk-update or linked-template feature should be handled separately and should require stronger review and rollback controls.
Duplicate and conflict handling
The portal must not silently overwrite existing Server or Channel entries.
Connection ID conflicts
If the imported connection ID already exists:
- If the existing definition is effectively identical, reuse it.
- If the definition is different, generate a unique connection ID.
- Update imported Channel references to use the resolved connection ID.
Example:
operations-server
operations-server-2
Channel ID conflicts
If an imported Channel ID already exists:
- Do not overwrite the existing Channel.
- Generate a unique ID or ask the administrator to resolve the conflict.
- Preserve the imported label, alias, path, and access policy.
Example:
Duplicate Server detection
The portal may treat Servers with the same normalized host and port as possible duplicates.
Before adding a duplicate, offer:
- Use existing Server
- Add as a separate Server
- Cancel
The comparison should also consider certificate settings so that Servers with different trust policies are not merged incorrectly.
Duplicate Channel detection
When a Channel with the same Server and normalized full path already exists, the portal should warn the administrator and offer:
- Skip duplicate
- Add another entry
- Replace only after explicit confirmation
Physical preset-key conflicts
A physical preset key such as P1–P16 must not be assigned to more than one Channel silently.
When a conflict occurs, the portal should allow the administrator to:
- Keep the existing assignment and leave the imported Channel unassigned.
- Choose another available preset key.
- Replace the existing assignment after explicit confirmation.
Default Channel behavior
Adding a preset must not silently change radio.defaultChannel.
After adding Channels, the administrator may explicitly select:
Set one imported Channel as the default
If no selection is made, the current default Channel remains unchanged.
Sensitive fields
Server and Channel presets may contain sensitive values such as:
- Server passwords
- Channel access tokens
- Certificate fingerprints
- Usernames that identify an operator or radio
The default behavior should exclude sensitive or device-specific values from a reusable preset unless the administrator explicitly chooses to include them.
When saving a preset, provide options such as:
Include connection address and channel paths
Include username
Include server password
Include channel access tokens
Recommended defaults:
- Server address and port: included
- Certificate policy: included
- Username: excluded
- Server password: excluded
- Channel path and labels: included
- Channel access tokens: excluded
When copying from another Device Profile:
- Sensitive fields must remain masked in the preview.
- The interface should clearly indicate whether a sensitive value is present.
- Raw passwords and tokens must not be displayed in list views.
- Including sensitive values must require an explicit administrator choice.
- Sensitive values must never appear in browser logs, server logs, URLs, analytics, error messages, or audit summaries.
- The API must never return sensitive values to an unauthenticated request.
If the existing protected tokenRef mechanism is available, reusable presets should prefer references over duplicating raw channel tokens.
Configuration Library management
Add a Configuration Library section to the Admin Portal.
The administrator should be able to:
- List presets.
- Search by preset name, Server name, hostname, Channel label, alias, or path.
- Create a preset manually.
- Save selected Server and Channels from an existing Device Profile.
- Rename a preset.
- Edit a preset.
- Duplicate a preset.
- Delete a preset.
- View how many Channels are included.
- View when the preset was last updated.
Deleting a preset must require confirmation.
Deleting or editing a preset must not modify Device Profiles that previously copied values from it.
Proposed storage model
Store reusable presets separately from Device Profiles.
Suggested KV key pattern:
Do not store presets under:
The storage model should clearly distinguish between:
- Registered Device Profiles
- Pending registration requests
- Reusable Server/Channel presets
Preset IDs should be normalized and validated before use.
Proposed API
Possible authenticated endpoints:
GET /api/config-presets
POST /api/config-presets
GET /api/config-presets/{presetId}
PATCH /api/config-presets/{presetId}
DELETE /api/config-presets/{presetId}
A preview endpoint may be added for conflict detection:
POST /api/devices/{deviceId}/preview-preset
The preview response should report:
- Servers to be added
- Servers that can be reused
- Server ID conflicts
- Channels to be added
- Duplicate Channels
- Channel ID conflicts
- Physical preset-key conflicts
- Whether the current default Channel would remain valid
- Whether sensitive fields are present
Applying a preset should normally update only the editor draft. The existing Device Profile save endpoint should remain responsible for final validation, persistence, and configVersion advancement.
Validation requirements
Before saving a preset:
- Validate Server host and port.
- Validate connection IDs.
- Validate Channel IDs.
- Validate full Channel paths.
- Validate Channel-to-Server references.
- Validate access modes.
- Validate physical preset keys.
- Reject malformed or unsupported fields.
- Enforce reasonable limits on the number and size of presets.
- Reject secrets in fields not intended to contain secret data.
Before saving the Device Profile after importing:
- Run the existing Schema 3 validation.
- Verify that every Channel references an existing connection.
- Verify that every Channel ID is unique.
- Verify that the default Channel exists.
- Verify that access configuration is valid.
- Advance
configVersion only when the effective Device Profile changes.
Acceptance criteria
Test cases
Add a complete Server and Channel preset
- Create a preset containing one Server and three Channels.
- Open another Device Profile.
- Select
Add from library.
- Select all three Channels.
- Verify that the Server and Channels appear in the editor.
- Save the Device Profile.
- Verify that the device receives a valid Schema 3 configuration.
Reuse an existing Server
- Configure the target Device Profile with a Server.
- Import a preset containing the same normalized host, port, and certificate policy.
- Verify that the portal offers to reuse the existing Server.
- Verify that the imported Channels reference the reused connection ID.
Handle conflicting IDs
- Create an existing Server and Channel using the same IDs as a preset.
- Import the preset with different values.
- Verify that no existing entry is overwritten.
- Verify that unique IDs are generated or requested.
- Verify that all Channel references remain valid.
Handle preset-key conflicts
- Assign
P1 to an existing Channel.
- Import another Channel assigned to
P1.
- Verify that the portal displays a conflict.
- Verify that the administrator can choose another key or leave it unassigned.
Copy from another Device ID
- Select a registered source Device ID.
- Select two Servers and several Channels.
- Copy them into the target Device Profile.
- Verify that the target Device ID and model remain unchanged.
- Verify that hardware, PTT, tracking, and APRS identity are not copied.
Protect sensitive values
- Save or copy a Server containing a password.
- Verify that the password is excluded by default.
- Explicitly choose to include it.
- Verify that it remains masked in the preview.
- Verify that it is never included in URLs, logs, or error messages.
Preserve existing devices
- Apply a preset to a Device Profile and save it.
- Edit or delete the original preset.
- Verify that the saved Device Profile remains unchanged.
Constraints and safety considerations
- Do not implement automatic fleet-wide propagation as part of this feature.
- Do not silently overwrite existing Server or Channel configuration.
- Do not silently change the default Channel.
- Do not copy hardware settings between device models.
- Do not copy Device IDs or config versions.
- Do not expose passwords, access tokens, or private configuration in list views or logs.
- Do not make preset APIs accessible without administrator authentication.
- Do not treat two Servers as identical when their certificate or trust policies differ.
- Preserve Last Known Good configuration behavior on the Android client.
- Preserve Last Selected Channel restoration unless the administrator explicitly removes or replaces that Channel.
Component
Configuration portal
Problem to solve
Administrators frequently need to configure the same Mumble servers and channels for multiple Device IDs.
The current workflow requires the administrator to open each Device Profile and manually enter the same information repeatedly, including:
P1,P2, orP3In many cases, the required Server and Channel have already been configured successfully for another device. Re-entering the same values is slow and increases the risk of typographical errors, inconsistent channel paths, incorrect ports, and accidentally assigning the wrong server to a channel.
The Configuration Portal should provide a fast and safe way to reuse previously configured Server and Channel definitions.
Current behavior
The configuration editor currently provides:
Add serverAdd channelBoth actions create empty entries that must be completed manually.
There is currently no interface to:
Desired outcome
Add a reusable Configuration Library to the portal.
The library should allow an administrator to:
The primary action should be presented as:
A secondary option may be:
Recommended interaction
Server tab
In the Servers tab, display:
Add serverAdd from librarySelecting
Add from libraryshould open a searchable list of saved Server presets.Each Server preset should display non-sensitive information such as:
Example:
The administrator can select a preset and choose which associated Channels to add.
Channel tab
In the Channels & default tab, display:
Add channelAdd from libraryThe administrator should be able to select one or more Channels and add them to the current Device Profile.
The portal should automatically include the required Server definition when a selected Channel references a Server that is not yet present in the Device Profile.
Copy from another device
The editor should also allow the administrator to select an existing Device ID as the source.
Example workflow:
Copy from device.Add to current configuration.This operation must copy only the selected Server and Channel configuration. It must not copy:
Preset structure
A reusable preset should support one Server and one or more associated Channels.
Example conceptual structure:
{ "id": "emergency-operations", "name": "Emergency Operations", "connection": { "id": "operations-server", "name": "Operations server", "host": "voice.example.org", "port": 64738, "serverCertificateSha256": "", "autoTrustServerCertificate": true }, "channels": [ { "id": "main", "label": "Main Operations", "alias": "MAIN", "connectionId": "operations-server", "path": "/OPERATIONS/MAIN", "presetKey": "P1", "access": { "mode": "none" } }, { "id": "dispatch", "label": "Dispatch", "alias": "DISPATCH", "connectionId": "operations-server", "path": "/OPERATIONS/DISPATCH", "presetKey": "P2", "access": { "mode": "none" } } ], "createdAt": "2026-08-12T00:00:00.000Z", "updatedAt": "2026-08-12T00:00:00.000Z" }The stored preset must be validated independently before it can be applied to a Device Profile.
Copy-on-add behavior
Presets should use copy-on-add semantics.
When a preset is added to a Device Profile:
This prevents an accidental template edit from changing the operational configuration of several radios simultaneously.
A future bulk-update or linked-template feature should be handled separately and should require stronger review and rollback controls.
Duplicate and conflict handling
The portal must not silently overwrite existing Server or Channel entries.
Connection ID conflicts
If the imported connection ID already exists:
Example:
Channel ID conflicts
If an imported Channel ID already exists:
Example:
Duplicate Server detection
The portal may treat Servers with the same normalized host and port as possible duplicates.
Before adding a duplicate, offer:
The comparison should also consider certificate settings so that Servers with different trust policies are not merged incorrectly.
Duplicate Channel detection
When a Channel with the same Server and normalized full path already exists, the portal should warn the administrator and offer:
Physical preset-key conflicts
A physical preset key such as
P1–P16must not be assigned to more than one Channel silently.When a conflict occurs, the portal should allow the administrator to:
Default Channel behavior
Adding a preset must not silently change
radio.defaultChannel.After adding Channels, the administrator may explicitly select:
If no selection is made, the current default Channel remains unchanged.
Sensitive fields
Server and Channel presets may contain sensitive values such as:
The default behavior should exclude sensitive or device-specific values from a reusable preset unless the administrator explicitly chooses to include them.
When saving a preset, provide options such as:
Recommended defaults:
When copying from another Device Profile:
If the existing protected
tokenRefmechanism is available, reusable presets should prefer references over duplicating raw channel tokens.Configuration Library management
Add a Configuration Library section to the Admin Portal.
The administrator should be able to:
Deleting a preset must require confirmation.
Deleting or editing a preset must not modify Device Profiles that previously copied values from it.
Proposed storage model
Store reusable presets separately from Device Profiles.
Suggested KV key pattern:
Do not store presets under:
The storage model should clearly distinguish between:
Preset IDs should be normalized and validated before use.
Proposed API
Possible authenticated endpoints:
A preview endpoint may be added for conflict detection:
The preview response should report:
Applying a preset should normally update only the editor draft. The existing Device Profile save endpoint should remain responsible for final validation, persistence, and
configVersionadvancement.Validation requirements
Before saving a preset:
Before saving the Device Profile after importing:
configVersiononly when the effective Device Profile changes.Acceptance criteria
Add from libraryaction in the Server editor.Add from libraryaction in the Channel editor.configVersioncorrectly.Test cases
Add a complete Server and Channel preset
Add from library.Reuse an existing Server
Handle conflicting IDs
Handle preset-key conflicts
P1to an existing Channel.P1.Copy from another Device ID
Protect sensitive values
Preserve existing devices
Constraints and safety considerations