Skip to main content

Variables

In order to allow a deeper customization of the user experience, variables and placeholders can be used within manually specified strings. Those will be replaced during runtime with specified / computed values. Those features can also be used within actions to improve the support workflow.

warning

Variable names are case-sensitive.

Placeholders​

PlaceholderDescription
OCTORY_DIRECTORYDirectory where Octory.app is located. Example: /Users/jdoe/Library /Application Support/Octory
USER_NAMEUser’s login name Example: jdoe
USER_FULL_NAMEUser’s full name Example: John Doe
USER_FIRST_NAMEUser’s first name Example: John
USER_LAST_NAMEUser’s last name Example: Doe
DEVICE_MODEL_NAMEName of the device Example: MacBook Pro
DEVICE_MARKETING_MODEL_NAMEFull name of the device, as presented on media. Localized if possible. Example: 13" MacBook Pro with Thunderbolt 3 and Touch ID (Mid 2017)
DEVICE_NAMEFriendly name of the device Example: Woody's MacBook Pro
DEVICE_SERIAL_NUMBERDevice serial number Example: C05T25JRLVGN
DEVICE_UUIDDevice UUID (Unique Identifier) Example: F503KB3U-804E- 5D7G-AC3G-95F34G9F0BEB
DEVICE_PROCESSORDevice processor Example: Quad-Core Intel Core i5
PROCESSOR_TYPEDevice processor type Example: Intel or Apple
INSTALLED_MONITORS_COUNTThe count of the installed app monitors Availability: 2.1.0+
NOT_INSTALLED_MONITORS_COUNTThe count of the app monitors that are not installed yet Availability: 2.1.0+
FAILED_INSTALL_MONITORS_COUNTThe count of the monitors whose installation has failed Availability: 2.1.0+
MONITORS_COUNTThe count of the monitors that should be installed (ignore non mandatory monitors and monitors with a condition evaluated as false - see monitoring) Availability: 2.1.0+
DEVICE_BATTERY_STATUSCurrent % charged of the battery
DEVICE_BATTERY_IS_CHARGINGA boolean that tells you if the battery is charging
DEVICE_BATTERY_IS_FULLY_CHARGEDA boolean that tells you if the battery is fully charged
DEVICE_BATTERY_IS_CRITICALA boolean that tells you if the battery is at a critical level
DEVICE_BATTERY_IS_ON_ACA boolean that tells you if the Mac is plugged in or not
OS_VERSIONDisplays the full version of the OS (ie. 15.3.2)
OS_NAMEDisplays the OS name (ie. Sequoia, Tahoe, Golden Gate etc...)

For example:

Hello ${USER_FULL_NAME}, welcome to Octory!

Will be replaced by:

Hello John Doe, welcome to Octory!

Device Telemetry Placeholders​

Availability: 3.1.0+

Octory resolves a set of device health placeholders at runtime. They are used exactly like the placeholders above, in any text or in a condition, and their value is refreshed while the application runs.

Device health​

PlaceholderDescription
DEVICE_UPTIME_DAYSDays since the last boot. Example: 12
DEVICE_LAST_REBOOT_DATEDate of the last boot, localized. Example: 10 Jul 2026 at 09:14
DEVICE_DISK_FREEFree space on the startup disk, localized. Example: 245.1 GB
DEVICE_DISK_FREE_GBFree space in GB as a plain number, to be used in conditions. Example: 245.1
DEVICE_DISK_TOTALTotal size of the startup disk, localized. Example: 500.3 GB
DEVICE_DISK_USED_PERCENTPercentage of the startup disk in use. Example: 78
DEVICE_MEMORY_TOTALTotal amount of memory, localized. Example: 18 GB
DEVICE_MEMORY_PRESSURECurrent memory pressure: Normal, Warning or Critical
DEVICE_THERMAL_STATECurrent thermal state: Nominal, Fair, Serious or Critical

Security posture​

PlaceholderDescription
SECURITY_FILEVAULT_ENABLEDWhether FileVault is on: true or false
SECURITY_SIP_ENABLEDSystem Integrity Protection: true, false, or Custom when only some of its features are enabled
SECURITY_GATEKEEPER_ENABLEDWhether Gatekeeper is on: true or false
SECURITY_FIREWALL_ENABLEDWhether the application firewall is on: true or false

