Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/0xdps/default-tamer/llms.txt

Use this file to discover all available pages before exploring further.

This guide will walk you through creating your first rule and understanding how Default Tamer routes URLs.
Before starting, make sure you’ve installed Default Tamer and set it as your default browser.
Let’s create a rule that opens all links from Slack in Chrome.
1

Open Rules

Click the Default Tamer menu bar icon, then click Rules at the top of the menu.
2

Add a New Rule

Click the ”+” button at the bottom of the Rules list.
3

Select Rule Type

In the rule editor, set:
  • Type: Source App
  • Source App: Slack
  • Target Browser: Chrome
Leave “Open in Private Mode” unchecked for now.
4

Save the Rule

The rule is automatically saved. You should see it appear in your Rules list:
From Slack → Chrome
5

Test It

Open Slack and click any link. It should now open in Chrome instead of your fallback browser.
Congratulations! You’ve created your first routing rule.

Understanding Rule Priority

Rules are evaluated top-to-bottom. The first matching rule wins.
This means rule order matters. Let’s see why:

Example: Specific Before General

Say you want:
  • GitHub links from Slack → Firefox
  • All other Slack links → Chrome
You need two rules in this order:
1

Rule 1: GitHub from Slack

  • Type: Domain
  • Domain: github.com
  • Match Type: Exact
  • Source App: Slack (if you want this only from Slack)
  • Target Browser: Firefox
2

Rule 2: All Slack Links

  • Type: Source App
  • Source App: Slack
  • Target Browser: Chrome
Put more specific rules (like domain + source app) above more general rules (like source app only).
To reorder rules, drag and drop them in the Rules list.

Rule Type Examples

Source App Rule

Route based on which app sent the link. Use case: Open all links from Cursor in Chrome
  • Type: Source App
  • Source App: Cursor
  • Target Browser: Chrome
// DefaultTamer/Models/Rule.swift:88-102
static func cursorToChrome() -> Rule {
    var rule = Rule(type: .sourceApp, targetBrowserId: "com.google.Chrome")
    
    if let bundleId = AppResolver.resolveBundleId(forAppNamed: "Cursor") {
        rule.sourceAppBundleId = bundleId
        rule.sourceAppName = "Cursor"
    }
    
    return rule
}

Domain Rule (Exact)

Route based on exact domain match. Use case: Open all GitHub links in Firefox
  • Type: Domain
  • Domain: github.com
  • Match Type: Exact
  • Target Browser: Firefox
Exact matching normalizes www. prefixes, so github.com matches both github.com and www.github.com.

Domain Rule (Suffix)

Route based on domain suffix. Use case: Open all Atlassian products (Jira, Confluence) in Chrome
  • Type: Domain
  • Domain: .atlassian.net
  • Match Type: Suffix
  • Target Browser: Chrome
This matches:
  • mycompany.atlassian.net
  • jira.atlassian.net
  • Any subdomain ending in .atlassian.net

Domain Rule (Contains)

Route based on domain substring. Use case: Open any domain containing “jira” in Chrome
  • Type: Domain
  • Domain: jira
  • Match Type: Contains
  • Target Browser: Chrome
This matches:
  • jira.mycompany.com
  • company-jira.com
  • myjirainstance.net

URL Pattern Rule (Contains)

Route based on URL content. Use case: Open all admin pages in Safari
  • Type: URL Pattern
  • URL Contains: /admin
  • Target Browser: Safari
This matches any URL containing /admin in the path.

URL Pattern Rule (Regex)

Route based on advanced pattern matching. Use case: Open all staging/preview environments in Firefox
  • Type: URL Pattern
  • URL Regex: https?://.*\.(staging|preview)\..*
  • Target Browser: Firefox
This matches:
  • https://app.staging.company.com
  • http://site.preview.dev
Invalid regex patterns will be silently ignored. Test your regex before relying on it.

Option Key Override

No matter what rules you have configured, you can always manually choose a browser:
1

Hold Option Key

Hold down the ⌥ Option key on your keyboard.
2

Click the Link

While still holding Option, click any link.
3

Choose Browser

Default Tamer will show a browser chooser dialog. Select your preferred browser.
This is useful for one-off situations where you want to override your rules, like opening a link in a specific browser profile.

Private Mode

Each rule can optionally open links in private/incognito mode. Use case: Open all social media links in private mode
  • Type: Domain
  • Domain: twitter.com
  • Match Type: Exact
  • Target Browser: Safari
  • Open in Private Mode: ✅ Enabled
Private mode support varies by browser. Most modern browsers (Safari, Chrome, Firefox, Arc) support it.

Activity Log

To see which rules are matching and debug your routing:
1

Enable Activity Log

  1. Click the Default Tamer menu bar icon
  2. Go to ⚙️ Preferences → General
  3. Under Diagnostics, toggle on “Activity Log”
2

View Logs

Click any link, then return to the Default Tamer menu to see recent routing decisions.The log shows:
  • URL (sanitized)
  • Source app
  • Which rule matched
  • Target browser
Activity logs are stored locally and URLs are sanitized to remove tokens, API keys, and secrets.

Disable Routing Temporarily

To temporarily disable Default Tamer without changing your system default browser:
  1. Click the Default Tamer menu bar icon
  2. Toggle the switch at the top from green (enabled) to gray (disabled)
When disabled, all links will open in your fallback browser.

Common Patterns

Here are some popular routing setups:

Work vs Personal

1. Domain: .company.com (Suffix) → Chrome (work profile)
2. Domain: .atlassian.net (Suffix) → Chrome (work profile)
3. Domain: .slack.com (Suffix) → Chrome (work profile)
4. Fallback: Safari (personal)

Development Environments

1. URL Contains: localhost → Chrome
2. URL Contains: 127.0.0.1 → Chrome
3. URL Regex: https?://.*\.(dev|staging)\..* → Firefox
4. Domain: github.com (Exact) → Arc
5. Fallback: Safari

Source-Based Routing

1. Source App: Slack → Chrome
2. Source App: Cursor → Chrome
3. Source App: Mail → Safari
4. Fallback: Arc

What’s Next?

Rule Types

Learn about rule types, matching logic, and advanced patterns

Creating Rules

Step-by-step guide to building powerful routing rules

Import & Export

Back up and share your rules as JSON or CSV

Troubleshooting

Common issues and solutions

Build docs developers (and LLMs) love