@chilcote chilcote released this Jul 3, 2017 · 4 commits to master since this release

Assets 3

Updated to support apfs sorting and High Sierra.

Note: the sort order of processed items has changed, and will now be similar to how ls -l lists files. See the FAQ.

@chilcote chilcote released this Feb 18, 2017 · 8 commits to master since this release

Assets 3

Adding support for running login items as root via the login-privileged-once and login-privileged-every directories. Useful when an admin wants privileged items to be processed at login instead of boot.


  • installing a pkg that requires the user to be logged in.
  • installing 802.1x config profiles for a standard user which require admin auth.
  • kicking off an interactive management task via a system like jamf or munki.

@chilcote chilcote released this Jan 21, 2017 · 9 commits to master since this release

Assets 3

Adding support for adding login-once scripts to an override list so they will be run again.

Outset will now use os.walk to recursively traverse the respective root dirs, making it easier to group similar scripts in subdirectories, i.e.

├── login-once
│   ├── foo
│   │   ├── desktop_script_1.sh
│   │   └── desktop_script_2.sh
│   └── bar
│       ├── network_script_1.sh
│       └── network_script_2.sh

@chilcote chilcote released this May 18, 2016 · 15 commits to master since this release

Assets 3

The last release fixed an issue where the wait_for_network value wasn't working if set to False in the plist. This fix also introduced a breaking change where the value was defaulting to False instead of True. This release fixes that. Upgrade if you rely on the the wait_for_network value being set to True at boot.

@chilcote chilcote released this May 9, 2016 · 19 commits to master since this release

Assets 3

Fixes issue with wait_for_network

@chilcote chilcote released this Mar 18, 2016 · 23 commits to master since this release

Assets 3

2.0.1 Changes:

  • Merged some formatting changes from @rmanly
  • Profiles (mobileconfig files) are natively installed in boot and login contexts.
  • Can define users you wish to ignore during login runs.
  • Preference plist will be created if it doesn't exit, otherwise it will only read values.
  • Working directories (boot-every, etc) will be created if they do not exist, when outset is initiated.
  • Logging will print to stdout for testing.
  • Repo now has example directories for packaging custom and on-demand scripts.
  • General code cleanup

@chilcote chilcote released this Jan 12, 2016 · 46 commits to master since this release

Assets 3

(Making this release 2.0.0 because it introduces breaking changes.)

This release will change some fundamentals, so some cleanup work might be needed:

"firstboot-scripts" and "firstboot-packages" are now consolidated and called "boot-once." This will be less confusing for new users since "firstboot" usually means "run only the first time the system is ever booted ever."

  • You'll want to place scripts/pkgs you wish to run once at boot into the new "boot-once" folder.

"everyboot-scripts" is now called "boot-every," for the same reasoning as above.

  • You'll want to move any existing scripts from "everyboot-scripts" to "boot-every"

Scripts no longer have to have a specific extension (py, rb, sh) to run. It now only checks that the file is executable.

outset now supports "on-demand" scripts. (Issue #14)

  • on-demand script(s) will work for the currently logged in console user only.
  • FUS users in the background will not run the on-demand script(s).
  • on-demand script(s) will not run when the machine is at the loginwindow, or when being invoked manually by root (or sudo)
  • on-demand script(s) are not added to the login once plist. This will allow an admin to push the same on-demand script(s) - multiple times, i.e. a notification.
  • the on-demand folder is cleaned out after each run, so it will not run twice or for subsequent logins.
  • You can trigger on-demand by touching /private/tmp/.com.github.outset.ondemand.launchd, perhaps via a postinstall in a package.

You can edit share/com.chilcote.outset.plist to suppress the network check if you so choose (some environments might not be on a network). You can also customize the timeout time that it will use before bailing on the boot-once scripts.

Packages no longer have to be executable

Scripts and packages with malformed permissions will no longer be added to the run once plist, so you an fix the permissions without having to change the name of the script.

The package installer should no longer require a reboot before the plists are loaded.

Merged some helpful PRs from @rmanly

Jan 4, 2016
fixed formatting of plists; fixed problem where on-demand was running…
… twice

@chilcote chilcote released this Jul 3, 2015 · 79 commits to master since this release

Assets 3

Bringing in some minor commits and a change to using FoundationPlist rather than plistlib, to better deal with binary plists.