Skip to main content
Software Deployment

How software deployment works

Package managers, deployment settings, deployment schedules and permissions for installing and updating software on managed devices automatically.

octoja installs and updates third-party software on managed devices automatically. You decide which software goes to which devices and when; the octoja agent on each device handles the rest.

How it works

  1. You add the software to a config package — a reusable bundle of software deployments, checks, and agent settings.
  2. One deployment schedule covers every software deployment in the package — every night at 03:00, say, or when the agent starts. Leave it empty and octoja keeps the software current continuously.
  3. Assignment rules decide which devices the package reaches — every Windows server of one customer, or every device carrying a certain tag. A package can also target one single device.
  4. The agent installs or updates the software with the matching package manager. A package can hold software from several package managers; each device runs only the deployments that match its operating system.

The Software tab on the 'Workstation Software Baseline' config package: three deployments grouped by package manager — Chocolatey > Firefox, winget > Visual Studio Code, APT > nginx — each with desired version 'Latest' and install behavior 'Install & Update'. Deployment Schedule above is set to 'Run every day at 03:00'.

To add a deployment, see Deploy Software to Devices.

Package managers

Package managerPlatformPackage sourceSearch in octoja
ChocolateyWindows 7 and newerChocolatey Community Repository (community.chocolatey.org)Yes
wingetWindows 10 (1709+) and Windows 11Microsoft's winget package index, community source wingetYes
HomebrewmacOSFormulae (command-line tools) and casks (graphical apps) from formulae.brew.shYes — casks carry a Cask badge
APTDebian and UbuntuThe distribution's repositoriesNo — you type the exact package name, as apt-get expects it
CustomWindowsCustom packages your octoja instance hosts on its built-in Chocolatey feedYes — searches your published custom packages

You cannot connect an external repository for software. To deploy software that is in none of these catalogues, package it yourself — see Build and Deploy a Custom Package.

  • Chocolatey has the larger community catalogue; version history is available for most packages. If a Windows device does not have Chocolatey yet, octoja installs it before the first Chocolatey deployment.
  • winget ships with Windows 10 version 1709 and later. octoja uses the community source winget, not msstore. An unavailable Microsoft Store therefore does not block management; the community source and each package's download addresses must still be reachable.
  • Homebrew typically offers only the latest stable version. If an Apple-Silicon Mac does not have Homebrew yet, octoja installs it before the first Homebrew package. That needs someone signed in at the Mac with an administrator account, because Homebrew will not run as root and wants an administrator to own its files. On Intel Macs, Homebrew must already be installed. Existing installations are detected and used on either architecture.

Deployment settings

You pick the package manager on the tabs of the Add Software dialog. The choice is fixed once the deployment is added; the edit dialog shows the package manager as a read-only badge. A Mode toggle above the tabs decides what the deployment does and changes the remaining fields:

  • Specific package (default) installs or updates exactly the package you choose.
  • Update all outdated upgrades every package the package manager reports as outdated. This mode is optional and also covers installed software you have not assigned individually.

Specific package mode

FieldTypeRequiredDefaultDescription
Package NamestringYes—Typed by hand for APT only, exactly as the package appears in the distribution's repository (e.g. nginx, curl, htop). For the other package managers the catalogue fills it in
Display NamestringYes—Label shown in the octoja interface, pre-filled from the catalogue entry or package name
VersionstringNoLatest (latest)Latest always installs the newest available version, or pick a specific version from the list. For APT this is a text box for an exact version such as 1.18.0-0ubuntu1; empty means the latest
Install BehaviorenumNoInstall & UpdateInstall & Update (InstallAndUpdate) installs the software if missing and updates an older version. Update Only (UpdateOnly) only updates software that is already installed
Install ArgumentsstringNo—winget and Chocolatey only; see the Install arguments section below. Can only be set while adding the deployment
Install forenumNoAll userswinget and Chocolatey only (API: ExecutionContext). All users (System) installs for every user of the device as NT AUTHORITY\SYSTEM with no interactive desktop and works even when no one is signed in; recommended for most deployments. Current user only (User) installs into the signed-in user's profile and requires someone to be signed in and a package that supports this mode; missing administrator rights can prevent Chocolatey installations in particular. Available when adding and editing, including in Update all outdated mode. Homebrew and APT ignore this field
Show in Software KioskboolNoOffLists the software in the Software Kiosk on the device, where users install it themselves. The deployment is then set to Update Only: octoja does not install the software automatically but keeps an installed copy up to date. The deployment shows a Kiosk badge in the list. You turn the kiosk itself on in the agent settings — see Enable the Software Kiosk

