Conversation
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com>
There was a problem hiding this comment.
Sorry @patrickelectric, your pull request is larger than the review limit of 150000 diff characters
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Free Tier Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| io_read_rate_mbps: number | ||
| io_write_rate_mbps: number | ||
| pids: number | ||
| } |
There was a problem hiding this comment.
ServiceMetrics TypeScript interface missing six API fields
High Severity
The ServiceMetrics interface is missing swap_mb, swap_peak_mb, net_rx_mb, net_tx_mb, net_rx_rate_mbps, and net_tx_rate_mbps. The backend's to_dict() in metrics.py returns all these fields, and the Vue component references them extensively in the template (Swap card, Network card, peak labels) and in computed properties (memoryChartSeries, networkChartSeries). With strict: true in the project's tsconfig, accessing these undeclared properties on the typed ServiceMetrics objects will fail TypeScript compilation, breaking the Swap and Network sections of the Metrics tab entirely.
Additional Locations (2)
Williangalvani
left a comment
There was a problem hiding this comment.
looks great!
My main concern is how this could affect development of the individual services.
"ctrlc-c, up, enter" was pretty convenient. With this in, we'll use the cli instead? start/stop ?
That said, I can't get the cli to work on blueos`s terminal. it would be nice if it was in the path and working by default
| [agent] | ||
| host = "127.0.0.1" | ||
| port = 9876 | ||
| pid_file = "/run/service-manager/agent.pid" |
|
|
||
| def _default_pid_file() -> Path: | ||
| """Get default PID file path, preferring user-accessible locations.""" | ||
| import os |
There was a problem hiding this comment.
why are these at function level? also, shouldnt our isort complain about this?


Add service manager page
Note
Medium Risk
Adds a new UI surface that can start/stop/restart services and change runtime resource limits via the new
/service-managerAPI, so mistakes or backend/API mismatch could impact system stability. Also changes default Python logging sinks to split stdout/stderr, which may affect log collection behavior.Overview
Introduces a new Service Manager tool page (
/tools/service-manager) that lists services and allows start/stop/restart, viewing tailedstdout/stderrlogs, inspecting live metrics charts, and editing basic config (enabled/restart behavior + cgroup limits and optional command override).Wires the frontend to the backend by adding
/service-managerrouting/menu entry, new TS API/types, and a Vite dev proxy for the/service-managerpath.Adjusts Python logging initialization in
commonwealthto route Loguru INFO-ish levels tostdoutand ERROR-ish levels tostderr(while still publishing serialized logs), and updates UV workspace/dependency configs to includeservice_managerin the secondary venv and exclude it from the primary workspace build; also removes therun-servicecopy step fromcore/Dockerfile.Written by Cursor Bugbot for commit 008ca50. This will update automatically on new commits. Configure here.