Skip to content
CAI
Software that uses CAICheck a score

productdevbook/port-killer

59.6

Adequate · 30 September 2026

20.5k

lines of production code

Swift

with C#, Python, Rust

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

PortKiller is a cross-platform desktop utility for monitoring and managing local network ports, supporting macOS, Windows, and Linux. It provides native system tray integration and main windows for scanning active TCP ports, identifying associated processes, and terminating them. The application also includes features for managing Cloudflare tunnels and Kubernetes port-forwards, with platform-specific implementations for each operating system.

Features

Introduce native Linux tray application with system integration

PortKiller now offers a native Linux experience via a Python-based tray app, replacing previous methods. The application integrates with the desktop environment by installing an autostart entry, a desktop launcher, and a system tray icon (using AppIndicator/Ayatana). It provides a GTK3-based interface for monitoring local ports, managing Cloudflare tunnels, and controlling Kubernetes port-forwards, featuring a searchable floating window and a system tray menu for quick actions like killing processes or copying URLs. The installation script handles dependency checks for Python 3, GTK3, and AppIndicator libraries, and copies the application assets to the user's local share directory.

platforms/linux, portkiller-core · high confidence

Introduce native Windows WPF client for PortKiller

A new native Windows desktop application has been added to the Windows platform, built with WPF and featuring a modern dark UI with acrylic blur effects. This client provides a system tray icon for quick access, a main window for scanning and killing ports, and a dedicated Cloudflare Tunnels management view that allows users to select protocols and manage tunnel states. The application includes a mini-window for compact monitoring and uses dependency injection to manage services for port scanning, process killing, settings, and notifications.

platforms/windows · high confidence

PortKiller macOS app introduces auto-refresh, port labels, notes, favorites, and auto-kill rules

The macOS application now features an adaptive auto-refresh mechanism that dynamically adjusts polling intervals based on port list stability, reducing resource usage when ports are idle. Users can now organize their port list with custom labels and freeform notes for each port, mark ports as favorites, and set up auto-kill rules to automatically terminate processes that have been listening for a specified duration. The app also supports process type notifications, allowing users to receive alerts when new ports matching specific process types appear, and includes a deep kill option to terminate both the listening process and its established connections.

platforms/macos/Sources · high confidence

Removals

Removal of PortManager and PortScanner modules

The PortManager and PortScanner classes have been removed from the application. This eliminates the previous functionality that scanned for listening TCP ports using the system lsof command and managed the lifecycle of port-scanning tasks, including auto-refresh intervals and process termination (kill) operations.

Sources/Managers · high confidence

Removal of legacy build-app.sh script

The \scripts/build-app.sh\ file, which previously handled building the release binary and assembling the application bundle, has been removed. This change eliminates the manual steps for copying resources, signing the app, and creating the final \.app\ directory structure, indicating a shift to a different build or packaging mechanism.

scripts · high confidence

Removal of legacy menu bar interface and port model

The application has removed the previous \MenuBarView\ (the standalone menu bar UI with search, port list, and kill actions) and the \PortInfo\ model struct. This change eliminates the old single-window menu bar experience in favor of the new main window architecture introduced in this release.

Sources/Views · high confidence

Behavioural changes

Removal of legacy menu bar app entry point

The legacy \PortKillerApp\ entry point, which previously launched the application as a menu bar extra with a fixed system icon and no main window, has been removed. This change eliminates the old single-scene architecture in favor of the new structure that includes a main window and enhanced port management features.

Sources · high confidence

macOS app icon updated with transparent margin and version bumped to 1.2.1

The macOS app icon has been redesigned to include a standard 100px transparent margin, ensuring it renders at the correct size in the Dock and Finder rather than appearing oversized. The application version has been updated to 1.2.1 (build 13), and the Info.plist now includes configuration for Sparkle automatic updates, high-resolution support, and user notifications.

platforms/macos/Resources · high confidence

macOS build script patches KeyboardShortcuts for app bundle compatibility

The macOS build script now automatically patches the KeyboardShortcuts library source files during the build process to ensure resource bundles are located correctly within the macOS app bundle structure. This change modifies the library's localization and resource access logic at build time, allowing the PortKiller.app to function correctly without requiring manual intervention or external configuration for resource paths.

platforms/macos/scripts · high confidence

Test coverage

Added tests for Cloudflare tunnel discovery and port filtering logic

Added new test suites for the macOS platform covering the CloudflaredDiscoveryService (parsing ingress rules, handling comments and quoted values), the PortFilter (search text, port ranges, process types, favorites, and watched ports), and the ProcessType detection logic (categorizing processes into web server, database, development, system, and other categories).

