Inspect a declared service
Service Inspector is a Windows, shell-owned viewer and controller for services already declared in the executable's verified plan. It helps explain whether an app dependency is starting, running, unhealthy or stopped without turning the app into a general remote-administration tool.
Include uk.capp.sidecar.service-inspector in the package and open it with Ctrl+Shift+S by default. The inspector does not add services to a plan. An application with no declared services will not acquire a backend simply because this viewer is selected.
First diagnostic session
- Start the installed application and allow its own service bootstrap to run. Open the inspector and identify the relevant service by its declared ID.
- Compare lifecycle state, process ID, selected port, uptime and health. Read the nearby launcher/supervisor events when a value is missing or contradictory.
- Inspect the bounded stdout/stderr tail. Pause display updates while reading, search for a specific error, then resume to inspect new output.
- Use an explicit health check when appropriate. A process ID or open port alone does not establish that an application request will succeed.
- Export a focused, redacted diagnostic report only after reviewing it for private application data.
The default status polling interval is 1,500 ms, with bounded event/log retention. A snapshot can lag a service transition; it is not a permanent process audit log. A paused log view is not a request to stop the service.
Controls and their effects
| Control or observation | Scope | Important limit |
|---|---|---|
| Status, PID, port and uptime | Services in this executable plan | Not arbitrary processes on the computer |
| Health check | The service's declared health behaviour | Not an end-to-end test of every app operation |
| Start, stop and restart | A named service already admitted by the plan | Can interrupt real work; these are not read-only diagnostics |
| Stdout/stderr and structured events | Retained output from the declared service path | Bounded tails may omit earlier output |
| Open workspace or log location | Host-managed paths associated with the service | No arbitrary file-picker or remote path authority |
| Copy/export report | The inspector's diagnostic snapshot | Redaction still needs human review |
allowLifecycleControls governs the lifecycle UI; allowOpenPaths governs managed-path actions. Keep them disabled in a diagnostic-only package that does not need those controls. The compiled service policy remains authoritative even when a button is present.
Before restarting, check whether the service has an in-flight job, transfer or transaction. Inspect the application's persisted operation state after interruption; restarting a service is not permission to repeat an uncertain external effect. A service becoming healthy again does not prove that interrupted work completed.
Optional viewer, separate supervisor
The service supervisor and this inspector have separate roles. Applications with declared bundled services can run without the viewer. Closing the inspector does not mean “stop the backend”; removing it from a future build should not remove the app's declared service plan.
The Windows bootstrap installs the native service bridge and loads the plan before starting the inspector. A temporarily unavailable bridge is treated as a recoverable waiting state, with retries for up to 30 seconds. A waiting bridge is not proof that the plan contains no services.
This viewer does not create a remote administration port or a portable arbitrary-service-management API. Use the installed app-owned controls. Do not couple your product to private inspector globals or copy its native command names into remote webpages.
Configuration and sharing
Start with the default shortcut-only presentation. Choose startup and docking behaviour for the target app, then set the polling and retention limits appropriate to the diagnostics you need. Raising retention does not make the service's own logs unlimited or durable.
Keep secret redaction enabled. Application stdout/stderr can contain ordinary private text that does not look like a credential. Check URLs, paths, account identifiers, arguments and user content before copying or exporting a report. Use Debug Inspector when the problem is primarily a route, console or app-request event rather than a service lifecycle issue.
Package changes require a new installed build. Changing the web docs, Library draft or an inspector window does not retrofit native service bridges into an existing executable.
Troubleshooting
| Symptom | Check and next step |
|---|---|
| Inspector does not open | Confirm the installed Windows package includes it and the shortcut is enabled. |
| Waiting for bridge persists | Read the bootstrap failure and verify the plan/native bridge belong to that package; retrying a UI panel cannot install missing native commands. |
| Service list is empty | Check that the executable actually declares bundled services. Selection of the viewer alone is insufficient. |
| Lifecycle/path buttons are unavailable | Check the corresponding compiled configuration and service policy. Do not bypass the restriction through private command objects. |
| Healthy service but broken application | Test the app route, authentication and actual request separately. Health is a narrower observation. |
| Restart leaves work uncertain | Reconcile the app's durable operation/result before offering another effect. |
| Required log line is missing | The retained tail is bounded. Inspect the permitted physical log location when available and safe. |
Qualify startup, health failure, explicit restart and app shutdown in the installed Windows package. Source and browser tests cannot establish actual process-tree behaviour on a user's machine.
Configuration reference
These are the selected package's configuration fields. String credential values and installation-specific defaults are never published here. A field's presence does not bypass its runtime policy.
| Field | Type | Meaning and constraints |
|---|---|---|
overlayDock | select | Overlay position. Choices: right, bottom, floating, fullscreen |
startup | select | Open behaviour. Choices: shortcut, remember, open |
pollIntervalMs | number | Refresh interval (ms). Bounds: 750 to 10000 |
retainEvents | number | Event buffer. Bounds: 250 to 10000 |
retainLogChars | number | Visible log retention. Bounds: 10000 to 1000000 |
allowLifecycleControls | checkbox | Allow start, stop and restart |
allowOpenPaths | checkbox | Allow opening managed paths |
redactSecrets | checkbox | Redact secrets |