feat: dynamic UI for plugins #858
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar#858
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Imported from GitHub.
Original GitHub issue: #2498
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/issues/2498
Original created: 2026-01-25T06:13:39Z
Is your feature request related to a problem?
Initial prompt:
Response:
2. The Elixir/LiveView Implementation
On the Phoenix side, you create a "Dynamic Form Component." When a user goes to configure a plugin, the LiveView does the following:
schema.jsonfrom the Ash resource.ex_json_schemato validate the user's input against that schema.Conceptual LiveView Code:
3. The "Standard Library" (Bundled Plugins)
You are right—users shouldn't have to write a plugin for basic HTTP checks.
The Solution: Ship ServiceRadar with a "Standard Library" of Wasm plugins.
.wasmfiles.core-elxcontainer or assets.core-elxinserts them into thepluginsAsh resource automatically.4. Why this is the "Best Way"
get_config()and gets a pre-validated map of its parameters.schema.json.5. Moving toward "UI Plugins" (Advanced)
If you really wanted custom UI (like a special graph or a custom map), the safest "LiveView way" is to let authors specify a custom result-mapping template.
plugin.yamltells the UI:"display_widget": "gauge".Summary of the Workflow:
plugin.yaml+schema.json.schema.jsonand creates a dynamic Ash form.This keeps your "Experience Layer" (Phoenix) clean and your "Execution Layer" (Wasm Agent) secure!