Find and manage local dev servers.

One row per job: ports, project, origin, and age. Jump to its origin, open its URL, or stop it.

Install with Homebrew

brew install filipgutica/tap/devps

Picker: fzf 0.66+ and terminal input; otherwise, a plain table. Install Homebrew if needed.

Runs on
macOS only
Written in
TypeScript
License
MIT

devps 0.1.1 demo output; controls updated for browse mode.

Pick

devps

One row per job. The preview shows the origin, the jump target, the working directory, and the chain of processes that launched it.

Orphaned

Down, Down

A server whose launcher is gone is marked ⚠ orphaned. devps still knows which agent thread started it, and jumping copies the resume command.

List

devps ls

The same rows as a plain table. devps prints this when a supported fzf is unavailable or standard input is not a terminal.

Stop

devps kill 5173

Shows the processes it will stop, then asks. -y skips the question.

Commands

Matches port first, then root or listener PID.

  • devps

    Interactive picker.

  • devps ls

    Plain table.

  • devps jump 5173

    Focus the originating terminal, editor, or agent app.

  • devps open 5173

    Open http://localhost:5173.

  • devps kill 5173

    Stop the whole job after confirmation; -y skips it.

  • devps --all

    Include all TCP listeners, beyond dev runtimes.

Keys in the picker

Starts in browse mode. While searching, q and / are text.

  • /

    Edit the filter.

  • q

    Quit from browse mode.

  • Enter

    Search: keep the filter in the header and return to browsing. Browse: jump to origin.

  • Esc

    Search: clear the filter and return to browsing. Browse: quit.

  • Ctrl+O

    Open its URL.

  • Ctrl+X

    Stop selected jobs after confirmation.

  • Tab

    Select multiple jobs.

  • Ctrl+R

    Refresh the list.

  • Ctrl+↑ / Ctrl+↓

    Scroll details. Ctrl shortcuts and multi-selection work in both modes.

  • Ctrl+C

    Quit from either mode.

Where jump lands

Exact targets depend on available origin information.

OriginJump target
Warp, iTerm2, Terminal, tmuxTab or pane when session information matches.
VS CodeFolder's window; cannot select a terminal tab.
Codex app, T3 Code Workbench, Claude app App; copies codex resume <id> or claude --resume <id> for known sessions.

Good to know

Stopping: SIGTERM to the root and children; SIGKILL to survivors after three seconds. GUI apps, PID 1, and devps's terminal or agent are protected.

Orphan origins: only allowlisted hints such as WARP_FOCUS_URL and CODEX_THREAD_ID are read. Other environment values are never printed, stored, or passed on.

Compiled servers outside your home directory may be hidden.--all includes every TCP listener.

macOS only: uses ps, lsof, open, osascript, and pbcopy. Some origins allow only app focus, not an exact tab or conversation.

Also from Filip

Homebrew tap

  • annoterm

    Markdown review and agent feedback.

  • wtree

    Git worktree status and cleanup.

  • Workbench

    Tickets and agent threads across repositories.