Aralez Docs
v0.11.0 Download
Core concepts/Tasks & entries
Complete schema behavior

Turn a profile into deterministic work.

Tasks define ordering, resource limits, drive selection, and output folders. Entries define either filesystem patterns or executable work. This page documents every accepted field and the runtime behavior behind it.

How tasks are scheduled

Tasks are sorted by ascending priority with a stable sort over an order-preserving map, so tasks sharing a priority run in the order they appear in the YAML. A task with no priority is treated as 255 and runs last.

  1. 01

    Parse and validate

    The embedded YAML is decoded, deserialized, and normalized before any resource gate or task starts.

  2. 02

    Sort by priority

    Tasks are sorted numerically from 0 through 255. Missing priority is treated as 255; disabled tasks are skipped.

  3. 03

    Run task groups

    Top-level tasks run sequentially. Execute entries inside a task use parallel iterators and can overlap.

  4. 04

    Check boundaries

    Disk policy and the graceful-interrupt flag are checked between top-level tasks, not between every collected file.

Every task field

typecollect | execute · required

collect walks configured filesystem roots; execute runs internal, system, or Windows external tools.

priorityu8 · optional

Lower values run first. Missing values sort as 255.

drivestring · optional

Overrides the run default. Windows accepts a drive letter and supports * for all detected drives; Unix values select a device or mounted path.

output_folderstring · optional

Output prefix for the task. Expands {{root_output_path}}; collection tasks also expand {{drive}}.

max_sizeinteger MB · optional

Task-wide per-file or captured-stdout ceiling. The smallest applicable task/global/entry limit wins for collection.

exclude_drivesstring[] · optional

Used by Windows all-drive collection to skip listed drive letters.

entriesmap of arrays · optional

Named groups of unified entry objects. A task with no entries performs no acquisition.

disabledboolean · optional

When true, skips the task without an error.

memory_limitinteger MB · optional

Passed to system/external child execution. Windows enforces it with a Job Object; current Unix execution does not apply a process memory cap.

timeoutinteger seconds · optional

Task-wide child-process timeout. On timeout, Aralez terminates the process group on Unix or the Job Object/process on Windows.

Every entry field

FieldUsed byBehavior
root_pathCollectionStarting path. Must begin with \, /, or %. Supports glob components and %ENV_VAR% expansion.
objectsCollectionFile/directory patterns beneath the root. Supports *, ?, character sets, and recursive **.
typeCollectionThe only accepted explicit value is glob. When supplied, both root_path and objects are required.
encryptCollectionPer-entry password. The NTFS reader emits AES-256-GCM .enc files; ext4 and native POSIX paths currently do not implement it.
max_sizeCollectionPer-file MB ceiling combined with section and global ceilings. Must be greater than zero.
nameExecutionInternal collector name, system executable path/name, or embedded Windows external tool name.
argsExecutionArgument array passed without a shell. Each argument can expand {{root_output_path}}.
output_fileExecutionCaptured stdout filename. If absent, the executable name is used and .exe becomes .txt.
exec_typeExecutionsystem, internal, or Windows-only external. Missing values log a configuration error for that entry.
linkExecutionNames another collection task. Output lines are treated as candidate file paths and fed into that task.
!
No entry-level execution timeout

timeout belongs to the task, not the entry. Unknown YAML fields are ignored by the current deserializer, so a timeout placed on one execution entry has no effect. Execution-entry max_size is accepted by the unified entry schema but the runtime passes the task/global limit to child execution instead.

Complete collection task

YAML · Windows first
tasks:
  priority_windows_evidence:
    type: collect
    priority: 1
    drive: "C"
    output_folder: "{{root_output_path}}\\{{drive}}\\priority"
    max_size: 250
    entries:
      event_logs:
        - root_path: "\\Windows\\System32\\winevt\\Logs"
          objects: ["Security.evtx", "System.evtx", "PowerShell*.evtx"]
          type: glob
      user_persistence:
        - root_path: "\\Users\\*\\AppData\\Roaming"
          objects: ["Microsoft/Windows/Start Menu/Programs/Startup/**"]
          max_size: 50
YAML · Linux / macOS
tasks:
  priority_unix_evidence:
    type: collect
    priority: 1
    output_folder: "{{root_output_path}}/priority"
    max_size: 250
    entries:
      access_history:
        - root_path: "/home/*"
          objects: [".bash_history", ".ssh/authorized_keys"]
      persistence:
        - root_path: "/etc"
          objects: ["systemd/system/**", "cron.d/*"]

Complete execution task

YAML · Windows supports all three execution types
tasks:
  live_state:
    type: execute
    priority: 0
    output_folder: "{{root_output_path}}\\tools"
    memory_limit: 512
    timeout: 90
    max_size: 100
    entries:
      operating_system:
        - name: "systeminfo.exe"
          args: []
          output_file: "SystemInfo.txt"
          exec_type: system
      aralez_internal:
        - name: "ProcInfo"
          output_file: "ProcInfo.csv"
          exec_type: internal
      embedded_tool:
        - name: "autorunsc.exe"
          args: ["-nobanner", "-c", "/accepteula"]
          output_file: "Autoruns.csv"
          exec_type: external

Path expansion and glob rules

  • %NAME% environment variables are expanded in root_path. An unresolved variable remains unchanged.
  • A leading Windows drive prefix is removed from expanded collection roots because the selected task drive controls the device.
  • If glob syntax appears inside root_path, the non-glob prefix becomes the traversal root and the remaining pattern is prepended to every object.
  • ** activates recursive traversal. Native/ext4 paths skip symbolic links; NTFS can collect alternate data streams through filename:stream patterns.
  • Archive entry paths are normalized to forward slashes and made relative to the root output directory.

Link command output to file acquisition

A linked execution entry interprets each non-empty stdout line as a candidate path. Aralez trims quotes, extracts leading .exe, .dll, or .sys paths when arguments follow, rejects paths without a file extension, removes a Windows drive prefix, deduplicates the set, and invokes the named collection task with those paths.

YAML · discover service binaries, then collect them
tasks:
  service_binaries:
    type: collect
    priority: 3
    output_folder: "{{root_output_path}}\\linked-services"

  discover_services:
    type: execute
    priority: 2
    entries:
      paths:
        - name: "powershell"
          args: ["-NoProfile", "-Command", "Get-CimInstance Win32_Service | Select-Object -ExpandProperty PathName"]
          output_file: "ServicePaths.txt"
          exec_type: system
          link: "service_binaries"

Validation rules and practical checks

  • Duplicate entry-group names inside one entries map are rejected.
  • An explicit max_size: 0 and an empty entry-level encrypt string are rejected.
  • External execution is rejected when a Linux or macOS binary parses the profile.
  • The configuration loader accepts UTF-8, UTF-16LE/BE with a BOM, and BOM-less UTF-16LE detected by alternating NUL bytes.
  • Use --change_config to validate a candidate file, then run --check_config and --show_config on the resulting executable.