Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ListenBar app icon

ListenBar

A native macOS menu bar utility for seeing what is listening on your Mac.

macOS 14+ Swift 5.9 SwiftUI TCA Xcode 26.5 Universal Binary Latest Release

🇨🇳 简体中文 · 🇺🇸 English

🖼️ Screenshots

ListenBar light appearance showing the main menu and process actions

ListenBar dark appearance showing the main menu and process actions

✨ Highlights

  • 🔎 Find listeners at a glance. Scan TCP LISTEN endpoints and UDP sockets with a concrete local port, then see their exposure, protocol, port, PID, process or app name, executable path, command line, inferred source, and resident memory when available.
  • 🧩 Understand which process owns each port. Related helper processes are grouped under their owning macOS app, while command-line listeners remain separated by PID. Current-user processes are also distinguished from system or other-user processes.
  • 🔗 Open services and copy what you need. Open eligible loopback TCP services at http://localhost:<port>, or copy URLs, ports, PIDs, paths, lsof commands, process details, and complete listener reports.
  • 🔒 Share diagnostics more safely. Choose between full and redacted command-line copy actions to omit sensitive arguments when needed.
  • 🛠️ Inspect and manage processes. Reveal executables in Finder, view native app or executable icons, quit or force-quit apps, and send SIGTERM or SIGKILL to individual processes, with confirmation for destructive or higher-risk actions.
  • 🙈 Ignore persistent noise. Ignore listeners by stable app or executable identity, then restore individual items or all ignored items from the menu.
  • 🔄 Keep the list current. Refresh whenever the menu opens, use an optional 1-, 2-, or 5-second interval, disable automatic refresh, or check for updates manually through Sparkle.
  • 🚀 Launch at login. Start ListenBar automatically after signing in, with a direct link to macOS Login Items settings when approval is required.

🪶 Native and lightweight

  • 🍎 Truly native. ListenBar's app business code is 100% Swift, built with SwiftUI and The Composable Architecture (TCA). It uses MenuBarExtra and LSUIElement instead of an Electron runtime or embedded WebView.
  • 🪶 Ultra-lightweight software. ListenBar stays focused on inspecting local listeners without shipping an entire browser engine.
  • 🎨 At home on macOS. The interface automatically follows Light and Dark Mode. Native SwiftUI menu controls adopt the system-provided Liquid Glass appearance where appropriate on macOS 26, while macOS 14 and macOS 15 retain their own native styling. ListenBar does not simulate Liquid Glass with custom visual effects. Releases are built with Xcode 26.5.

📦 Installation

Requirements

  • macOS 14 Sonoma or later
  • Apple Silicon or Intel Mac (Universal Binary)

Homebrew

The brew trust command first shipped with Homebrew 5.1.15 on June 3, 2026. In Homebrew 5.1.15 through 5.x, trust was required only when HOMEBREW_REQUIRE_TAP_TRUST=1 was set. Starting with Homebrew 6.0.0 on June 11, 2026, casks from non-official taps require explicit trust by default.

brew tap ygsgdbd/tap
brew trust --cask ygsgdbd/tap/listenbar
brew install --cask listenbar

This trusts only the third-party listenbar cask, not the entire tap. Homebrew stores the trust entry, so you normally need to run the trust command only once. The custom cask also includes a postflight step that removes the macOS quarantine attribute from ListenBar after installation. ListenBar is still unsigned and not notarized, and brew trust is not an official Gatekeeper certification. See Homebrew's Tap Trust documentation for details.

Homebrew 5.1.14 and earlier do not have brew trust and do not require it:

brew tap ygsgdbd/tap
brew install --cask listenbar

If brew trust reports Unknown command: trust, skip that command or run brew update to upgrade Homebrew.

Update Homebrew installations with:

brew upgrade listenbar

Tap Trust Troubleshooting

  • If Homebrew reports Refusing to load cask ... from untrusted tap, run brew trust --cask ygsgdbd/tap/listenbar, then retry the installation or upgrade.
  • If brew doctor reports that ygsgdbd/tap is untrusted, trust only the ListenBar cask with the command above; trusting the entire tap is not required.
  • If an existing installation stops upgrading after Homebrew is updated to 6.0.0 or later, trust the cask and retry brew upgrade listenbar.
  • To trust every current and future formula, cask, and external command in the tap, use brew trust ygsgdbd/tap. This grants broader access and is not the recommended option.

GitHub Releases

  1. Download ListenBar-macOS-universal.zip from the latest GitHub Release.
  2. Unzip it and move ListenBar.app to /Applications.

First launch and Gatekeeper

Current release builds are unsigned and not notarized. macOS may therefore block the first launch even when the app was downloaded from the official release page.

  1. In Finder, Control-click or right-click ListenBar.app, choose Open, then choose Open again.
  2. If macOS still blocks it, open System Settings → Privacy & Security, find the ListenBar warning, click Open Anyway, and confirm Open.

Only bypass Gatekeeper when you obtained the app from this repository's official GitHub Releases and trust the download.

Release integrity

Release assets include a SHA-256 checksum, and Sparkle updates are protected by an EdDSA signature in appcast.xml. Releases published after this workflow change also include a GitHub Artifact Attestation for ListenBar-macOS-universal.zip; v0.4.0 and earlier releases predate this attestation support.

Production releases must use an annotated vX.Y.Z tag whose commit is already contained in the protected main branch:

git tag -a vX.Y.Z -m "ListenBar vX.Y.Z"
git push origin vX.Y.Z

After downloading an attested release zip, verify its build provenance with GitHub CLI:

RELEASE_TAG=v0.5.0
SOURCE_DIGEST=$(gh api repos/ygsgdbd/ListenBar/commits/$RELEASE_TAG --jq .sha)
gh attestation verify ListenBar-macOS-universal.zip \
  --repo ygsgdbd/ListenBar \
  --signer-workflow ygsgdbd/ListenBar/.github/workflows/release.yml \
  --source-ref "refs/tags/$RELEASE_TAG" \
  --source-digest "$SOURCE_DIGEST"

The GitHub Actions web UI only dispatches workflows from branches, which this release workflow intentionally rejects. To manually retry a release, start a new run from the target tag with GitHub CLI:

RELEASE_TAG=v0.5.0
gh workflow run release.yml \
  --ref "$RELEASE_TAG" \
  -f release_tag="$RELEASE_TAG"

The --ref value and release_tag input must name the same tag. You can also dispatch the workflow through the GitHub API with that tag as the request ref.

🧪 Development and tests

The XCTest suite covers reducer behavior, settings persistence, ignored listener identities and filtering, login item management, port parsing and grouping, process metadata, menu presentation, screenshot fixtures, and Sparkle configuration.

Requirements: Xcode 26.5, Homebrew, just, SwiftFormat, and Tuist.

Install the development tools manually, then enable the repository-managed Git hook and run the complete local validation:

brew install just swiftformat tuist
swiftformat --version # Must be 0.62.1
just setup
just check

just setup only checks the installed tools and configures core.hooksPath; it never installs or upgrades software. If Homebrew no longer provides SwiftFormat 0.62.1, install that exact version from the official release.

just check is the local acceptance entry point. It checks Swift formatting and runs the complete XCTest suite with the repository-managed build and test parameters.

Before each commit, the hook formats staged Swift files. When formatting changes are required, the commit stops so you can review the diff, stage the updated files, and retry. Partially staged Swift files are not modified automatically; stage or stash the remaining edits, or run just format manually. Run just --list to see all available development commands.

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages