d3, a.k.a. depot3,  is a command-line driven software deployment and patch management system for OS X that enhances the capabilities of Jamf Pro.

d3 adds these capabilities and more to Jamf Pro's package handling:

  • Automatic software updates on clients when new versions are released on the server
  • Pre-release piloting of new packages
  • Customizable slideshow presented during logout/reboot installs
  • Installs and uninstalls are conditional on the exit status of pre-flight scripts
  • Packages can be expired (auto-uninstalled) after a period of disuse
  • Both the client and admin tools are command-line only and fully scriptable
  • Admin command-line options allow integration with developer workflows and package-retrieval tools

d3 is written in Ruby and available as a github project and a Ruby gem called 'depot3'. It interfaces with Jamf Pro mostly via it's REST API using the ruby-jss, which it expands upon. It also accesses the JSS's backend MySQL database directly to provide enhanced features.

d3 was written to meet Pixar's needs, in our relatively simple Jamf Pro  environment. As such it might not be appropriate for all Casper users.

Our needs included:

  • Fully usable from the command-line and scriptable.
  • Ease-of-use for software developers to package, pilot, and deploy their wares.
  • Automatic installation of software based on tags or group membership
  • Automatic updating of installed software.
  • The ability to pilot pre-release software, and disable auto-updating during pilot.
  • Automatic removal of unused software

That said, part of the reason we've made it open-source is with the hopes that others will use it and be able to improve it, making it useful for a wider range of Jamf Pro users.

What d3 isn't

d3 makes no attempt to automatically search and retrieve newly-available patches or updates from the internet. It works with packages you provide or create (d3 can build them for you!)

An eventual goal is to integrate a tool like AutoPkg for this purpose. Also, as Jamf's own patch management system evolves, we plan to integrate it with d3.

d3 will not currently work with Cloud instances of the JSS. It requires MySQL access to the JSS database.

It also requires that the the master distribution point be a regular fileshare distribution point, not a JDS. There is minimal support for a cloud-based distribution point for failover access to package installers (the Jamf Pro REST API has no access to cloud distribution point data)