Automic VaultAutomic Vault

brew

Install duti with Homebrew, MacPorts, Nix

Select default apps for documents and URL schemes on macOS. Version 1.5.4 via Homebrew; verified from local package data.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install duti

local Homebrew formula metadata

MacPortsverified · 94%
sudo port install duti

MacPorts ports tree · sysutils/duti/Portfile · source: api.github.com

Linux

Nixverified · 92%
nix profile install nixpkgs#duti

nixpkgs package indexes · pkgs/by-name/du/duti/package.nix · source: api.github.com

overview

Package summary

Select default apps for documents and URL schemes on macOS

Commands and aliases

  • duti

history

Project history and usage

duti is a macOS command-line utility for setting default applications for document types, URL schemes, extensions, and MIME types. It is one of those small macOS plumbing tools that became package-manager-relevant because Apple exposes the concept through Launch Services and UTIs but not through a friendly shell command.

Project history

The README says duti was originally released into the public domain by Andrew Mortensen in 2008. The current GitHub repository was created in September 2012 and hosts the README, man page, and tagged releases.

The tool is built around Apple's Uniform Type Identifiers and related handler metadata. It can read settings from stdin, a settings file, an XML plist, or command-line arguments, making it easy to script default-app policy on macOS.

Adoption history

duti's adoption is mostly in macOS automation circles: users install it through package managers or build it from source, then use it in setup scripts to make browser, editor, document, and URL-scheme defaults reproducible. The README also labels the project unsupported, which makes its persistence in package managers part of its history.

How it is used

The man page documents `duti -s` for setting handlers, `duti -x` for printing the default app for an extension, and file/plist input for bulk settings. A settings file contains bundle ID, UTI or URL scheme, and role fields such as viewer, editor, shell, all, or none.

Why package nerds care

duti matters because macOS developer machines are often rebuilt from scripts, and default application bindings are otherwise awkward to automate. It gives Homebrew/MacPorts/Nix users a small, scriptable bridge into Apple's UTI and handler database.

Timeline

  • 2008: README says duti was originally released into the public domain.
  • 2012-09-25: GitHub repository created.
  • 2018-04: README license note dated April 2018.
  • 2023-07-09: GitHub repository last pushed according to the GitHub API snapshot.

Related projects

  • The README links `dutis` as an interactive wrapper around duti. Conceptually, duti also sits next to macOS Launch Services tooling and Apple's UTI documentation.

security posture

Risk level: green

narrow executable package without higher-risk signals.

Risk classifier

green risk · low confidence · appliance

Why

  • narrow executable package without higher-risk signals

Signals

  • metadata:no-higher-risk-signals

Install behavior

  • No Homebrew post-install hook is recorded in formula metadata.
  • Homebrew bottle metadata is available for 8 platform targets.
  • Build metadata lists 1 build dependencies.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
duticliglobal executable

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-07-08
manager version1.5.4
manager updated
local dataok
upstreamcurrent
latest detectedduti-1.5.4

https://github.com/moretension/duti

  • infoNo package-manager update timestamp was available.low confidence

install metadata

Package metadata

Package keybrew:duti
Version1.5.4
Package managerHomebrew
Package manager pagehttps://formulae.brew.sh/formula/duti
Homepagehttps://github.com/moretension/duti/
Repositoryhttps://github.com/moretension/duti
Upstream docshttps://github.com/moretension/duti#readme
LicenseLicenseRef-Homebrew-public-domain
Source archivehttps://github.com/moretension/duti/archive/refs/tags/duti-1.5.4.tar.gz
Build dependenciesautoconf
Bottleavailable (on arm64_monterey, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, monterey, sonoma, ventura)
Homebrew post-installnot defined
Servicenone declared

registry facts

Source database details

Source DatabaseHomebrew formula API
Taphomebrew/core
Full Nameduti
Version Scheme0
Revision1
Head VersionHEAD
Requirements
  • macos
Bottle Stable Root URLhttps://ghcr.io/v2/homebrew/core
Deprecatedno
Disabledno
Keg Onlyno
URL Keys
  • head
  • stable

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Nix95%

duti

nix profile install nixpkgs#duti
  • normalized package name match
  • Matched by: Duti
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/du/duti/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
MacPorts95%

duti

sudo port install duti
  • normalized package name match
  • Matched by: Duti
MacPorts ports tree · api.github.com · MacPorts ports tree: sysutils/duti/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • Nucleus package database
  • av.db category and tag curation
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • package relationship graph
  • package version freshness
  • package-page enrichment