Junction
Open source · Lives in your menu bar

Every link opens in the right app.

Junction becomes your default browser and routes every link you click — to the right browser, browser profile, or native app — by rules you write once. First match wins; anything unmatched opens in your fallback browser.

↓  Install Junction · v0.5.1 Star on GitHub
You clickJunction decidesIt opens here
mycorp.atlassian.net/…zoom.us/j/98765reddit.com/r/macappsapp.clickup.com/t/86a…JUNCTION.APPChromeProfile 1 · workZoomNative appFirefoxpersonal profile
Open source · MITA config file you ownZero telemetryUniversal · Apple silicon + Intel
The routing engine

Match on more than the domain.

Rules are checked top to bottom and the first match wins. Every failure path — a missing browser, a deleted profile, an app that isn't installed — degrades to your fallback browser. A link is never lost.

Patterns

Wildcards, or full regex

Match on host/path*.atlassian.net/*, app.clickup.com/*. * stays inside a segment, ** crosses them, and *.example.com includes the apex domain. Drop to regex when the query string matters.

Source app

Route by where the click came from

A rule can match the app that opened the link — sourceApps: ["com.googlecode.iterm2"] sends Terminal links somewhere other than Mail links.

Profiles

Down to the browser profile

Chromium profile directories (Default, Profile 1) and Firefox profile names. Work links land in the work profile, not just the work browser.

Deep links

Skip the tab entirely

17 built-in rewriters — Zoom, Slack, Figma, Notion, Spotify, Linear, Teams and more — turn a web URL into a native app link. Add your own from Settings → Deep Links.

Picker

Decide at click time

Hold ⌥ Option while clicking any link to force the picker, or give a rule a prompt action so it always asks.

Yours

A config file you own

Rules live in JSON at ~/.config/junction/config.json (honors $XDG_CONFIG_HOME). Edit in the GUI or your editor; it hot-reloads, and an invalid edit keeps the last-good rules.

Write it once

A rule is a match and a destination.

Rules are checked top to bottom, first match wins. Type a URL to see which rule catches it and where Junction would send it.

01*.atlassian.net/*→ Chrome · Profile 1
02*.zoom.us/j/*→ Zoom · deep link
03reddit.com/*→ Firefox · personal
04app.clickup.com/*→ Chrome · Profile 1
05open.spotify.com/*→ Spotify · deep link
06*→ Safari · fallback
Ship it to your Mac

Two ways to install.

Recommended

Homebrew

$ brew tap jnahian/junction https://github.com/jnahian/junctionCOPY
$ brew trust --cask jnahian/junction/junctionCOPY
$ brew install --cask junctionCOPY

The repo is its own tap, so point Homebrew straight at it — then trust the cask, since it lives outside Homebrew's official taps.
Homebrew also symlinks the bundled junction CLI onto your PATH.

Direct

Download the DMG

↓  Junction.dmg · v0.5.1

macOS 13 Ventura or later · Universal (Apple silicon + Intel)
Open the DMG and drag Junction into Applications.

Junction isn't notarized by Apple yet, so macOS quarantines it and refuses the first launch — whichever way you install. Clear the flag afterward (or right-click Junction.app → Open → Open):

$ xattr -dr com.apple.quarantine /Applications/Junction.appCOPY