MDM enrollment​

PlaceholderDescription
MDM_ENROLLEDWhether the Mac is enrolled: true or false
MDM_ENROLLMENT_STATUSHow it was enrolled: None, Automated, User Approved or Manual

Update status​

PlaceholderDescription
OS_PENDING_UPDATES_COUNTNumber of updates waiting to be installed. Example: 0
OS_LAST_UPDATE_CHECK_DATEDate of the last update check, localized

Network​

PlaceholderDescription
NETWORK_INTERFACE_TYPEActive connection: Wi-Fi, Wired, Cellular, Other or Offline
NETWORK_IP_ADDRESSPrimary IPv4 address, empty when offline. Example: 10.0.1.23
NETWORK_WIFI_SSIDName of the Wi-Fi network currently joined

Using these values​

info

The boolean placeholders above use lowercase true and false, so they can be used directly in a boolean condition:

SECURITY_FILEVAULT_ENABLED == true

The older DEVICE_BATTERY_IS_ placeholders keep their historical Yes and No values, and so have to be compared as strings:

DEVICE_BATTERY_IS_CHARGING == 'Yes'

The numeric placeholders are plain, non localized numbers, so they are safe to compare: DEVICE_DISK_FREE_GB < 20. The localized ones, like DEVICE_DISK_FREE, are meant to be displayed, not compared.

note

These values are refreshed periodically: device health and security posture every 60 seconds, update status every 5 minutes, and network values every time the connection changes. Memory pressure and thermal state are also refreshed immediately when the system reports a change.

A placeholder is an empty string until it has been resolved for the first time. A condition using one that is not populated yet logs a warning, evaluates as not satisfied, and is evaluated again as soon as the value arrives.

NETWORK_WIFI_SSID is opportunistic: macOS only discloses the network name to an application that was granted Location Services access. Without that grant the placeholder stays empty, and the grant cannot be given ahead of time by an MDM.

Dynamic Placeholders​

Octory offers several dynamic placeholders. Like placeholders, you can use them directly but their value can evolve along the Octory session. Those dynamic placeholders are particularly useful with conditions.

PlaceholderDescriptionPossible values
CURRENT_SLIDE_VALIDIndicates whether the current slide is valid or not.true, false
CURRENT_SLIDE_INDEXThe index of the current slide in the slides array-
INSTALLATION_COMPLETEIndicate if all the app monitors specified in the monitoring are installed. Note that the monitors with conditions evaluated as false are not taken in accounttrue, false

Computed Variables​

In addition to the placeholders, Octory offers the capability to insert dynamic content in different places by using computed variables.

In the General → Variable section of the configuration file, you can define custom variables that will be replaced in any string in which they are present. You define a variable by its name, like myVariable and you use it in strings elsewhere in Octory with a dollar sign and enclosed in brackets like ${myVariable}.

For example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" >
<plist version="1.0">
<dict>
<!-- ... -->
<key>General</key>
<dict>
<key>Variables</key>
<dict>
<key>company</key>
<string>Acme Inc.</string>
</dict>
</dict>
<!-- ... -->
</dict>

When displaying an informative message to the end user, you can write

Welcome to ${company}!

The result will be

Welcome to Acme Inc.!

User inputs variables​

When the user entered some info, you can anticipate to use it elsewhere. To know how the input can be used, you should refer to the input components. For example, if you ask the user the asset tag of the machine, you may choose to name the input variable user_asset_tag. When the user entered the asset tag and validated it, you can use it in a string like:

Can you confirm that your asset tag is ${user_asset_tag} ?

About URLs​

Octory will populate any URL you write. So, you could use the placeholder ${USER_NAME} to specify a path like /User/${USER_NAME}/Documents. You can also define define a path for your resources and use it in a URL. For example: ${Resources}/index.html You can also use placeholder or computed variables to populate other computed variables. For example, to define an icon folder in in resources directory: ${Resources}/Icons and you use it after as ${IconFolderPath}.