{"id":"runtime-radar","repo":"jegork/paseo-runtime-radar","url":"https://github.com/jegork/paseo-runtime-radar","name":"runtime-radar","description":"A Paseo plugin that shows which ports and Docker containers belong to which worktree.","categories":["monitoring","docker","productivity"],"platforms":[],"caveats":["Read-only; runs lsof and docker ps on the daemon host every five seconds while open","Requires lsof; docker is optional"],"images":[],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-09-14T08:29:10.342Z","addedAt":"2026-09-13T19:28:51Z","version":"0.1.0","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-09-14T08:27:38.731Z","commit":"e427e8cd349c648a13b1a9e0c93e8cae15c08761"},"license":"MIT","paseoVersionRequirement":">=0.8.0","manifest":{"id":"runtime-radar","requirements":{"paseo":">=0.8.0"}},"repoMeta":{"stars":0,"defaultBranch":"main","pushedAt":"2026-09-13T19:45:02Z"},"owner":{"login":"jegork","avatarUrl":"https://avatars.githubusercontent.com/u/43540177?v=4"},"installNotesHtml":"<pre><code class=\"language-sh\">paseo plugin add jegork/paseo-runtime-radar\n</code></pre>\n<p>Requires <code>lsof</code> on the daemon machine; <code>docker</code> is optional and its absence is shown on the panel.</p>","readmeText":"# runtime-radar\n\nA Paseo plugin that shows which ports and Docker containers belong to which worktree.\n\n- **Runtime panel** (workspace tab or Explorer): this workspace's listening ports and containers,\n  then everything else on the machine with its working directory.\n- **Runtime radar** (sidebar): every open workspace with its ports and containers, then projects\n  whose main checkout has processes but no open workspace, then anything unattributed.\n- ⌘K: \"Open runtime panel\" in a workspace, \"Open runtime radar\" anywhere.\n\nRefreshes every five seconds while open. The toolbar and Settings → Plugins → Runtime radar choose\nthe grouping: by workspace, by project (a project's worktrees folded together), or by kind (all\nports, then all containers, each row naming its scope). The choice is saved per host.\n\nRows carry Stop and Force kill for processes and Restart and Stop for containers, behind a\nconfirmation. Turn them off in the settings screen. A process is only signalled if `lsof -a -p`\nstill shows it listening, and anything named Paseo, the plugin's own process, and its daemon parent\nare refused outright.\n\n## Install\n\n```sh\npaseo plugin add jegork/paseo-runtime-radar\n```\n\nRequires `lsof` on the daemon machine; `docker` is optional and its absence is shown on the panel.\n\n## How attribution works\n\n- Ports come from `lsof -iTCP -sTCP:LISTEN`; each process's working directory is read with a second\n  `lsof -d cwd`. A process whose cwd sits inside a workspace directory belongs to that workspace,\n  deepest match first, so a worktree beats its project root.\n- Containers come from `docker ps`. Compose sets `com.docker.compose.project.working_dir`, which is\n  matched the same way. Plain `docker run` containers have no directory and show as unattributed.\n- A host port a container publishes is held by Docker's proxy, so those listeners are folded into\n  the container row rather than shown twice.\n- A process whose cwd is unreadable (another user's) still shows, unattributed.\n\n"}