platforms/macos/Tests · high confidence

Dependencies

Initial dependency manifests for multi-platform release automation and native clients

This change introduces the foundational dependency manifests for the PortKiller project, establishing the tooling and libraries for its new multi-platform architecture. It adds a root package.json defining bumpp for release automation, a macOS Package.swift targeting Swift 6.2 and macOS 15 with dependencies on KeyboardShortcuts, Defaults, LaunchAtLogin-Modern, and Sparkle for native macOS features, a Windows PortKiller.csproj targeting .NET 9.0 with WPF and CommunityToolkit.Mvvm, and a Rust core library (portkiller-core) using Tokio and serde. These manifests replace the previous single root Package.swift, signaling a shift from a monolithic Swift structure to distinct, platform-specific implementations.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 60 → 60 (-0.7)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 59 → 59 (-0.2)
  • Architecture 80 → 80 (+0.0)
  • Maturity 59 → 59 (-0.0)
  • Readiness 62 → 57 (-4.9)
  • Security 57 → 67 (+9.9)

Resolved (9)

  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no contributor guidance (README.md)
  • Duplicated block (8 lines × 2) (platforms/macos/Sources/Services/PortGroupingService.swift)
  • Edited copy of a member (9 corresponding lines) (platforms/windows/PortKiller/MainWindow.xaml.cs)
  • High CVE: [CVE redacted] (bun.lock)
  • High CVE: [CVE redacted] (bun.lock)
  • Hotspot: platforms/macos/Sources/Managers/PortForwardManager.swift (platforms/macos/Sources/Managers/PortForwardManager.swift)
  • Medium CVE: [CVE redacted] (bun.lock)
  • Medium CVE: [CVE redacted] (bun.lock)

New (48)

  • Duplicated block (10 lines × 2) (platforms/macos/Sources/Services/PermissionService.swift)
  • Duplicated block (10 lines × 2) (platforms/macos/Sources/Views/PortForwarder/DetailPanel/ConnectionEditSection.swift)
  • Duplicated block (10 lines × 2) (platforms/macos/Sources/Views/PortForwarder/DetailPanel/ConnectionEditSection.swift)
  • Duplicated block (11 lines × 2) (platforms/linux/src/ui/window.py)
  • Duplicated block (11 lines × 2) (platforms/macos/Sources/Views/CloudflareTunnels/CloudflareTunnelsView.swift)
  • Duplicated block (11 lines × 3) (platforms/linux/src/ui/tray.py)
  • Duplicated block (12 lines × 2) (platforms/macos/Sources/Views/Components/PortRow/PortRowView.swift)
  • Duplicated block (12 lines × 2) (platforms/macos/Sources/Views/Settings/AutoKillSettingsSection.swift)
  • Duplicated block (12–13 lines × 2) (platforms/linux/src/ui/tray.py)
  • Duplicated block (12–13 lines × 3) (platforms/macos/Sources/Views/Settings/CloudflaredSettingsSection.swift)
  • Duplicated block (13 lines × 2) (platforms/macos/Sources/Views/PortForwarder/PortForwarderToolbar.swift)
  • Duplicated block (13–14 lines × 2) (platforms/macos/Sources/Views/Settings/CloudflaredSettingsSection.swift)
  • Duplicated block (13–17 lines × 2) (platforms/macos/Sources/Views/CloudflareTunnels/CloudflareTunnelsView.swift)
  • Duplicated block (14 lines × 2) (platforms/linux/src/ui/dialogs.py)
  • Duplicated block (14 lines × 2) (platforms/linux/src/ui/window.py)
  • Duplicated block (16 lines × 2) (platforms/macos/Sources/Views/Onboarding/OnboardingSetupStep.swift)
  • Duplicated block (17 lines × 2) (platforms/linux/src/ui/tray.py)
  • Duplicated block (17 lines × 2) (platforms/macos/Sources/Views/Settings/CloudflaredSettingsSection.swift)
  • Duplicated block (18 lines × 2) (platforms/macos/Sources/Views/PortForwarder/DetailPanel/ConnectionInfoSection.swift)
  • Duplicated block (19 lines × 2) (platforms/macos/Sources/Views/PortForwarder/ServiceBrowserView.swift)
  • …and 28 more

Architecture

  • Unchanged — 1 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

productdevbook/port-killer was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit fcfdb5a0cd81e82818fc0aa32a09560901d921d7 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.