Skip to content
Bart Reardon edited this page Jun 11, 2026 · 16 revisions

Introduction to Outset

Outset automatically processes packages and scripts during the boot sequence, user logins, or on demand.

Requirements

  • macOS 10.15+

Overview

Outset is triggered by launchd so there is no interactive mode in production. For testing purposes, one may manually invoke the command(s), and progress will write to stdout:

sudo /usr/local/outset/outset --boot
/usr/local/outset/outset --login

Available options can be seen by invoking the built in help:

/usr/local/outset/outset --help

Processing directories at a glance

Items are processed from subdirectories of /usr/local/outset/. The directory determines when an item runs, in which context, and how often:

Directory Runs Context Frequency
boot-once/ at boot root once (item is deleted after processing)
boot-every/ at boot root every boot
login-window/ at the login window root every time the login window appears
login-once/ at user login user once per user
login-every/ at user login user every login
login-privileged-once/ at user login root once per user
login-privileged-every/ at user login root every login
on-demand/ when triggered user once (directory is emptied after processing)
on-demand-privileged/ when triggered root once (directory is emptied after processing)

See How Outset Works for full details of each run mode. Scripts can also be delivered as MDM payloads instead of files on disk, run in the background by prefixing the filename with _, and verified before execution with script signing.

macOS 13+

From macOS 13 onwards, launchd items appear in System Settings as "Login Items" and users have the opportunity to enable or disable unless they are configured as managed by an MDM.

Managing multiple login items individually can be tedious and can appear messy and confusing to the user.

Outset is designed to make the life of a system administrator easier by providing a way to securely run login scripts, managed under a single login item.

image

Clone this wiki locally