Skip to content

Releases: fr3on/portkill

PortKill 0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 14:06

Highlights

  • Multi-Language Support (7 Languages). PortKill is now fully localized with native translations:
    • English (en)
    • 简体中文 / Simplified Chinese (zh-Hans)
    • 日本語 / Japanese (ja)
    • Deutsch / German (de)
    • Español / Spanish (es)
    • Français / French (fr)
    • Türkçe / Turkish (tr)
  • In-App Language Switcher. Switch your preferred language anytime from the settings gear menu, or let PortKill automatically follow your macOS system default language.
  • Menu Stability Fix. Fixed an issue where hovering over settings submenus (such as "Open in" or "Language") caused the menu to dismiss automatically without clicking. Background polling and CPU sampling are now paused while any menu is open, keeping interactions smooth and stable.
  • Refined Minimal Preview Banner. Updated documentation with a clean, high-resolution minimal Retina preview banner showcasing the app's core capabilities.

Privacy

PortKill remains 100% offline with zero telemetry and zero third-party dependencies. It collects nothing, tracks nothing, and makes no network requests unless you explicitly click "Check for Updates…".

Install

Download PortKill-0.3.0.dmg, open it and drag PortKill to Applications. Check the download against SHA256SUMS.txt if you like.

This build is unsigned and not notarized, so macOS blocks it on first launch. Open System Settings > Privacy & Security and click Open Anyway, or run:

xattr -dr com.apple.quarantine /Applications/PortKill.app

Full list of changes: CHANGELOG.md

PortKill 0.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 19:58
4a03b30

Highlights

  • Docker-aware. Ports published by Docker Desktop or OrbStack show the container name and image instead of com.docker.backend. These rows are read-only (signalling the proxy would stop the engine) and offer a copyable docker stop <name>.
  • One row per process. A process listening on several ports shows them together, and a container's ports are grouped the same way.
  • Memory per row, and project detection for Go, Ruby, PHP, Java/Kotlin, Elixir and Pipenv projects.
  • Keyboard first. ⌘F searches, Esc clears, ⌘R refreshes.
  • Quick actions. Open the project in Terminal, iTerm2, Ghostty, Warp, kitty or Alacritty, and copy kill <PID> or lsof snippets. The kill snippet sends SIGTERM, never SIGKILL.
  • Settings menu. Launch at Login, an optional port count in the menu bar, a system-process toggle, opt-in UDP sockets and a terminal picker.
  • Redesigned popover with category filters and a resizable height, plus an About dialog.
  • Lighter when idle. With the menu bar count on, a closed popover runs one lsof every 10 seconds. Unchanged scans no longer redraw the popover.

Privacy

PortKill still collects nothing. Updates are checked only when you choose "Check for Updates…", which sends one request to api.github.com. It never checks on its own. Docker is queried only through a local socket, never a remote host.

Upgrading from 0.1.0

The bundle identifier changed to com.0x200.portkill, so your saved 0.1.0 settings do not carry over.

Install

Download PortKill-0.2.0.dmg, open it and drag PortKill to Applications. Check the download against SHA256SUMS.txt if you like.

This build is unsigned and not notarized, so macOS blocks it on first launch. Open System Settings > Privacy & Security and click Open Anyway, or run:

xattr -dr com.apple.quarantine /Applications/PortKill.app

Full list of changes: CHANGELOG.md

PortKill 0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 17:20

What's new

  • Menu bar popover listing every process listening on a local TCP port, with PID, uptime and owning project.
  • Project detection from the process working directory (.git, package.json, Package.swift, pyproject.toml, Cargo.toml).
  • Two-stage kill: SIGTERM, then an explicit Force Kill after 3 seconds.
  • Safety rules: PID 0/1, PortKill itself, other users' processes and known system processes are read-only.
  • Guard against PID reuse: a process is only signalled if it is still the one that was scanned.
  • Search by port, command or project. Click a port to copy localhost:<port>.
  • Universal (arm64 + x86_64) build, DMG packaging, and a GitHub Actions release workflow that publishes a draft release with the DMG (signed and notarized when secrets are set).

Install

Download PortKill-0.1.0.dmg, open it and drag PortKill to Applications. This build is unsigned and not notarized, so macOS blocks it the first time: open System Settings > Privacy & Security and click Open Anyway, or run:

xattr -dr com.apple.quarantine /Applications/PortKill.app

Requires macOS 14 or later. The SHA-256 checksum is in SHA256SUMS.txt.