For custom packages, you choose the published version and the package parameters instead of Install Behavior and Install Arguments; see Build and Deploy a Custom Package. Install for is labelled Run as there, with the choices SYSTEM (no interactive desktop) and Console user (with elevation).

Install arguments

For winget, the value replaces the complete installer argument line (-Override) rather than appending arguments. Enter only the vendor's documented setup arguments, including the required silent options.

For Chocolatey, octoja passes the value as --install-arguments. Enter /S, for example, not --install-arguments="/S", if the installer supports that argument.

The field does not forward winget options such as --locale or --force, or Chocolatey package parameters (--params). Parameters for custom octoja packages are separate.

Update all outdated mode

This mode hides Package Name, Version, Install Behavior and Install Arguments. Display Name remains available; leave it empty and octoja names the entry after the package manager. winget and Chocolatey also offer Install for.

FieldTypeRequiredDefaultDescription
Never update these packagesPackage-ID listNoEmptywinget, Chocolatey and APT. Exact package IDs, case-insensitive — for example Mozilla.Firefox (winget) or firefox (Chocolatey). For APT, package names from apt list --upgradable, not display names. At most 200 distinct entries per deployment
Minimum update age (days)IntegerNo0winget and Chocolatey only; 0–365. 0 disables the delay. A version whose age is unknown still installs. How age is measured is described under Hold back selected software updates

Homebrew and custom packages support neither exclusions nor a minimum age. If every outdated package is excluded, nothing is upgraded.

Exclusions and minimum age apply only to the deployment or automation step where you enter them. They do not block a separate specific-package deployment or an operator's manual update-all action, and they do not roll back versions that are already installed. The minimum age is not a strict approval gate.

Deployment schedule

A config package has exactly one Deployment schedule for all its software deployments. It appears on the Software tab above the deployment list once the package holds at least one deployment.

The default is No schedule set: the package reaches its devices as soon as you save it and is re-checked every few hours, which keeps the software continuously up to date. Set a schedule runs it at fixed times instead; Remove schedule returns to continuous checking.

The schedule picker builds the schedule as a sentence and stores it as a cron expression. Next runs previews the next five runs.

ModeWhen it runsStored as (example)
every dayEvery day at the time you pick0 3 * * * — every day at 03:00
Every few hoursEvery 1, 2, 3, 4, 6, 8 or 12 hours, on the hour; no time picker0 */6 * * * — every 6 hours; hourly: 0 * * * *
every weekdayMonday to Friday at the time you pick0 6 * * MON-FRI
on specific daysOn the weekdays you choose, at the time you pick0 2 * * MON,THU
monthlyOnce a month at the time you pick: on a fixed day, on the last day or a few days before it (L, L-<n>), or on a weekday such as the second Tuesday or the last Friday (<day>#<n>, <day>L)0 3 1 * * — the 1st of every month at 03:00
at rebootWhen the agent loads an assignment after starting or receives a new assignment — even without an operating-system reboot; no time picker@reboot

Templates cover the common cases in one click, such as Every night at 03:00, Every weekday at 06:00, Every 6 hours, Last day of month at 03:00 and At system reboot.

A device in a maintenance window that pauses Deployments installs nothing until the window ends.

What happens on the device

When you save, octoja assigns the config package to the matching devices and notifies their agents straight away. At the scheduled time — or, with continuous checking, immediately and then every few hours — the agent checks each deployment:

  1. If the software is missing and the behaviour is Install & Update, it installs it.
  2. If an older version is installed, it updates it to the desired version.
  3. It logs the result in the device activity log with source Deployment (API: SoftwareDeployment).

Specific-package checks without changes do not create another entry. A completed Update all outdated run, however, always records an entry, even if nothing was outdated or no version changed — so success does not necessarily mean an update was installed.

Permissions

PermissionRequired for
Monitoring Check Management (monitoring-checks.manage)Opening config packages and creating, editing or removing the software deployments they contain — the same permission also covers checks and agent settings in the package
Custom Package Management (custom-packages.manage)Creating, editing, publishing and deleting custom packages

Both are granted per group under Administration → Groups.