---
title: "Reporter"
description: "report on costly log/trace events _before_ they ship to output"
source: "https://github.com/log-10x/modules/tree/main/pipelines/reporter/app.yaml"
icon: "material/play-circle-outline"

---
The Reporter app is the **read-only insights arm** of the 10x pipeline. It pinpoints high-cost app/infra events **before** forwarders ship them to log analyzers, enabling storage and licensing **cost optimization**.

**Deployment**: a DaemonSet alongside your forwarder, *not* a sidecar injected into it, and *not* a cloud app polling your SIEM's REST API. The reporter tails the same event stream your forwarder sees (pre-SIEM), publishes cost insight metrics, and fails independently: if the reporter goes down, your logs continue flowing to the SIEM uninterrupted.

Not in the critical log path. No mutation of existing fluent-bit / fluentd / otel-collector configs. Similar deployment pattern to `datadog-agent` or `splunk-otel-collector`.

The engine never moves or stores log data. Its only write is per-pattern metrics, sent to a time-series backend of the customer's choice (Prometheus, Datadog, Elastic, CloudWatch, and others). With no backend configured, metrics are collected locally and sent nowhere; fully air-gapped operation is supported. Events never leave the customer's path.

Log10x is normally driven by an AI agent (Claude, or a model the customer brings) through the log10x MCP server, which installs, configures, and queries via MCP tools: deploy via `log10x_advise_install`, verify via `log10x_doctor`. To trial without deploying anything, run `log10x_poc_from_local` (local sample files) or `log10x_poc_from_siem` (a SIEM sample). The manual steps below are the same operations without an agent.

## :material-clipboard-play-outline: Setup Guide

Follow the steps below. Steps that require customization link to the relevant [Config Files](#config-files) section where you can edit on github.dev or locally.

???+ tenx-bootstrap "Step 1: Install"

    Install the engine on the same machine as your log forwarder. The script installs the [`Runtime`](https://doc.log10x.com/engine/flavors/#runtime) native binary; the DEB and RPM packages carry either the [`Compiler`](https://doc.log10x.com/engine/flavors/#compiler) or [`Runtime (JVM)`](https://doc.log10x.com/engine/flavors/#runtime-jvm). Windows has no native build, so the PowerShell script installs `Runtime (JVM)`:
    
    - :simple-linux: [Single line script](https://doc.log10x.com/install/singleline/ "curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash -s -- --flavor runtime"){data-copy="curl https://raw.githubusercontent.com/log-10x/pipeline-releases/main/install.sh | bash -s -- --flavor runtime"} | [DEB](https://doc.log10x.com/install/linux/#ubuntu-debian) | [RPM](https://doc.log10x.com/install/linux/#red-hat-centos-7)
    - :simple-macos: [Homebrew](https://doc.log10x.com/install/macos/ "brew install log-10x/tap/log10x"){data-copy="brew install log-10x/tap/log10x"}
    - :material-microsoft-windows: [PowerShell script](https://doc.log10x.com/install/win/)
    - :simple-docker: [Docker image](https://doc.log10x.com/install/docker/)

??? tenx-config "Step 2: Set Environment Variables"

    Set these environment variables before running. See [path configuration](https://doc.log10x.com/install/paths/) for details.
    
    | Variable | Description |
    |----------|-------------|
    | `TENX_MODULES` | Path to your [modules directory](https://doc.log10x.com/install/paths/#modules) |
    | `TENX_CONFIG` | Path to your [configuration directory](https://doc.log10x.com/install/paths/#config) |
    | `TENX_LICENSE_KEY` | Your Log10x license JWT ([licensing](https://doc.log10x.com/manage/license/)); unset, the engine runs on the built-in evaluation license |
    
    ```bash
    export TENX_MODULES=/etc/tenx/modules
    export TENX_CONFIG=/etc/tenx/config
    export TENX_LICENSE_KEY="$(cat license.jwt)"
    ```
    
    For production deployments, mount the license as a file and set `TENX_LICENSE_FILE` instead.

??? tenx-forwarderinputs "Step 3: Configure Your Forwarder"

    === ":simple-fluentd: Fluentd"
    
        **Step 1**: Include the 10x reporter configuration:
    
        ```toml title="my-fluentd.conf"
        @include "#{ENV['TENX_MODULES']}/pipelines/run/modules/input/forwarder/fluentd/conf/tenx-report.conf"
        ```
    
        **Step 2**: Use a `copy` directive to report on events while still sending them to output:
    
        ```xml title="my-fluentd.conf"
        <source>
          @type tail
          path /path/to/file.log
          tag my_logs
        </source>
    
        <match my_logs>
          @type copy
    
          # Write to output (e.g. Elastic, Splunk)
          <store>
            @type stdout
          </store>
    
          # Report to 10x
          <store>
            @type relabel
            @label @TENX
          </store>
        </match>
        ```
    
        !!! note
            For large files or volume surges, set [XMX](https://www.baeldung.com/jvm-parameters#explicit-heap-memory---xms-and-xmx-options) or use [read_bytes_limit_per_second](https://docs.fluentd.org/input/tail#read_bytes_limit_per_second).
    
    === ":simple-fluentbit: Fluent-bit"
    
        **Step 1**: Include the 10x reporter configuration:
    
        ```toml title="my-fluent-bit.conf"
        # Nix
        @INCLUDE /etc/tenx/config/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-report.conf
    
        # Windows
        # @INCLUDE c:/program files/tenx-edge/config/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-report.conf
        ```
    
        **Step 2**: The Lua filter catches all events by default. To report on a subset, update the `Match` field:
    
        ```toml title="tenx-report.conf"
        [FILTER]
            Name Lua
            Match *
            script ${TENX_MODULES}/${tenx_lua}
            call tenx_process
        ```
    
    === ":simple-beats: Filebeat"
    
        Add the reporter processor script to your configuration:
    
        ```yaml title="my-filebeat.yml"
        filebeat.inputs:
          - type: filestream
            id: my-filestream-id
            paths:
              - /path/to/log
    
            processors:
              - script:
                  lang: javascript
                  file: ${TENX_MODULES}/pipelines/run/modules/input/forwarder/filebeat/script/tenx-report.js
        ```
    
    === ":simple-logstash: Logstash"
    
        Add a `pipe` output to delegate events to the reporter:
    
        ```ruby title="my-logstash.conf"
        output {
          pipe {
            id => "tenx_pipeline"
            ttl => -1
    
            # Nix
            command => "${TENX_BIN:/opt/tenx-edge/bin/tenx} run @run/input/forwarder/logstash/report/config.yaml @apps/reporter"
    
            # Windows
            # command => "${TENX_BIN:'c:\\program files\\tenx\\tenx-edge.exe'} run @run/input/forwarder/logstash/report/config.yaml @apps/reporter"
          }
        }
        ```
    
    === ":simple-opentelemetry: OTel Collector"
    
        !!! note "Requires otel-collector-contrib"
            The OpenTelemetry Collector integration requires the **contrib** distribution for `syslogexporter` support.
    
        **Step 1**: Copy the OTel Collector configuration:
    
        ```bash
        cp $TENX_MODULES/pipelines/run/modules/input/forwarder/otel-collector/report/tenxNix.yaml /etc/otelcol-contrib/
        ```
    
        **Step 2**: Update the configuration to match your log sources:
    
        ```yaml title="report/tenxNix.yaml"
        receivers:
          filelog:
            include:
              - /var/log/**/*.log  # Customize paths
            start_at: end
        ```
    
        **Step 3**: Configure your final exporters (Elastic, Splunk, etc.) in the same pipeline:
    
        ```yaml title="report/tenxNix.yaml"
        service:
          pipelines:
            logs:
              receivers: [filelog, otlp]
              processors: [memory_limiter, batch]
              exporters: [syslog/tenx, elasticsearch]  # Add your exporters
        ```
    
        Reporter mode is **read-only**. Logs flow to your final destinations unchanged; the engine never moves or stores log data. Its only write is per-pattern metrics, sent to a time-series backend of your choice (Prometheus, Datadog, Elastic, CloudWatch, and others).
    
    === ":simple-splunk: Splunk UF"
    
        !!! note "File Relay Pattern"
            This integration uses a **file relay pattern**: Fluent Bit + 10x reads from Folder A, reports on events, and writes to Folder B. Splunk UF monitors Folder B and handles forwarding to Splunk indexers. Events are unchanged - 10x only observes and reports metrics.
    
        **Step 1**: Set up folder paths:
    
        ```bash
        export FOLDER_A=/var/log/app        # App writes here
        export FOLDER_B=/var/log/processed  # UF reads from here
        mkdir -p ${FOLDER_B}
        ```
    
        **Step 2**: Configure Fluent Bit to read from Folder A, report, and write to Folder B:
    
        ```toml title="fluent-bit-splunk.conf"
        [SERVICE]
            Flush        1
            Log_Level    info
    
        [INPUT]
            Name         tail
            Path         ${FOLDER_A}/*.log
            Tag          app.logs
    
        # Include 10x reporter - sends events to 10x subprocess
        @INCLUDE ${TENX_MODULES}/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-report.conf
    
        # Include Unix socket - receives processed events back from 10x
        @INCLUDE ${TENX_MODULES}/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-unix.conf
    
        # Write events (unchanged) to Folder B
        [OUTPUT]
            Name         file
            Match        *
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        **Step 3**: Configure Splunk UF to monitor Folder B:
    
        ```ini title="inputs.conf"
        [monitor://${FOLDER_B}]
        index = main
        sourcetype = app_logs
        ```
    
        This keeps Splunk UF as the forwarder (handling buffering, retries, timeouts) while 10x reports on events inline. See the [Splunk UF module](https://doc.log10x.com/run/input/forwarder/splunkUF/) for details.
    
    === ":simple-datadog: Datadog Agent"
    
        !!! note "File Relay Pattern"
            This integration uses a **file relay pattern**: Fluent Bit + 10x reads from Folder A, reports on events, and writes to Folder B. Datadog Agent monitors Folder B and handles forwarding to Datadog. Events are unchanged - 10x only observes and reports metrics.
    
        **Step 1**: Set up folder paths:
    
        ```bash
        export FOLDER_A=/var/log/app        # App writes here
        export FOLDER_B=/var/log/processed  # DD Agent reads from here
        mkdir -p ${FOLDER_B}
        ```
    
        **Step 2**: Configure Fluent Bit to read from Folder A, report, and write to Folder B:
    
        ```toml title="fluent-bit-datadog.conf"
        [SERVICE]
            Flush        1
            Log_Level    info
    
        [INPUT]
            Name         tail
            Path         ${FOLDER_A}/*.log
            Tag          app.logs
    
        # Include 10x reporter - sends events to 10x subprocess
        @INCLUDE ${TENX_MODULES}/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-report.conf
    
        # Include Unix socket - receives processed events back from 10x
        @INCLUDE ${TENX_MODULES}/pipelines/run/modules/input/forwarder/fluentbit/conf/tenx-unix.conf
    
        # Write events (unchanged) to Folder B
        [OUTPUT]
            Name         file
            Match        *
            Path         ${FOLDER_B}
            Format       plain
        ```
    
        **Step 3**: Configure Datadog Agent to monitor Folder B:
    
        ```yaml title="conf.d/tenx.d/conf.yaml"
        logs:
          - type: file
            path: ${FOLDER_B}/*.log
            service: myapp
            source: myapp
        ```
    
        This keeps Datadog Agent as the forwarder (handling buffering, retries, metadata enrichment) while 10x reports on events inline. See the [Datadog Agent module](https://doc.log10x.com/run/input/forwarder/datadogAgent/) for details.
    
    === ":material-test-tube: Test (no forwarder)"
    
        Test the reporter without setting up a forwarder using the [Dev CLI](https://doc.log10x.com/apps/dev/).
    
        The dev app uses the [file input module](https://doc.log10x.com/run/input/file/) to read sample log files and generates cost analytics reports, allowing you to verify reporting behavior before integrating with your forwarder.
    
        **No forwarder configuration required** - provide sample log files to the file input module and skip to [Step 7](#__tabbed_6_5) to run the test.

??? tenx-symbols "Step 4: Symbol Library (optional)"

    Load custom [Symbol library](https://doc.log10x.com/compile/) files to transform events into typed TenXObjects.
    
    Place symbol files in the `symbolPaths` folders specified in the [symbol config](#symbols).

??? tenx-initializers "Step 5: Enrichments (optional)"

    Enrichments add context (severity, HTTP codes) for richer aggregation reports.
    
    **To enable:**
    
    1. In the [app config](#mainConfig), uncomment the desired enrichment `include` entries
    2. In the [initializers](#initializers) section below, configure each enrichment's settings

??? tenx-metricoutputs "Step 6: Metrics Output (optional)"

    Publish [aggregated](https://doc.log10x.com/run/aggregate/) metrics to time-series databases (Prometheus, Datadog).
    
    **To enable:**
    
    1. In the [app config](#mainConfig), uncomment the desired metric output `include` entry
    2. In the [metric outputs](#metricOutputs) section below, configure connection details

??? tenx-mainconfig "Step 7: Run"

    Start your forwarder with the updated configuration:
    
    === ":simple-fluentd: Fluentd"
    
        ```console
        $ fluentd -c my-fluentd.conf
        ```
    
    === ":simple-fluentbit: Fluent-bit"
    
        ```console
        $ fluent-bit -c my-fluent-bit.conf
        ```
    
    === ":simple-beats: Filebeat"
    
        ```console title="Nix/OSX"
        $ filebeat -c my-filebeat.yml -e 2>&1 | /opt/tenx-edge/bin/tenx run @run/input/forwarder/filebeat @apps/reporter
        ```
    
        ```console title="Windows"
        $ filebeat -c my-filebeat.yml -e 2>&1 | "c:\program files\tenx-edge\tenx" run @run/input/forwarder/filebeat @apps/reporter
        ```
    
    === ":simple-logstash: Logstash"
    
        ```console
        $ logstash -f my-logstash.conf
        ```
    
    === ":simple-opentelemetry: OTel Collector"
    
        **Step 1**: Start Log10x Reporter first:
    
        ```console
        $ tenx run @run/input/forwarder/otel-collector/report @apps/reporter
        ```
    
        **Step 2**: Start OTel Collector with the 10x configuration:
    
        ```console
        $ otelcol-contrib --config=/etc/otelcol-contrib/report/tenxNix.yaml
        ```
    
    === ":simple-splunk: Splunk UF"
    
        **Step 1**: Start Fluent Bit with the 10x reporter:
    
        ```console
        $ fluent-bit -c fluent-bit-splunk.conf
        ```
    
        **Step 2**: Start (or restart) Splunk UF to pick up Folder B:
    
        ```console
        $ splunk restart
        ```
    
        Fluent Bit + 10x will read from Folder A, report on events (without modification), and write to Folder B. Splunk UF monitors Folder B and forwards to indexers.
    
    === ":simple-datadog: Datadog Agent"
    
        **Step 1**: Start Fluent Bit with the 10x reporter:
    
        ```console
        $ fluent-bit -c fluent-bit-datadog.conf
        ```
    
        **Step 2**: Start (or restart) the Datadog Agent to pick up Folder B:
    
        ```console
        $ sudo systemctl restart datadog-agent
        ```
    
        Fluent Bit + 10x will read from Folder A, report on events (without modification), and write to Folder B. Datadog Agent monitors Folder B and forwards to Datadog.
    
    === ":material-test-tube: Test (no forwarder)"
    
        Use the [Dev CLI](https://doc.log10x.com/apps/dev/) to test event processing with sample log files.
    
        **Step 1**: Provide sample log files to the [file input module](https://doc.log10x.com/run/input/file/):
    
        ```console
        $ cp /path/to/sample.log $TENX_CONFIG/data/sample/input/
        ```
    
        **Step 2**: Run the dev app:
    
        ```console
        $ tenx run @apps/dev
        ```
    
        The dev app reads events from `data/sample/input/*.log` via the file input module and generates cost analytics reports without needing a forwarder.
    
        **View results in the dashboard** after running to verify reporting works correctly.

??? tenx-checklist "Step 8: Verify"

    Verify no errors appear in the [log file](https://doc.log10x.com/manage/logging/#log-file-location). For debugging techniques including enabling verbose logging, see [Engine Logging](https://doc.log10x.com/manage/logging/).
    
    With an agent, `log10x_doctor` confirms reporter detection and metric freshness, and `log10x_baseline` captures the starting per-pattern volume and cost.
    
    **View results in the dashboard:**
    
    Once running, view your cost analytics in the [Reporter Dashboard](https://doc.log10x.com/roi-analytics/#edge-reporter).

??? tenx-delete "Step 9: Teardown"

    Nothing runs in the background. Uninstall removes only what was installed.
    
    === ":simple-macos: Homebrew"
    
        ```bash
        brew uninstall log10x
        ```
    
    === ":simple-linux: Linux"
    
        ```bash
        sudo rm -rf /opt/tenx-edge /etc/tenx /etc/profile.d/tenx-edge.sh
        ```
    
        If installed via DEB: `sudo apt-get remove tenx-edge`
        If installed via RPM: `sudo yum remove tenx-edge`
    
    === ":material-microsoft-windows: Windows"
    
        Uninstall from **Settings > Apps > Installed apps**.
    
    === ":simple-docker: Docker"
    
        ```bash
        docker rmi log10x/pipeline-10x:1.1.39
        ```

## :material-wrench-outline: Config Files

To configure the Reporter app, [:material-cog: Edit](https://doc.log10x.com/config/app/#main-config "Learn how to edit app and module configurations") these files:
??? tenx-mainconfig "Main Config"

    <a id="mainconfig"></a>
    ### Main Config {.hidden-heading}

    The main config file loads the Reporter app's required modules.

    Uncomment selected modules at: [reporter/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/apps/reporter/config.yaml "reporter/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/apps/reporter/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml0-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml0-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml0-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Reporter Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml0-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/configrter/config.yaml"
                                data-copy-nix="/etc/log10x/configrter/config.yaml"
                                data-copy-win="C:\log10x\configsrter/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIGrter/config.yaml">$TENX_CONFIGrter/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelinesrter/config.yaml">./pipelinesrter/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    

    ```yaml
    #
    # 🔟❎  Reporter app main config
    
    # Loads the required modules for a Reporter instance.
    # To learn more see https://doc.log10x.com/apps/reporter
    
    # ============================ Bootstrap Runtime ==============================
    
    # Initialize the runtime. To learn more see https://doc.log10x.com/run/bootstrap
    
    tenx: run
    
    # Where the engine validates its licence (/api/v1/agent/whoami) and ships
    # its metrics (/api/v1/write). One endpoint drives BOTH: repointing it for
    # licensing also repoints metrics delivery. Unset or empty, the engine has
    # no address to call: metrics stay local and the licence verifies offline.
    backendEndpoint: $=TenXEnv.get("TENX_BACKEND_ENDPOINT", "")
    runtimeName: $=TenXEnv.get("TENX_RUNTIME_NAME", "myReporter")
    
    # =========================== Load App Modules ================================
    
    # Uncomment and edit selected config.yaml files (e.g., run/input/forwarder/fluentbit)
    
    include:
    
    # ----------------------------- App settings ----------------------------------
    
      # Load app settings:
      - reporter
    
      # Load gitops settings for pulling additional assets from Github.
      # Edit the gitops/config.yaml file with specific config
      #
      # For additional info see - https://doc.log10x.com/config/github
      - gitops
    
    # ---------------------------- Forwarder Input --------------------------------
    
      # Read events via Fluent Forward protocol (port 24224 or Unix socket).
      # The reporter runs as a sidecar container receiving events from any forwarder.
      #
      # For additional info, see -
      # https://doc.log10x.com/apps/reporter/run
      # https://doc.log10x.com/apps/reporter/deploy
      #
      - run/input/forward                            # https://doc.log10x.com/run/input/forward
    
    # --------------------------- Enrich TenXObjects ------------------------------
    
      # Uncomment and edit config files to enrich TenXObjects with calculated fields:
    
      - run/initialize/inputField   # https://doc.log10x.com/run/initialize/#inputfield
      - run/initialize/level        # https://doc.log10x.com/run/initialize/level
      - run/initialize/group        # https://doc.log10x.com/run/initialize/group
      - run/initialize/message      # https://doc.log10x.com/run/initialize/message
      - run/initialize/httpCode     # https://doc.log10x.com/run/initialize/httpCode
      - run/initialize/lookup       # https://doc.log10x.com/run/initialize/lookup
      - run/initialize/custom       # https://doc.log10x.com/run/transform/script/object
      - run/initialize/k8s          # https://doc.log10x.com/run/initialize/k8s
      # - run/initialize/geoIP        # https://doc.log10x.com/run/initialize/geoIP
    
    # -------------------------- Select Metric Outputs ----------------------------
    
      #  Uncomment ONE to publish aggregated TenXSummary instances, or pass it at
      #  launch (e.g. "@run/output/metric/prometheus/remote-write"). Metrics go to a
      #  backend you own; the install wizard asks which one and wires it for you.
    
      # - run/output/metric/prometheus/scrape        # https://doc.log10x.com/run/output/metric/prometheus/scrape
      # - run/output/metric/prometheus/push-gateway  # https://doc.log10x.com/run/output/metric/prometheus/push-gateway
      # - run/output/metric/prometheus/remote-write  # https://doc.log10x.com/run/output/metric/prometheus/remote-write
      # - run/output/metric/cloudwatch               # https://doc.log10x.com/run/output/metric/cloudwatch
      # - run/output/metric/datadog                  # https://doc.log10x.com/run/output/metric/datadog
      # - run/output/metric/elastic                  # https://doc.log10x.com/run/output/metric/elastic
      # - run/output/metric/log                      # https://doc.log10x.com/run/output/metric/log
    ```

??? tenx-initializers "Initializers"

    <a id="initializers"></a>
    ### Initializers {.hidden-heading}

    Activate an [Object initializer](/run/initialize "Enrich TenXObjects with additional context") to enrich TenXObjects with additional context.

    === ":material-origin: Message"

  
        #### message {.hidden-heading}
        Configure  the [Symbol Message Calculator](/run/initialize/message "Enrich TenXObjects with logical message symbol sequence and origin values") to enrich TenXObjects with logical message symbol sequence and origin values.  
  
        Below is the default configuration from: [message/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/message/config.yaml "message/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/message/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml1-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml1-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml1-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Symbol Message Calculator Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml1-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/message/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/message/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/message/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/message/config.yaml">$TENX_CONFIG/run/initialize/message/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/message/config.yaml">./pipelines/run/initialize/message/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInN5bWJvbCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY29udGV4dHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlR5cGVzIG9mIHN5bWJvbHMgdG8gc2VhcmNoXG5cblNwZWNpZmllcyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIFtzeW1ib2wgY29udGV4dHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI2NvbnRleHRzKSB2YWx1ZXMuIFRoaXMgaXMgYXJndW1lbnQgaXMgcGFzc2VkIGFzIHRoZSBgc3ltYm9sQ29udGV4dHNgIGFyZ3VtZW50IHZhbHVlIGZvciB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24uICBUaGUgbGlzdGVkIGNvbnRleHRzIGFyZSBldmFsdWF0ZWQgaW4gYSBzaW5nbGUgcGFzcywgc28gbGlzdCBvcmRlciBhY3RzIGFzIGEgZmlsdGVyIHJhdGhlciB0aGFuIGEgcHJlY2VkZW5jZSBjaGFpbi4gKERlZmF1bHQ6IGxvZyxleGVjKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAibG9nLGV4ZWMiCiAgICAgICAgfSwKICAgICAgICAibWF4TGVuIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBvdXRwdXQgY2hhcnNcblxuU3BlY2lmaWVzIHRoZSBtYXggbnVtYmVyIG9mIGNoYXJzIG9mIHRoZSBbc3ltYm9sTWVzc2FnZUZpZWxkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL21lc3NhZ2UvI3N5bWJvbG1lc3NhZ2VmaWVsZCkuIFNldCAwIHRvIHVubGltaXRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMAogICAgICAgIH0sCiAgICAgICAgIm1lc3NhZ2UiIDogewogICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIHRvIGFzc2lnbiB3aXRoIHN5bWJvbCBzZXF1ZW5jZSB2YWx1ZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiB0aGUgcmV0dXJuIHZhbHVlIG9mIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHdoZW4gaW52b2tpbmcgaXQgd2l0aCB0aGUgYSBzeW1ib2xDb250ZXh0IGFyZ3VtZW50IHZhbHVlIG9mIFtzeW1ib2xDb250ZXh0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xjb250ZXh0cykuICBGb3IgYW4gZXhhbXBsZSwgc2VlIFtzeW1ib2xJbnB1dEZpZWxkXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbml0aWFsaXplL21lc3NhZ2UvI3N5bWJvbGlucHV0ZmllbGQpLiAoRGVmYXVsdDogc3ltYm9sTWVzc2FnZSkiLAogICAgICAgICAgICAgICJkZWZhdWx0IiA6ICJzeW1ib2xNZXNzYWdlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaGFzaEZpZWxkIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGhhc2ggb2YgdGhlIHN5bWJvbCBzZXF1ZW5jZSB2YWx1ZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiBhIHN0YWJsZSwgVVJMLXNhZmUgaGFzaCBvZiB0aGUgW3N5bWJvbE1lc3NhZ2VGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9tZXNzYWdlLyNzeW1ib2xtZXNzYWdlZmllbGQpIHZhbHVlLCBjb21wdXRlZCB2aWEgW1RlblhTdHJpbmcuaGFzaF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdHJpbmcuaGFzaCkuICBUaGUgdmFsdWUgaXMgYW4gMTEtY2hhcmFjdGVyIGJhc2U2NHVybCBpZGVudGlmaWVyICh4eEhhc2g2NCBvZiB0aGUgVVRGLTggYnl0ZXMsIGJpZy1lbmRpYW4sIG5vIHBhZGRpbmcpLiBJdCBpcyBvbmUtd2F5IGFuZCByZXByb2R1Y2VzIGJ5dGUtZm9yLWJ5dGUgb3V0c2lkZSB0aGUgZW5naW5lLCBzbyBpdCBpcyBzYWZlIHRvIHVzZSBkaXJlY3RseSBhcyBhIGRlZHVwbGljYXRpb24ga2V5LCBtZXRyaWMgZGltZW5zaW9uLCBhbmFseXplciBxdWVyeSB0ZXJtLCBvciBmb3J3YXJkZXIgZmlsdGVyIGtleS4gICoqVW5zZXQgYnkgZGVmYXVsdC4qKiBUaGUgZW5yaWNobWVudCBmaWVsZCBpdHNlbGYgaXMgYWx3YXlzIHByZXNlbnQgb24gdGhlIFRlblhPYmplY3QgdW5kZXIgdGhlIGludGVybmFsIG5hbWUgYHRlbnhfaGFzaGAsIHNvIG1ldHJpY3MgZGltZW5zaW9ucywgdGhlIGFnZ3JlZ2F0aW9uIGtleSBhbmQgdGhlIE1DUCBhcnRpZmFjdHMgY2FycnkgdGhlIHBhdHRlcm4gaGFzaCB3aGV0aGVyIG9yIG5vdCB0aGlzIG9wdGlvbiBpcyBzZXQuIFdoYXQgdGhlIG9wdGlvbiBjb250cm9scyBpcyB0aGUgKndpcmUqIG5hbWUsIGFuZCB3aXRoIGl0IHdoZXRoZXIgdGhlIGhhc2ggcmVhY2hlcyBhIGNvdXBsZWQgbG9nIGZvcndhcmRlcjogb24gdGhlIFtmb3J3YXJkZXIgcmVjZWl2ZSBwYXRoXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9pbnB1dC9mb3J3YXJkZXIvKSB0aGUgcmVjb3JkIGdvZXMgYmFjayB0byB0aGUgZm9yd2FyZGVyIGJ5dGUtZm9yLWJ5dGUgYXMgaXQgYXJyaXZlZCB1bmxlc3MgdGhpcyBvcHRpb24gbmFtZXMgYSBmaWVsZCwgYW5kIHRoZW4gdGhhdCBmaWVsZCBpcyBzcGxpY2VkIG9udG8gdGhlIHJldHVybmVkIHJlY29yZC4gIFNldCBpdCB0byBgdGVueF9oYXNoYCB0byBnZXQgdGhlIGhpc3RvcmljYWwgbmFtZSwgb3IgdG8gYW55IG90aGVyIG5hbWUgdG8gYm90aCByZW5hbWUgdGhlIGVucmljaG1lbnQgZmllbGQgYW5kIHNoaXAgaXQsIGZvciBleGFtcGxlIGBzeW1ib2xNZXNzYWdlSGFzaEZpZWxkIG15X2N1c3RvbV9oYXNoYC4iCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJvcmlnaW5GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCBzeW1ib2wgbWVzc2FnZSBvcmlnaW4gZmlsZVxuXG5TcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIHRvIGFzc2lnbiB0aGUgcmV0dXJuIHZhbHVlIG9mIFtzeW1ib2xPcmlnaW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3N5bWJvbE9yaWdpbikgZnVuY3Rpb24uIChEZWZhdWx0OiApIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIiCiAgICAgICAgfSwKICAgICAgICAic2tlbGV0b25GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgdGhlIHBhdHRlcm4gcmVuZGVyaW5nIGhpbnQgKHRoZSBtZXNzYWdlIHNoYXBlIHdpdGggb25lIG1hcmtlciBwZXIgaWRlbnRpdHkgdG9rZW4pXG5cbldoZW4gc2V0LCBlYWNoIHRlbXBsYXRlIGFsc28gY2FycmllcyBhIGBza2VsZXRvbmA6IHRoZSBtZXNzYWdlIHJlZ2lvbiBvZiB0aGUgbG9nIGxpbmUgd2l0aCBgfmAgc3RhbmRpbmcgaW4gZm9yIGV2ZXJ5IHRva2VuIHRoYXQgd2VudCBpbnRvIHRoZSBtZXNzYWdlIHBhdHRlcm4gYW5kIGAkYCBmb3IgZXZlcnkgdmFyaWFibGUuIEEgY29uc3VtZXIgaG9sZGluZyB0aGUgcGF0dGVybiBhbmQgdGhlIHNrZWxldG9uIHJlY29uc3RydWN0cyB0aGUgb3JpZ2luYWwgbGluZSBmb3IgZGlzcGxheSDigJQgcHVuY3R1YXRpb24sIHNwYWNpbmcgYW5kIGRyb3BwZWQgc3RvcHdvcmRzIGluY2x1ZGVkIOKAlCBzbyBhIHJlYWRhYmxlIHBhdHRlcm4gbmVlZHMgbm8gYWNjZXNzIHRvIHRoZSBsb2dzIHRoZW1zZWx2ZXMuIFVuc2V0ICh0aGUgZGVmYXVsdCkgY29tcHV0ZXMgYW5kIGVtaXRzIG5vdGhpbmcuIgogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJtZXNzYWdlTmVnYXRvcnMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGxvdy12YWx1ZSBjb250aW51YXRpb24vYm9pbGVycGxhdGUgdGhhdCBkb2VzIE5PVCByZWNlaXZlIGl0cyBvd24gbWVzc2FnZSBwYXR0ZXJuLlxuXG5BIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGEga25vd24gY29udGludWF0aW9uIHBhdHRlcm4gKGUuZy4sIHN0YWNrIHRyYWNlIGZyYW1lLCBpbmRlbnRlZCBkZXRhaWwsIGJhbm5lcikgdGhhdCBzaG91bGQgbm90IHJlY2VpdmUgaXRzIG93biBtZXNzYWdlIHBhdHRlcm4uICBOZWdhdG9ycyBoYXZlIHR3byBjb25zdW1lcnMuIFRoZSBtZXNzYWdlIHRlbXBsYXRlJ3MgZ2F0ZSBldmFsdWF0ZXMgdGhlbSB3aGVuIHRoZSBldmVudCBpcyBuZWl0aGVyIHBhcnQgb2YgYSBtdWx0aS1ldmVudCBncm91cCAoZ3JvdXBTaXplID4gMSkgbm9yIGEgZ3JvdXAgaGVhZDogaW4gdGhhdCBjYXNlLCBhbiBldmVudCBzdGlsbCByZWNlaXZlcyBhIHBhdHRlcm4gdW5sZXNzIGl0IG1hdGNoZXMgYSBuZWdhdG9yLiBUaGlzIGlzIHRoZSBcIkhlbGxvIFdvcmxkIHZzIG9ycGhhbiBzdGFjayBmcmFtZVwiIGRpc2NyaW1pbmF0b3IuIFRoZSBncm91cCB0ZW1wbGF0ZSdzIGhlYWQgZGV0ZWN0aW9uIGFsc28gY29uc3VsdHMgdGhlbSBhcyBhIHZldG8gQkVUV0VFTiB0aGUgdGltZXN0YW1wIGFuZCBzZXZlcml0eSBjaGVja3M6IGEgbmVnYXRvci1wcmVmaXhlZCBsaW5lIGNhbm5vdCBiZSBwcm9tb3RlZCB0byBncm91cCBoZWFkIGJ5IHNldmVyaXR5IGluZmVyZW5jZSBhbG9uZSAoYSB0b2tlbiBsaWtlIGBpbmZvYCBpbnNpZGUgYW4gb2JqZWN0IGR1bXApLCBzbyBjb250aW51YXRpb24gZnJhZ21lbnRzIHdlbGQgaW50byB0aGVpciBwYXJlbnQgaW5zdGVhZCBvZiBtaW50aW5nIG9ycGhhbiBoZWFkcy4gQm90aCBjb25zdW1lcnMgYXJlIGluZXJ0IHVudGlsIHRoaXMgbGlzdCBpcyBjb25maWd1cmVkIOKAlCB0aGVyZSBpcyBubyBkZWZhdWx0LiAgLSBgIGAgLSBhbnkgaW5kZW50ZWQgbGluZSAodW5pdmVyc2FsIGNvbnRpbnVhdGlvbiBzaWduYWwpLiAtIGBcdGAgLSBhbnkgdGFiLXByZWZpeGVkIGxpbmUgKEphdmEvR28gc3RhY2sgZnJhbWVzIGV0Yy4pLiAtIGBDYXVzZWQgYnk6IGAgLSBKYXZhIGNoYWluZWQgZXhjZXB0aW9uIChjb2x1bW4gMCkuIC0gYFN1cHByZXNzZWQ6IGAgLSBKYXZhIHN1cHByZXNzZWQgZXhjZXB0aW9uIChjb2x1bW4gMCkuIC0gYC0tLSBFbmQgb2YgYCAtIC5ORVQgaW5uZXIgZXhjZXB0aW9uIG1hcmtlci4gLSBgY3JlYXRlZCBieSBgIC0gR28gZ29yb3V0aW5lIGNyZWF0b3IuIC0gYCMwIGAuLmAjNSBgIC0gUEhQIHN0YWNrIGZyYW1lcyAoZGVwdGggMC01KS4iLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' symbol lookup configuration
        
        # Configure a symbol origin lookup to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/message/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/message
        
        # ============================== Symbol Options ===============================
        
        symbol:
        
          # 'types' specifies the types of symbols that participate in the origin search. The listed
          #  contexts are evaluated in a single pass, so list order acts as a filter rather than a precedence chain.
          #  Supported values (case insensitive), PACKAGE, CLASS, METHOD, LOG, ENUM, CONST, TEXT, EXEC, ANY
          #  To learn more see https://doc.log10x.com/run/transform/symbol/#contexts
          contexts: log,exec
        
          # 'messageField' specifies the field name to assign the message pattern to target TenXObjects: the symbol
          #  tokens of the origin ranked highest by coverage, meaning the count of distinct library-known tokens it
          #  explains. Span length is the last tiebreak. The origin file name itself goes to 'originField'.
          messageField: message_pattern
        
          # 'messageHashField' specifies the field name to assign a stable, URL-safe pattern hash (xxHash64 of the messageField value, base64url, 11 chars). Safe as a SIEM query term or forwarder filter key.
          #
          #  Left unset on purpose. The hash enrichment is always computed and carried on the TenXObject under
          #  its internal name 'tenx_hash', so metric dimensions, the aggregation key and the MCP artifacts are
          #  unaffected. Setting this key is what names the field on the wire, and on the forwarder receive path
          #  that is also what puts it on the record returned to the forwarder; leave it unset and the forwarder
          #  gets its record back byte-for-byte. Uncomment and name a field to opt in:
          #
          # messageHashField: tenx_hash
        
          # 'maxLen' specifies the max char len of the output messageField
          maxLen: 120
        
        # ============================== Message Options ==============================
        
        # 'negators' specifies patterns that mark a log line as boilerplate/continuation (stack trace frames,
        # indented detail, banners) so the message-template skips its own message-pattern compute for them.
        # The check fires only for templates that don't already pass the (groupSize > 1) || groupHead arms;
        # i.e., for single-event templates with no head signal. A non-negator line in that case (e.g., bare
        # "Hello World", "Heartbeat received from node-7") still gets a pattern; a negator-matching orphan
        # (e.g., a lone "\tat com.foo.Bar(...)") does not.
        message:
          negators:
            - " "                 # any indented line (stack frames, indented app detail, multi-line JSON, banners)
            - "\t"                # real tab byte, for msgpack/forward inputs that preserve raw whitespace
            - "\\t"               # literal backslash+t, for file/JSON inputs that keep escape sequences raw
            - "Caused by: "       # Java chained exception (column 0)
            - "Suppressed: "      # Java suppressed exception (column 0)
            - "--- End of "       # .NET inner exception marker (column 0)
            - "created by "       # Go goroutine creator (column 0)
            - "#0 "               # PHP stack frame depth 0
            - "#1 "               # PHP stack frame depth 1
            - "#2 "               # PHP stack frame depth 2
            - "#3 "               # PHP stack frame depth 3
            - "#4 "               # PHP stack frame depth 4
            - "#5 "               # PHP stack frame depth 5
        ```

    === ":material-information-outline: Level"

  
        #### level {.hidden-heading}
        Configure  the [Level Classifier](/run/initialize/level "Classify TenXObjects with a severity level") to classify TenXObjects with a severity level.  
  
        Below is the default configuration from: [level/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/level/config.yaml "level/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/level/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml2-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml2-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml2-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Level Classifier Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml2-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/level/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/level/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/level/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/level/config.yaml">$TENX_CONFIG/run/initialize/level/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/level/config.yaml">./pipelines/run/initialize/level/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxldmVsIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdHMgbGV2ZWwgc2V2ZXJpdHkgdGVybXNcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgaW5mZXJyZWQgc2V2ZXJpdHkgbGV2ZWwgKERlZmF1bHQ6IGxldmVsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAibGV2ZWwiCiAgICAgICAgfSwKICAgICAgICAidGVybXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3RzIGxldmVsIHNldmVyaXR5IHRlcm1zXG5cblNwZWNpZnkgc2V2ZXJpdHkgbGV2ZWwgY2xhc3NpZmljYXRpb24sIHN0YXJ0LW9mLWxpbmUgbWF0Y2hpbmcuIFVzZWQgdG8gaWRlbnRpZnkgdGhlIHNldmVyaXR5IGxldmVsIChUUkFDRSwgREVCVUcsIElORk8sIFdBUk4sIEVSUk9SLCBDUklUSUNBTCkgb2YgYSBsb2cgbGluZSwgIHR5cGljYWxseSBtYXJraW5nIHRoZSBzdGFydCBvZiBhIGxvZyBldmVudCAoaGVhZCkuIFNvcnRlZCBieSBsaWtlbGlob29kIGFuZCB1bmlxdWVuZXNzLiBVc2VkIGluIGEgVHJpZSBmb3IgTyhtKSBtYXRjaGluZy4gIEZvciBleGFtcGxlOiAgYGBgIHlhbWwgIC0gJ3BhbmljPUNSSVRJQ0FMJyAgICAgICAjIEdvIHBhbmljLCBmaXJzdCBsaW5lOyBlLmcuLCBcInBhbmljOiBydW50aW1lIGVycm9yOiBpbmRleCBvdXQgb2YgcmFuZ2VcIiAgLSAnZmF0YWxfZXJyb3I9Q1JJVElDQUwnICMgR28gZmF0YWwgZXJyb3IsIGZpcnN0IGxpbmU7IGUuZy4sIFwiZmF0YWwgZXJyb3I6IGFsbCBnb3JvdXRpbmVzIGFyZSBhc2xlZXBcIiAgLSAndGhyZWFkXycnbWFpbicnX3Bhbmlja2VkX2F0PUNSSVRJQ0FMJyAjIFJ1c3QgcGFuaWMsIGZpcnN0IGxpbmU7IGUuZy4sIFwidGhyZWFkICdtYWluJyBwYW5pY2tlZCBhdCAnZXhwbGljaXQgcGFuaWMnXCIgIC0gJ1NlZ21lbnRhdGlvbl9mYXVsdD1DUklUSUNBTCcgIyBDL0MrKyBtZW1vcnkgdmlvbGF0aW9uLCBmaXJzdCBsaW5lOyBlLmcuLCBcIlNlZ21lbnRhdGlvbiBmYXVsdCAoY29yZSBkdW1wZWQpXCIgYGBgIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAidGltZXN0YW1wUGF0dGVybnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3RzIHRpbWVzdGFtcCBwYXR0ZXJucyBhc3NvY2lhdGVkIHdpdGggc2V2ZXJpdHkgbGV2ZWxcblxuTGlzdHMgdGhlIHRlcm1zIGFzc2lnbmVkIHRvIGEgdGFyZ2V0IFRlblhPYmplY3QncyBbbGV2ZWxGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sZXZlbC8jbGV2ZWxGaWVsZCkgYmFzZWQgb24gd2hldGhlciBpdHMgW2Z1bGxUZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrZnVsbFRleHQpIGNvbnRhaW5zIHNwZWNpZmllZCB0ZXJtcy4gRm9yIGV4YW1wbGU6IGBgYCB5YW1sIC0gXCJJJ01NZGQgSEg6bW06c3MuUz1JTkZPXCIgICAgICAgICAgIyBVc2VkIGluIEt1YmVybmV0ZXMga3ViZS1hcGlzZXJ2ZXIgbG9ncyB3aXRoIElORk8gcHJlZml4LCAxLWRpZ2l0IG1pY3Jvc2Vjb25kIHByZWNpc2lvbiBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' level classifier configuration
        
        # Configuration level classifier to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/level/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/level
        
        # =============================== Level Options ===============================
        
        level:
        
          # 'field' specify the field name to assign with the inferred severity level
          field: severity_level
        
          # 'terms' specify severity level classification, start-of-line matching
          #  Used to identify the severity level (TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL) of a log line, typically marking
          #  the start of a log event (head). Sorted by likelihood and uniqueness. Used in a Trie for O(m) matching.
          terms:
            - 'trace=TRACE'          # Common in JavaScript (Winston) or custom logs; e.g., "trace Variable x = 5"
            - 'Trace=TRACE'          # Mixed case; e.g., "Trace Variable x = 5"
            - 'TRACE=TRACE'          # Uppercase, less common; e.g., "TRACE Message"
            - 'debug=DEBUG'          # Common in JavaScript (Winston) or custom logs; e.g., "debug Entering method foo"
            - 'Debug=DEBUG'          # Mixed case; e.g., "Debug Entering method foo"
            - 'DEBUG=DEBUG'          # Uppercase; e.g., "DEBUG Message"
            - 'DBG=DEBUG'            # Abbreviation, less common; e.g., "DBG Entering method foo"
            - 'info=INFO'            # Common in JavaScript (Winston) or custom logs; e.g., "info Application started"
            - 'Info=INFO'            # Mixed case; e.g., "Info Application started"
            - 'INFO=INFO'            # Uppercase; e.g., "INFO Message"
            - 'notice=INFO'          # Common in custom logs or lowercase syslog; e.g., "notice Configuration updated"
            - 'Notice=INFO'          # Mixed case; e.g., "Notice Configuration updated"
            - 'NOTICE=INFO'          # Uppercase, syslog; e.g., "NOTICE Message"
            - 'warn=WARN'            # Common in JavaScript (Winston) or custom logs; e.g., "warn Low disk space"
            - 'Warn=WARN'            # Mixed case; e.g., "Warn Low disk space"
            - 'WARN=WARN'            # Uppercase; e.g., "WARN Message"
            - 'warning=WARN'         # Common in custom logs or verbose frameworks; e.g., "warning Low disk space"
            - 'Warning=WARN'         # Mixed case; e.g., "Warning Low disk space"
            - 'WARNING=WARN'         # Uppercase; e.g., "WARNING Message"
            - 'error=ERROR'          # Common in JavaScript (Winston) or custom logs; e.g., "error Failed to connect"
            - 'Error=ERROR'          # Mixed case; e.g., "Error Failed to connect"
            - 'ERROR=ERROR'          # Uppercase; e.g., "ERROR Message"
            - 'err=ERROR'            # Lowercase abbreviation; e.g., "err Failed to connect"
            - 'ERR=ERROR'            # Uppercase abbreviation; e.g., "ERR Message"
            - 'TypeError=ERROR'      # JavaScript, stack trace; e.g., "TypeError: undefined is not a function"
            - 'ReferenceError=ERROR' # JavaScript, stack trace; e.g., "ReferenceError: x is not defined"
            - 'ValueError=ERROR'     # Python, stack trace; e.g., "ValueError: invalid literal"
            - 'PHP_Warning=ERROR'    # PHP, warning message; e.g., "PHP Warning: Undefined variable"
            - 'fatal=CRITICAL'       # Common in custom logs; e.g., "fatal System crash"
            - 'Fatal=CRITICAL'       # Mixed case; e.g., "Fatal System crash"
            - 'FATAL=CRITICAL'       # Uppercase; e.g., "FATAL Message"
            - 'critical=CRITICAL'    # Common in custom logs; e.g., "critical System crash"
            - 'Critical=CRITICAL'    # Mixed case; e.g., "Critical System crash"
            - 'CRITICAL=CRITICAL'    # Uppercase; e.g., "CRITICAL Message"
            - 'crit=CRITICAL'        # Lowercase abbreviation, syslog; e.g., "crit System crash"
            - 'CRIT=CRITICAL'        # Uppercase abbreviation, syslog; e.g., "CRIT Message"
            - 'alert=CRITICAL'       # Common in custom logs or syslog; e.g., "alert High CPU usage"
            - 'Alert=CRITICAL'       # Mixed case; e.g., "Alert High CPU usage"
            - 'ALERT=CRITICAL'       # Uppercase, syslog; e.g., "ALERT Message"
            - 'emerg=CRITICAL'       # Common in custom logs or lowercase syslog; e.g., "emerg System unusable"
            - 'Emerg=CRITICAL'       # Mixed case; e.g., "Emerg System unusable"
            - 'EMERG=CRITICAL'       # Uppercase, syslog; e.g., "EMERG Message"
            - 'panic=CRITICAL'       # Go panic, first line; e.g., "panic: runtime error: index out of range"
            - 'fatal_error=CRITICAL' # Go fatal error, first line; e.g., "fatal error: all goroutines are asleep"
            - 'thread_main_panicked_at=CRITICAL' # Rust panic, first line; e.g., "thread 'main' panicked at 'explicit panic'"
            - 'Segmentation_fault=CRITICAL' # C/C++ memory violation, first line; e.g., "Segmentation fault (core dumped)"
            - 'Aborted=CRITICAL'     # C/C++ termination, first line; e.g., "Aborted (core dumped)"
            - 'Assertion_failed=CRITICAL' # C/C++ assertion failure, first line; e.g., "Assertion failed: x > 0"
            - 'PHP_Fatal_error=CRITICAL' # PHP fatal error, first line; e.g., "PHP Fatal error: Out of memory"
            - 'Traceback_most_recent_call_last=CRITICAL' # Python stack trace, first line; e.g., "Traceback (most recent call last)"
            - 'Stack_trace=CRITICAL' # Generic stack trace, first line; e.g., "Stack trace"
            - 'Error=CRITICAL'       # JavaScript, stack trace; e.g., "Error: Something went wrong"
            - 'Fatal_error=CRITICAL' # PHP, stack trace; e.g., "Fatal error: Uncaught Exception"
            - 'Unhandled_exception=CRITICAL' # C#/Dart, stack trace; e.g., "Unhandled exception: System.NullReferenceException"
            - 'Exception_in_thread=CRITICAL' # Java, stack trace; e.g., "Exception in thread 'main' java.lang.RuntimeException"
            - 'goroutine=CRITICAL'   # Go, stack trace; e.g., "goroutine 1 [running]:"
            - 'failed=ERROR'         # ERROR-level entries in application, system, or web server logs
        
          # 'timestampPatterns' patterns for LogEvent head classification, start-of-line matching
          #  Used to identify timestamp formats in log lines and infer their implied severity level based on the first character.
          #  Formats are typical of Kubernetes kube-apiserver logs with varying microsecond precision. The first character
          #  ('I', 'W', 'E', 'F') determines the severity: I=INFO, W=WARN, E=ERROR, F=CRITICAL. Sorted by precision.
          timestampPatterns:
            - "'I'MMdd HH:mm:ss.S=INFO"          # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SS=INFO"         # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSS=INFO"        # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSS=INFO"       # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSSS=INFO"      # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision
            - "'I'MMdd HH:mm:ss.SSSSSS=INFO"     # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision
            - "'W'MMdd HH:mm:ss.S=WARN"          # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SS=WARN"         # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSS=WARN"        # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSS=WARN"       # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSSS=WARN"      # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision
            - "'W'MMdd HH:mm:ss.SSSSSS=WARN"     # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision
            - "'E'MMdd HH:mm:ss.S=ERROR"         # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SS=ERROR"        # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSS=ERROR"       # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSS=ERROR"      # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSSS=ERROR"     # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision
            - "'E'MMdd HH:mm:ss.SSSSSS=ERROR"    # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision
            - "'F'MMdd HH:mm:ss.S=CRITICAL"      # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SS=CRITICAL"     # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSS=CRITICAL"    # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSS=CRITICAL"   # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSSS=CRITICAL"  # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision
            - "'F'MMdd HH:mm:ss.SSSSSS=CRITICAL" # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision
        ```

    === ":material-select-group: Group"

  
        #### group {.hidden-heading}
        Configure  the [Group initializer](/run/initialize/group "Combine multi-line events into TenXObject group instances") to combine multi-line events into TenXObject group instances.  
  
        Below is the default configuration from: [group/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/group/config.yaml "group/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/group/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml3-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml3-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml3-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Group initializer Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml3-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/group/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/group/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/group/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/group/config.yaml">$TENX_CONFIG/run/initialize/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/group/config.yaml">./pipelines/run/initialize/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdyb3VwIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJpbmRpY2F0b3JzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIHN0cmluZ3MgdGhhdCwgd2hlbiBtYXRjaGVkIGF0IHRoZSBzdGFydCBvZiBhIGxvZyBsaW5lJ3MgdGV4dCwgZGVzaWduYXRlIGl0IGFzIGEgZ3JvdXAgaGVhZC5cblxuQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCwgd2hlbiBtYXRjaGVkIGF0IHRoZSBzdGFydCBvZiBhIGxvZyBsaW5lJ3MgdGV4dCwgZGVzaWduYXRlIGl0IGFzIGEgZ3JvdXAgaGVhZC4gVW5tYXRjaGVkIGxpbmVzIGRlZmF1bHQgdG8gYGZhbHNlYCwgaW5kaWNhdGluZyB0aGV5IGFyZSBncm91cCBjaGlsZHJlbi4gIC0gYDE5Mi5gIC0gSW5kaWNhdGVzIGEgcHJpdmF0ZSBJUCBhZGRyZXNzLCBjb21tb24gaW4gd2ViIHNlcnZlciBsb2dzIChlLmcuLCBcIjE5Mi4xNjguMS4xIC0gLSBbLi4uXVwiKS4gLSBgMTAuYCAtIEluZGljYXRlcyBhIHByaXZhdGUgSVAgcmFuZ2UsIG9mdGVuIGluIEt1YmVybmV0ZXMgb3IgaW50ZXJuYWwgbmV0d29yayBsb2dzIChlLmcuLCBcIjEwLjI0NC4wLjEyNSAtIC0gWy4uLl1cIikuIC0gYEdFVCBgIC0gSW5kaWNhdGVzIGFuIEhUVFAgR0VUIHJlcXVlc3QsIG1hcmtpbmcgdGhlIHN0YXJ0IG9mIGEgd2ViIHRyYW5zYWN0aW9uIGxvZyAoZS5nLiwgXCJHRVQgL2luZGV4Lmh0bWwgSFRUUC8xLjFcIikuIC0gYGF0IGAgLSBJbmRpY2F0ZXMgYSBKYXZhL0MjIHN0YWNrIHRyYWNlIGNvbnRpbnVhdGlvbi4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJuZWdhdG9ycyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBwYXR0ZXJucyB0aGF0IG1hcmsgYSBsaW5lIGFzIGEga25vd24gY29udGludWF0aW9uIChlLmcuLCBzdGFjayB0cmFjZSBsaW5lcyksIG5lZ2F0aW5nIHN0YW5kYWxvbmUgc3RhdHVzLlxuXG5BIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0LCB3aGVuIG1hdGNoZWQgYXQgdGhlIHN0YXJ0IG9mIGEgbG9nIGxpbmUncyB0ZXh0LCBtYXJrIGl0IGFzIGEga25vd24gY29udGludWF0aW9uIGxpbmUuIExpbmVzIG1hdGNoaW5nIHRoZXNlIHBhdHRlcm5zIGFyZSBpZGVudGlmaWVkIGFzIGNvbnRpbnVhdGlvbnMgKGUuZy4sIHN0YWNrIHRyYWNlIGZyYW1lcykgYW5kIHdpbGwgbm90IGhhdmUgbWVzc2FnZSBwYXR0ZXJucyBjYWxjdWxhdGVkIGZvciB0aGVtLCBvcHRpbWl6aW5nIHByb2Nlc3NpbmcgcGVyZm9ybWFuY2UuICAtIGBcdGF0IGAgLSBKYXZhL0tvdGxpbiBzdGFjayB0cmFjZSBmcmFtZSAodGFiLXByZWZpeGVkKS4gLSBgICAgYXQgYCAtIC5ORVQgc3RhY2sgdHJhY2UgZnJhbWUgKHNwYWNlLXByZWZpeGVkKS4gLSBgICBGaWxlIFwiYCAtIFB5dGhvbiBzdGFjayB0cmFjZSBmcmFtZS4gLSBgICAgIGF0IGAgLSBOb2RlLmpzIHN0YWNrIHRyYWNlIGZyYW1lLiAtIGBDYXVzZWQgYnk6YCAtIEphdmEgY2hhaW5lZCBleGNlcHRpb24uIC0gYFx0Li4uIGAgLSBKYXZhIHRydW5jYXRlZCBzdGFjayBmcmFtZXMuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' event grouping configuration
        
        # Group  sequences of TenXObjects to filter, aggregate and output as a single logical unit.
        # To learn more see https://doc.log10x.com/run/transform/group/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/group
          
        # =============================== Group Options ===============================
        
        
        # 'indicators' specifies a list of `value:state` pairs that determine if a log line's start marks a group head (`true`) or child (`false`).
        group:
        
          # 'indicators' specifies a list of strings that, when matched at the start of a log line's text, designate it as a group head.
          # Unmatched lines default to false, indicating they are group children (continuation-by-default).
          indicators:
            - '{'                 # Indicates a pretty-printed JSON/object log body (e.g., payment '{ resource: {...} }'); the opening brace heads the multi-line object so it groups as one event. Matches the log body only, grouping reads inputField, not the wrapped envelope.
            - '192.'              # Indicates a private IP address, common in web server logs (e.g., "192.168.1.1 - - [...]")
            - '10.'               # Indicates a private IP range, often in Kubernetes or internal network logs (e.g., "10.244.0.125 - - [...]")
            - '172.'              # Indicates a private IP range, typical in enterprise network logs (e.g., "172.16.0.1 - - [...]")
            - '127.'              # Indicates localhost, a common web server log initiator (e.g., "127.0.0.1 - - [...]")
            - 'GET '              # Indicates an HTTP GET request, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
            - 'POST '             # Indicates an HTTP POST request, marking the start of a web transaction log (e.g., "POST /api HTTP/1.1")
            - 'PUT '              # Indicates an HTTP PUT request, marking the start of a web transaction log (e.g., "PUT /resource HTTP/1.1")
            - 'DELETE '           # Indicates an HTTP DELETE request, marking the start of a web transaction log (e.g., "DELETE /resource HTTP/1.1")
            - 'HEAD '             # Indicates an HTTP HEAD request, marking the start of a web transaction log (e.g., "HEAD /index.html HTTP/1.1")
            - 'OPTIONS '          # Indicates an HTTP OPTIONS request, marking the start of a web transaction log (e.g., "OPTIONS /api HTTP/1.1")
            - 'HTTP/'             # Indicates an HTTP protocol version, marking the start of a web transaction log (e.g., "GET /index.html HTTP/1.1")
            - 'kernel:'           # Indicates a Linux kernel log entry, marking the start of a system event (e.g., "kernel: [0.123456] Device initialized")
            - 'sshd['             # Indicates an SSH daemon log entry, marking the start of a security event (e.g., "sshd[1234]: Accepted password ...")
            - 'systemd['          # Indicates a systemd service log entry, marking the start of a system service event (e.g., "systemd[1]: Started service ...")
            - 'cron['             # Indicates a cron daemon log entry, marking the start of a scheduled task event (e.g., "cron[1234]: Running job ...")
            - 'syslog:'           # Indicates a syslog message, marking the start of a system log event (e.g., "syslog: Message ...")
            - 'rsyslogd:'         # Indicates an rsyslog daemon log entry, marking the start of a logging system event (e.g., "rsyslogd: Log started ...")
            - 'auditd['           # Indicates an audit daemon log entry, marking the start of a security audit event (e.g., "auditd[1234]: Audit event ...")
            - 'daemon:'           # Indicates a syslog daemon facility log, marking the start of a system service event (e.g., "daemon: Service started ...")
            - 'user:'             # Indicates a syslog user facility log, marking the start of a user-related event (e.g., "user: User logged in ...")
            - 'local0:'           # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local0: Custom message ...")
            - 'local1:'           # Indicates a syslog local facility log, marking the start of a custom system event (e.g., "local1: Custom message ...")
            - 'level='            # Indicates a structured log key, marking the start of a key-value log entry (e.g., "level=info msg=Started")
            - 'msg='              # Indicates a structured log key, marking the start of a message log entry (e.g., "msg=Application started")
            - 'message='          # Indicates a structured log key, marking the start of a message log entry (e.g., "message=Application started")
            - 'event='            # Indicates a structured log key, marking the start of an event log entry (e.g., "event=Service startup")
            - 'thread='           # Indicates a structured log key, marking the start of a thread-specific log entry (e.g., "thread=main Processing ...")
            - 'Starting '         # Indicates the start of a process initiation log (e.g., "Starting server on port 8080")
            - 'Stopping '         # Indicates the start of a process termination log (e.g., "Stopping service ...")
            - 'Running '          # Indicates the start of a process status log (e.g., "Running task ...")
            - 'Listening '        # Indicates the start of a network service log (e.g., "Listening on port 8080 ...")
            - 'Connecting '       # Indicates the start of a connection attempt log (e.g., "Connecting to database ...")
            - 'Connected '        # Indicates the start of a successful connection log (e.g., "Connected to database ...")
            - 'Disconnected '     # Indicates the start of a disconnection log (e.g., "Disconnected from server ...")
            - 'Processing '       # Indicates the start of a task processing log (e.g., "Processing request ...")
            - 'Received '         # Indicates the start of a data reception log (e.g., "Received message ...")
            - 'Sent '             # Indicates the start of a data transmission log (e.g., "Sent response ...")
            - 'User '             # Indicates the start of a user action log (e.g., "User logged in ...")
            - 'Authentication '   # Indicates the start of an authentication log (e.g., "Authentication successful ...")
            - 'Authorized '       # Indicates the start of an authorization log (e.g., "Authorized user access ...")
            - 'Failed '           # Indicates the start of a failure log (e.g., "Failed login attempt ...")
            - 'kubelet:=true'     # Indicates a Kubernetes kubelet log entry, marking the start of a node event (e.g., "kubelet: Starting kubelet")
            - 'pod:=true'         # Indicates a Kubernetes pod log entry, marking the start of a pod event (e.g., "pod: Starting container")
            - 'container:=true'   # Indicates a Kubernetes container log entry, marking the start of a container event (e.g., "container: Started")
            - 'namespace:=true'   # Indicates a Kubernetes namespace log entry, marking the start of a namespace event (e.g., "namespace: Created")
            - 'Traceback '        # Indicates the start of a Python stack trace (e.g., "Traceback (most recent call last):")
            - 'File "'            # Indicates a Python stack trace line (e.g., "File "/script.py", line 10")
            - 'Trace:'            # Indicates a Node.js console trace (e.g., "Trace: Show me")
            - 'Error:'            # Indicates a Node.js error log (e.g., "Error: Something went wrong")
            - 'Warning:'          # Indicates a Node.js warning log (e.g., "Warning: Deprecated method")
            - 'Exception in thread ' # Indicates a Java exception header (e.g., "Exception in thread 'main'")
            - 'goroutine '        # Indicates a Go goroutine stack trace (e.g., "goroutine 1 [running]:")
            - 'panic:'            # Indicates a Go panic (e.g., "panic: runtime error")
            - 'thread '           # Indicates a Rust thread panic (e.g., "thread 'main' panicked at")
            - 'stack backtrace:'  # Indicates a Rust backtrace header (e.g., "stack backtrace:")
            - 'PHP Warning:'      # Indicates a PHP warning (e.g., "PHP Warning: Undefined variable")
            - 'PHP Fatal error:'  # Indicates a PHP fatal error (e.g., "PHP Fatal error: Out of memory")
            - 'in /'              # Indicates a PHP/Ruby file path in stack trace (e.g., "in /path/to/file.php:10")
            - 'Exception:'        # Indicates a C# exception (e.g., "Exception: Invalid operation")
            - 'terminate called'  # Indicates a C++ termination (e.g., "terminate called after throwing an instance of 'std::exception'")
            - 'syslog:'           # Indicates a Linux syslog message (e.g., "syslog: Message ...")
            - 'IN='               # Indicates an iptables firewall input log (e.g., "IN=eth0 OUT=")
            - 'OUT='              # Indicates an iptables firewall output log (e.g., "OUT=eth0 SRC=")
            - 'SRC='              # Indicates an iptables firewall source IP log (e.g., "SRC=192.168.1.1 DST=")
            - 'DST='              # Indicates an iptables firewall destination IP log (e.g., "DST=10.0.0.1 LEN=")
            - 'KafkaServer:'      # Indicates a Kafka server log (e.g., "KafkaServer: Starting Kafka server")
            - 'Redis:'            # Indicates a Redis server log (e.g., "Redis: Server initialized")
        
          
        ```

    === ":material-web: HttpCode"

  
        #### httpCode {.hidden-heading}
        Configure  the [HTTP Status Code Extractor](/run/initialize/httpCode "Enrich TenXObjects with an extracted HTTP status code") to enrich TenXObjects with an extracted HTTP status code.  
  
        Below is the default configuration from: [httpCode/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/httpCode/config.yaml "httpCode/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/httpCode/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml4-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml4-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml4-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit HTTP Status Code Extractor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml4-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/httpCode/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/httpCode/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/httpCode/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/httpCode/config.yaml">$TENX_CONFIG/run/initialize/httpCode/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/httpCode/config.yaml">./pipelines/run/initialize/httpCode/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImh0dHBDb2RlIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSFRUUCBjb2RlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGluZmVycmVkIEhUVFAgY29kZSAoRGVmYXVsdDogaHR0cENvZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwQ29kZSIKICAgICAgICB9LAogICAgICAgICJwcmVjbHVkZXJzQmVmb3JlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQcmVjZWRpbmcgY2hhcmFjdGVycyBmb3IgZXhjbHVkaW5nIEhUVFAgY29kZSBjYW5kaWRhdGVzXG5cbkFycmF5IG9mIGNoYXJhY3RlcnMgb3IgcGF0dGVybnMgdGhhdCwgd2hlbiBhcHBlYXJpbmcgaW1tZWRpYXRlbHkgYmVmb3JlIGEgY2FuZGlkYXRlIEhUVFAgc3RhdHVzIGNvZGUgaW4gdG9rZW5pemVkIGxvZ3MsIGluZGljYXRlIGl0IGlzIG5vdCBhIHZhbGlkIEhUVFAgY29kZS4gVXNlZCB0byBwcmVjbHVkZSBmYWxzZSBwb3NpdGl2ZXMgbGlrZSBuZWdhdGl2ZSBudW1iZXJzICgnLTIwMCcpLCBmbG9hdHMgKCcuMjAwJyksIG9yIHZhcmlhYmxlcyAoJ18yMDAnKS4gRW50cmllcyBhcmUgc2luZ2xlIGNoYXJhY3RlcnMgb3Igc2hvcnQgc3RyaW5ncyBmb3IgTygxKSBsb29rdXAgZWZmaWNpZW5jeSBpbiB0aGUgaGV1cmlzdGljLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInByZWNsdWRlcnNBZnRlciIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3Vic2VxdWVudCBjaGFyYWN0ZXJzIGZvciBleGNsdWRpbmcgSFRUUCBjb2RlIGNhbmRpZGF0ZXNcblxuQXJyYXkgb2YgY2hhcmFjdGVycyBvciBwYXR0ZXJucyB0aGF0LCB3aGVuIGFwcGVhcmluZyBpbW1lZGlhdGVseSBhZnRlciBhIGNhbmRpZGF0ZSBIVFRQIHN0YXR1cyBjb2RlIGluIHRva2VuaXplZCBsb2dzLCBpbmRpY2F0ZSBpdCBpcyBub3QgYSB2YWxpZCBIVFRQIGNvZGUuIFVzZWQgdG8gcHJlY2x1ZGUgZmFsc2UgcG9zaXRpdmVzIGxpa2UgcGVyY2VudGFnZXMgKCcyMDAlJyksIGZsb2F0cyAoJzIwMC4nKSwgb3IgZXhwcmVzc2lvbnMgKCcyMDArJykuIEVudHJpZXMgYXJlIHNpbmdsZSBjaGFyYWN0ZXJzIG9yIHNob3J0IHN0cmluZ3MgZm9yIE8oMSkgbG9va3VwIGVmZmljaWVuY3kgaW4gdGhlIGhldXJpc3RpYy4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJ2YWxpZFZhbHVlcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3RhbmRhcmQgSFRUUCBzdGF0dXMgY29kZXNcblxuQXJyYXkgb2YgYWxsIHN0YW5kYXJkIEhUVFAgc3RhdHVzIGNvZGVzIGFzIGRlZmluZWQgYnkgdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSBhbmQgcmVsZXZhbnQgUkZDcyAoZS5nLiwgUkZDIDkxMTAsIFJGQyA2NTg1LCBSRkMgNzIzMS03MjM1LCBSRkMgNzUzOCwgUkZDIDc3MjUsIFJGQyA4Mjk3LCBSRkMgOTExMSkuIFRoaXMgYXJyYXlzIHZhbGlkYXRlcyBwb3RlbnRpYWwgSFRUUCBzdGF0dXMgY29kZXMgaW4gbG9nIGV2ZW50cywgZW5zdXJpbmcgb25seSByZWNvZ25pemVkIGNvZGVzIGFyZSBleHRyYWN0ZWQuIEVhY2ggZW50cnkgaW5jbHVkZXMgdGhlIG51bWVyaWMgY29kZSBmb2xsb3dlZCBieSBhIGNvbW1lbnQgZGVzY3JpYmluZyBpdHMgbWVhbmluZyBhbmQgcHVycG9zZS4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJrZXl3b3JkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJyYXkgb2Yga2V5d29yZHMgaW5kaWNhdGluZyBIVFRQLXJlbGF0ZWQgY29udGV4dCBpbiBsb2cgZXZlbnRzXG5cblRoaXMgbGlzdCBmaWx0ZXJzIGxvZ3MgbGlrZWx5IGNvbnRhaW5pbmcgSFRUUCBzdGF0dXMgY29kZXMsIHJlZHVjaW5nIGZhbHNlIHBvc2l0aXZlcy4gS2V5d29yZHMgY292ZXIgSFRUUCBtZXRob2RzLCBjb21tb24gbG9nIGZpZWxkcywgYW5kIGZvcm1hdC1zcGVjaWZpYyB0ZXJtcyBmcm9tIHNvdXJjZXMgbGlrZSBBcGFjaGUsIE5naW54LCBIQVByb3h5LCBTcXVpZCwgSUlTLCBTcHJpbmcgQm9vdC4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJzdHJpY3RLZXl3b3JkcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQXJyYXkgb2Ygc3RyaWN0IEhUVFAgbWFya2VycyB0aGF0IG11c3QgYXBwZWFyIG5lYXIgYSBjYW5kaWRhdGUgSFRUUCBjb2RlIHRva2VuXG5cblNob3J0LCBoaWdoLXNpZ25hbCBzdWJzZXQgb2YgSFRUUCBtYXJrZXJzIHVzZWQgYXMgYSBzdHJ1Y3R1cmFsIGd1YXJkIGR1cmluZyB0ZW1wbGF0ZSBpbml0aWFsaXphdGlvbi4gQWZ0ZXIgYSBjYW5kaWRhdGUgSFRUUCBzdGF0dXMgdmFyaWFibGUgdG9rZW4gaXMgZm91bmQgdmlhIFtodHRwQ29kZVZhbGlkVmFsdWVzXSgjaHR0cGNvZGV2YWxpZHZhbHVlcyksIHRoZSB0ZW1wbGF0ZSBpbml0aWFsaXplciByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGVzZSBzdHJpY3QgbWFya2VycyBhcHBlYXIgd2l0aGluIGEgc21hbGwgdG9rZW4gd2luZG93ICjCsTUgYnkgZGVmYXVsdCkgYXJvdW5kIHRoZSBjYW5kaWRhdGUuIFdpdGhvdXQgdGhpcyBjaGVjaywgYW55IG51bWVyaWMgdmFyaWFibGUgdGhhdCBoYXBwZW5zIHRvIGhvbGQgYSB2YWx1ZSBpbiAxMDAuLjU5OSBvbiBpdHMgZmlyc3Qgb2JzZXJ2ZWQgZXZlbnQgKGUuZy4sIGEga2Fma2EgY29uZmlnIGxpbWl0IGxpa2UgYG1heC5yZXF1ZXN0LnNpemUgPSAyMDBgLCBhIEpWTSBgLURjbGsudGNrPTEwMGApIGdldHMgd3JvbmdseSBib3VuZCBhcyBhbiBIVFRQIGNvZGUgYW5kIHN1YnNlcXVlbnQgZXZlbnRzIGNhcnJ5IHRocm91Z2ggYXJiaXRyYXJ5IG5vbi1IVFRQIHZhbHVlcyBhdCB0aGF0IHBvc2l0aW9uLiAgVGhlIHN0cmljdCBsaXN0IHNob3VsZCBjb250YWluIG9ubHkgdG9rZW5zIHRoYXQgdW5hbWJpZ3VvdXNseSBtYXJrIGFuIEhUVFAgZXhjaGFuZ2U6IEhUVFAgbWV0aG9kIHZlcmJzIChgR0VUYCwgYFBPU1RgLCAuLi4pLCBwcm90b2NvbCB2ZXJzaW9ucyAoYEhUVFAvMS4xYCwgYEhUVFAvMmApLCBzdGF0dXMta2V5ZWQgSlNPTiBmaWVsZHMgKGBzdGF0dXNgLCBgc3RhdHVzQ29kZWAsIGBodHRwX3N0YXR1c2AsIGB1cHN0cmVhbV9zdGF0dXNgKSwgYW5kIGZyYW1ld29yay1zcGVjaWZpYyBwaHJhc2VzIHRoYXQgYWx3YXlzIHByZWNlZGUgYSBzdGF0dXMgY29kZSBpbiByZWFsIHRyYWZmaWMgKGBDb21wbGV0ZWRgLCBgRGlzcGF0Y2hlclNlcnZsZXRgLCBgVENQX01JU1NgKS4gSXQgaXMgaW50ZW50aW9uYWxseSBtdWNoIHNtYWxsZXIgdGhhbiBbaHR0cENvZGVLZXl3b3Jkc10oI2h0dHBjb2Rla2V5d29yZHMpLCB3aGljaCBpcyB1c2VkIGFzIGEgY2hlYXAgcHJlLWZpbHRlciBvdmVyIHRoZSBmdWxsIHRlbXBsYXRlIGJvZHkgYW5kIGNhbiBpbmNsdWRlIGxvb3NlIHRlcm1zLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAiZmllbGQiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' HTTP code classifier configuration
        
        # The HTTP code classifier enriches TenXObjects with an extracted HTTP numeric response code (e.g., 404) field.
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/httpCode
        
        # =============================== GeoIP Options ===============================
        
        httpCode:
        
          # 'field' specifies the name of the field in which to assign an extracted HTTP status code, if found
          field: http_code
        
          # 'precludersBefore' specifies an array of characters or patterns that, when appearing immediately before a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
          #  Used to preclude false positives like negative numbers ('-200'), floats ('.200'), or variables ('_200').
          #  Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
          precludersBefore: ['+', '$', '#', '@', '(', '[', '~', '-', '.', ':']
        
          # 'precludersAfter' specifies an array of characters or patterns that, when appearing immediately after a candidate HTTP status code in tokenized logs, indicate it is not a valid HTTP code.
          #  Used to preclude false positives like percentages ('200%'), floats ('200.'), or expressions ('200+').
          #  Entries are single characters or short strings for O(1) lookup efficiency in the heuristic.
          precludersAfter: ['%', ')', ']', '=', '!', '?', '+', '-', '.']
        
          # 'keywords' specifies an array of keywords indicating HTTP-related context in log events.
          #  Used to filter logs likely containing HTTP status codes, reducing false positives.
          #  Keywords cover HTTP methods, common log fields, and format-specific terms from sources like Apache, Nginx, HAProxy, Squid, IIS, Spring Boot.
          keywords:
            - HTTP/             # Indicates HTTP protocol version in request lines (e.g., "GET / HTTP/1.1").
            - GET               # HTTP method for retrieving resources.
            - POST              # HTTP method for submitting data.
            - PUT               # HTTP method for updating resources.
            - DELETE            # HTTP method for deleting resources.
            - HEAD              # HTTP method for retrieving headers only.
            - OPTIONS           # HTTP method for describing communication options.
            - TRACE             # HTTP method for diagnostic purposes.
            - PATCH             # HTTP method for partial updates.
            - request           # Common in log fields referring to HTTP requests (e.g., "requestMethod").
            - Request           # Title case variant for HTTP requests
            - response          # Common in log fields referring to HTTP responses (e.g., "responseSize").
            - Response          # Title case variant for HTTP responses
            - status            # Common key for HTTP status codes (e.g., "status":200).
            - Status            # Title case variant for HTTP status
            - code              # Shorthand for status code (e.g., "code":404).
            - Code              # Title case variant for status code
            - upstream_status   # Nginx-specific for backend status codes.
            - Upstream_status   # Title case variant for Nginx backend status
            - Upstream_Status   # Title case variant for Nginx backend status
            - http_status       # JSON key for HTTP status (e.g., "http_status":500).
            - Http_status       # Title case variant for JSON key for HTTP status
            - Http_Status       # Title case variant for JSON key for HTTP status
            - status_code       # Alternative key for status codes (e.g., "status_code":429).
            - statusCode        # Camel case variant for status codes (e.g., "statusCode":200)
            - Completed         # Spring Boot DispatcherServlet log indicator (e.g., "Completed 200 OK").
            - access            # Indicates access logs (e.g., Apache access log).
            - Access            # Title case variant for access logs
            - error             # Indicates error logs containing HTTP errors.
            - Error             # Title case variant for error logs
            - method            # Refers to HTTP request method (e.g., "method":"GET").
            - Method            # Title case variant for HTTP method
            - path              # Refers to request path or URI (e.g., "path":"/api").
            - Path              # Title case variant for request path
            - url               # Refers to request URL (e.g., "url":"http://example.com").
            - Url               # Title case variant for request URL
            - URL               # Title case variant for request URL
            - referrer          # HTTP referrer header field.
            - referrer          # Title case variant for referrer header field.
            - Referer           # Alternative spelling for HTTP referrer
            - Referer           # Title case variant for alternative spelling
            - user-agent        # HTTP user-agent header field.
            - User-agent        # Title case variant for user-agent
            - User-Agent        # Title case variant for user-agent
            - latency           # Common in logs for request/response time (e.g., HAProxy, ELB).
            - Latency           # Title case variant for latency
            - frontend          # HAProxy term for incoming connections.
            - Frontend          # Title case variant for HAProxy frontend
            - backend           # HAProxy term for upstream servers.
            - Backend           # Title case variant for HAProxy backend
            - TCP_MISS          # Squid hierarchy code prefix (e.g., "TCP_MISS/200").
            - W3SVC             # IIS log prefix (e.g., "W3SVC1").
            - DispatcherServlet # Spring Boot servlet class for HTTP handling.
        
          # 'strictKeywords' is a short, high-signal subset of keywords used as a
          #  structural guard during template initialization. After a candidate HTTP
          #  status variable token is found in the template via 'validValues', the
          #  initializer requires at least one of these strict markers to appear
          #  within a small token window (±5) around the candidate before the
          #  httpToken position is bound.
          #
          #  Without this check, any numeric variable that happens to hold a value
          #  in 100..599 on the first observed event gets wrongly bound as the HTTP
          #  code position, e.g. a kafka config limit `max.request.size = 200`, a
          #  JVM `-Dclk.tck=100`, or any framework metric that emits counts in the
          #  low hundreds. Subsequent events at the same variable position then
          #  carry arbitrary non-HTTP values (1, 2, 2000, ...) that get emitted as
          #  http_code garbage.
          #
          #  Entries here should be ONLY tokens that unambiguously mark an HTTP
          #  exchange. The loose list in 'keywords' above (which includes terms
          #  like `error`, `path`, `url`) is too broad for adjacency gating.
          strictKeywords:
            - HTTP/             # HTTP protocol version marker in request lines (e.g., "HTTP/1.1 200 OK").
            - status            # JSON/KV key for HTTP status (e.g., "status":200, status=500).
            - Status            # Title case variant.
            - statusCode        # CamelCase variant of status code key.
            - status_code       # Snake case variant.
            - http_status       # HTTP-prefixed status key.
            - Http_Status       # Title case variant.
            - Http_status       # Mixed case variant.
            - upstream_status   # Nginx backend status key.
            - Upstream_Status   # Title case variant.
            - code              # JSON/KV key for response code (e.g., "code":404).
            - Code              # Title case variant (also catches `statusCode`-style splits).
            - Completed         # Spring Boot DispatcherServlet log phrase (e.g., "Completed 200 OK").
            - DispatcherServlet # Spring Boot servlet class that always emits a status next.
            - TCP_MISS          # Squid hierarchy code prefix (always followed by "/<code>").
            - response          # HTTP response marker.
            - Response          # Title case variant.
            - GET               # HTTP method verbs, always appear in request-log entries with codes.
            - POST
            - PUT
            - DELETE
            - PATCH
            - HEAD
            - OPTIONS
            - TRACE
        
          # 'validValues' specifies an array of all standard HTTP status codes as defined by the IANA HTTP Status Code Registry and relevant RFCs (e.g., RFC 9110, RFC 6585, RFC 7231-7235, RFC 7538, RFC 7725, RFC 8297, RFC 9111).
          #  Used to validate potential HTTP status codes in log events, ensuring only recognized codes are extracted.
          #  Each entry includes the numeric code followed by a comment describing its meaning and purpose.
          validValues:
            - '200' # OK: Standard response for successful HTTP requests.
            - '304' # Not Modified: Resource has not been modified since last requested.
            - '404' # Not Found: Server cannot find the requested resource.
            - '301' # Moved Permanently: Resource has been moved permanently to a new URI.
            - '302' # Found: Resource temporarily located at a different URI.
            - '403' # Forbidden: Client does not have access rights to the content.
            - '400' # Bad Request: Server cannot process due to client error.
            - '500' # Internal Server Error: Generic server error.
            - '206' # Partial Content: Server is delivering only part of the resource due to a range header.
            - '503' # Service Unavailable: Server temporarily unable to handle request.
            - '401' # Unauthorized: Authentication required and has failed or not provided.
            - '204' # No Content: Server processed request but no content is returned.
            - '502' # Bad Gateway: Server received an invalid response from upstream.
            - '201' # Created: Request has been fulfilled, resulting in new resource creation.
            - '429' # Too Many Requests: Client has sent too many requests in a given time.
            - '308' # Permanent Redirect: Resource permanently at another URI, method unchanged.
            - '307' # Temporary Redirect: Resource temporarily at another URI, method unchanged.
            - '303' # See Other: Response can be found under a different URI using GET.
            - '405' # Method Not Allowed: Request method is not supported for the resource.
            - '406' # Not Acceptable: Server cannot produce a response matching client’s Accept headers.
            - '408' # Request Timeout: Server timed out waiting for the request.
            - '409' # Conflict: Request conflicts with current state of the resource.
            - '410' # Gone: Resource is permanently unavailable.
            - '413' # Content Too Large: Request entity is larger than server limits.
            - '414' # URI Too Long: Request-URI is longer than the server can handle.
            - '415' # Unsupported Media Type: Media format of the requested data is not supported.
            - '416' # Range Not Satisfiable: Requested range cannot be fulfilled.
            - '422' # Unprocessable Content: Request is well-formed but semantically incorrect.
            - '504' # Gateway Timeout: Server, as gateway, did not get timely upstream response.
            - '505' # HTTP Version Not Supported: Server does not support the HTTP version.
            - '100' # Continue: Client should continue with request.
            - '101' # Switching Protocols: Server is switching protocols as requested.
            - '202' # Accepted: Request accepted for processing, but processing is not complete.
            - '203' # Non-Authoritative Information: Server is a transforming proxy with non-authoritative metadata.
            - '205' # Reset Content: Client should reset the document view.
            - '300' # Multiple Choices: Indicates multiple options for the resource.
            - '411' # Length Required: Content-Length header is required but not provided.
            - '412' # Precondition Failed: Server does not meet one of the preconditions.
            - '417' # Expectation Failed: Server cannot meet Expect header requirements.
            - '421' # Misdirected Request: Request sent to server unable to produce a response.
            - '423' # Locked: Resource is locked (WebDAV).
            - '424' # Failed Dependency: Request failed due to failure of a previous request.
            - '425' # Too Early: Server unwilling to risk processing a request that might be replayed.
            - '426' # Upgrade Required: Client should switch to a different protocol.
            - '428' # Precondition Required: Server requires conditional request headers.
            - '431' # Request Header Fields Too Large: Headers exceed server limits.
            - '451' # Unavailable For Legal Reasons: Resource access blocked for legal reasons.
            - '501' # Not Implemented: Server does not support the requested functionality.
            - '506' # Variant Also Negotiates: Server configuration error in content negotiation.
            - '507' # Insufficient Storage: Server cannot store the representation (WebDAV).
            - '508' # Loop Detected: Server detected an infinite loop in request processing.
            - '510' # Not Extended: Further extensions required for request fulfillment.
            - '511' # Network Authentication Required: Client needs to authenticate for network access.
            - '102' # Processing: Server has received and is processing the request.
            - '103' # Early Hints: Used to return some response headers before final HTTP message.
            - '207' # Multi-Status: Conveys information about multiple resources in WebDAV.
            - '208' # Already Reported: Used inside a DAV binding to avoid enumerating bindings repeatedly.
            - '226' # IM Used: Server has fulfilled a request for the resource using instance-manipulations.
            - '305' # Use Proxy: Resource is available only through a proxy.
            - '306' # (Unused): Previously used for Switch Proxy, now reserved.
            - '402' # Payment Required: Reserved for future use, e.g., digital payments.
            - '407' # Proxy Authentication Required: Client must authenticate with proxy.
            - '418' # (Unused): Previously “I’m a teapot” (RFC 2324, joke).
        ```

    === ":material-table-eye: Lookup"

  
        #### lookup {.hidden-heading}
        Configure  the [File Lookup](/run/initialize/lookup "Enrich TenXObjects with lookup table values") to enrich TenXObjects with lookup table values.  
  
        Below is the default configuration from: [lookup/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/lookup/config.yaml "lookup/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/lookup/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml5-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml5-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml5-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit File Lookup Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml5-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/lookup/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/lookup/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/lookup/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/lookup/config.yaml">$TENX_CONFIG/run/initialize/lookup/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/lookup/config.yaml">./pipelines/run/initialize/lookup/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvb2t1cCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZmlsZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVFNWL0NTViBmaWxlIHRvIGxvYWRcblxuVGhlIHRhcmdldCAudHN2Ly5jc3YgbG9va3VwIGZpbGUgdG8gbG9hZCIKICAgICAgICB9LAogICAgICAgICJrZXlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGVuWE9iamVjdCBmaWVsZCBuYW1lIHRvIHVzZSBhcyBsb29rdXAga2V5XG5cblNwZWNpZmllcyBhIGZpZWxkIG5hbWUgd2hvc2UgdmFsdWUgdG8gZXh0cmFjdCBmcm9tIGEgdGFyZ2V0IFRlblhPYmplY3QgdG8gdXNlIGFzIHRoZSBsb29rdXAga2V5LCB0aGF0IGlzIHRoZSB2YWx1ZSB1c2VkIHRvIHNlYXJjaCBmb3IgYSBtYXRjaGluZyB2YWx1ZSB3aXRoaW4gdGhlIGxvb2t1cCBmaWxlLiIKICAgICAgICB9LAogICAgICAgICJ2YWx1ZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUZW5YT2JqZWN0IGZpZWxkIG5hbWUgdG8gdXNlIGFzIHRoZSBsb29rdXAgdmFsdWVcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHdpdGggdGhlIHRhcmdldCBUZW5YT2JqZWN0IHRvIHNldCB3aXRoIHRoZSByZXN1bHQgbG9va3VwIHZhbHVlIGFjcXVpcmVkIGJ5IHNlYXJjaGluZyB0aGUgdGFibGUgZm9yIHRoZSB2YWx1ZSBvZiBbbG9va3VwS2V5RmllbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvbG9va3VwLyNsb29rdXBrZXlmaWVsZCkuIgogICAgICAgIH0sCiAgICAgICAgInZhbHVlQ29sdW1uIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIGxvb2t1cCB2YWx1ZSBjb2x1bW5cblxuU3BlY2lmaWVzIGEgY29sdW1uIGluIHRoZSBbbG9va3VwRmlsZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGZpbGUpIHdob3NlIHZhbHVlIHRvIGFzc2lnbiBmcm9tIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHRhYmxlIChpLmUuLCB0aGUga2V5IGNvbHVtbikgaW50byBbbG9va3VwVmFsdWVGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cHZhbHVlZmllbGQpIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAgdGhlIFtsb29rdXBLZXlGaWVsZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5pdGlhbGl6ZS9sb29rdXAvI2xvb2t1cGtleWZpZWxkKSBmaWVsZCB2YWx1ZS4gKERlZmF1bHQ6IHNlY29uZCBjb2x1bW4gaW4gdGFibGUgKGZpcnN0IGNvbHVtbiBpcyBhc3N1bWVkIGFzIHRoZSBrZXkpKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAic2Vjb25kIGNvbHVtbiBpbiB0YWJsZSAoZmlyc3QgY29sdW1uIGlzIGFzc3VtZWQgYXMgdGhlIGtleSkiCiAgICAgICAgfQogICAgICB9LAogICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICJmaWxlIiwKICAgICAgICAia2V5RmllbGQiLAogICAgICAgICJ2YWx1ZUZpZWxkIgogICAgICBdCiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' lookup file configuration
        
        # Configuration text lookup to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/lookup/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/lookup
        
        # ============================== Lookup Options ===============================
        
        lookup:
        
          # 'file' specifies the .csv/.tsv lookup table file
          file: $=path("pipelines/run/initialize/lookup/http.csv")
        
          # 'keyField' specifies the field whose value is query lookup key.
          #  The calculated code field below captures the penultimate HTTP code value from a web log event.
          #  For example, 200 for: Mar 10 12:34:56 webserver nginx: 192.168.1.10 - - [10/Mar/2025:12:34:56 +0000] "GET /index.html HTTP/1.1" 200 1024
          keyField: $=yield TenXEnv.get("httpCodeField")
        
          # 'valueField' specifies the name of the result field to assign to the lookup table value
          valueField: http_message
        ```

    === ":material-kubernetes: K8s"

  
        #### k8s {.hidden-heading}
        Configure  the [k8s Context Extractor](/run/initialize/k8s "Enrich TenXObjects with k8s pod and container information") to enrich TenXObjects with k8s pod and container information.  
  
        Below is the default configuration from: [k8s/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/k8s/config.yaml "k8s/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/k8s/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml6-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml6-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml6-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit k8s Context Extractor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml6-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/k8s/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/k8s/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/k8s/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/k8s/config.yaml">$TENX_CONFIG/run/initialize/k8s/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/k8s/config.yaml">./pipelines/run/initialize/k8s/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgIms4cyIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiZXh0cmFjdG9yTmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBleHRyYWN0b3IgdG8gdXNlIGZvciBrOHMgY29udGV4dCBleHRyYWN0aW9uXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFtleHRyYWN0b3JdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2V4dHJhY3QvKSB0byB1c2UgZm9yIGs4cyBjb250ZXh0IGV4dHJhY3Rpb24uIFRvIGxlYXJuIG1vcmUgc2VlIFtrOHMgZXh0cmFjdG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvbW9kdWxlcy9ibG9iL21haW4vcGlwZWxpbmVzL3J1bi9tb2R1bGVzL2luaXRpYWxpemUvazhzL3NldHRpbmdzLnlhbWwpIChEZWZhdWx0OiBmbHVlbnRLOHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJmbHVlbnRLOHMiCiAgICAgICAgfSwKICAgICAgICAibmFtZXNwYWNlTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgbmFtZXNwYWNlIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW25hbWVzcGFjZV0oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvb3ZlcnZpZXcvd29ya2luZy13aXRoLW9iamVjdHMvbmFtZXNwYWNlcy8pIChEZWZhdWx0OiBuYW1lc3BhY2UpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJuYW1lc3BhY2UiCiAgICAgICAgfSwKICAgICAgICAiY29udGFpbmVyTmFtZUZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLOHMgY29udGFpbmVyIG5hbWUgdGFyZ2V0IGZpZWxkIG5hbWVcblxuU3BlY2lmeSB0aGUgZmllbGQgbmFtZSB0byBhc3NpZ24gd2l0aCB0aGUgZXh0cmFjdGVkIGs4cyBbY29udGFpbmVyIG5hbWVdKGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbnRhaW5lcnMvKSAoRGVmYXVsdDogY29udGFpbmVyKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGFpbmVyIgogICAgICAgIH0sCiAgICAgICAgInBvZE5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSzhzIHBvZCBuYW1lIHRhcmdldCBmaWVsZCBuYW1lXG5cblNwZWNpZnkgdGhlIGZpZWxkIG5hbWUgdG8gYXNzaWduIHdpdGggdGhlIGV4dHJhY3RlZCBrOHMgW3BvZCBuYW1lXShodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy93b3JrbG9hZHMvcG9kcy8pIChEZWZhdWx0OiBwb2QpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJwb2QiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' k8s lookup configuration
        
        # Configure a k8s field extractors to enrich TenXObjects
        # To learn more see https://doc.log10x.com/run/initialize/k8s/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/k8s
        
        # ============================== Symbol Options ===============================
        
        k8s:
        
          # 'extractorName' specifies which extractor (e.g., fluentK8s/filebeatK8s) to use for k8s metadata extraction
          extractorName: fluentK8s # extract k8s context using Fluent schema
        
          # 'namespaceNameField' specifies the name of the field in which to assign an extracted k8 namespace name status code, if found
          namespaceNameField: k8s_namespace
        
          # 'containerNameField' specifies the name of the field in which to assign an extracted k8 container name status code, if found
          containerNameField: k8s_container
        
          # 'podNameField' specifies the name of the field in which to assign an extracted k8 pod name.
          # Default empty. Pod names churn on every deploy (each restart mints a new pod ID), so
          # surfacing pod name as a metric-label dimension causes unbounded TSDB active-series growth.
          # The stable 'k8s_namespace' + 'k8s_container' enrichments above cover the common per-app
          # attribution case without the deploy-churn cost. To opt in to per-pod resolution, set this
          # to a concrete field name (e.g. 'k8s_pod'); the 'tenx_user_process' alias activates with it.
          podNameField: ""
        ```

    === ":material-globe-model: GeoIP"

  
        #### geoIP {.hidden-heading}
        Configure  the [GeoIP lookup](/run/initialize/geoIP "Geo-reference TenXObjects via their ipAddress value") to geo-reference TenXObjects via their ipAddress value.  
  
        Below is the default configuration from: [geoIP/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/geoIP/config.yaml "geoIP/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/initialize/geoIP/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml7-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml7-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml7-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit GeoIP lookup Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml7-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/initialize/geoIP/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/initialize/geoIP/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/initialize/geoIP/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/initialize/geoIP/config.yaml">$TENX_CONFIG/run/initialize/geoIP/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/initialize/geoIP/config.yaml">./pipelines/run/initialize/geoIP/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImdlb0lQIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJmaWxlIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhNaW5kIEdlb0lQIGZpbGUgKC5tbWRiKVxuXG5UaGUgW01heE1pbmRdKGh0dHBzOi8vd3d3Lm1heG1pbmQuY29tL2VuL2dlb2lwMi1kYXRhYmFzZXMpIEdlb0lQIERCIGZpbGUgKC5tbWRiKSB0byBsb2FkLiBUbyBsZWFybiBtb3JlLCBzZWUgW2xvYWRHZW9JUERCXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWExvb2t1cC5sb2FkR2VvSVBEQikuIgogICAgICAgIH0sCiAgICAgICAgImNvbnRpbmVudEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBjb250aW5lbnQgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNvbnRpbmVudCBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY29udGluZW50XCIpLiBEZWZhdWx0cyB0byBcImNvbnRpbmVudFwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNvbnRpbmVudCBlbnJpY2htZW50LiAoRGVmYXVsdDogY29udGluZW50KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiY29udGluZW50IgogICAgICAgIH0sCiAgICAgICAgImNvdW50cnlGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgY291bnRyeSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgY291bnRyeSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfY291bnRyeVwiKS4gRGVmYXVsdHMgdG8gXCJjb3VudHJ5XCIuIFNldCB0byBcIlwiIHRvIGRpc2FibGUgY291bnRyeSBlbnJpY2htZW50LiAoRGVmYXVsdDogY291bnRyeSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImNvdW50cnkiCiAgICAgICAgfSwKICAgICAgICAic3ViZGl2aXNpb25GaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3Igc3ViZGl2aXNpb24gZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIHN1YmRpdmlzaW9uIChzdGF0ZS9yZWdpb24pIGdlby1yZWZlcmVuY2UgZGF0YSAoZS5nLiwgXCJteV9yZWdpb25cIikuIERlZmF1bHRzIHRvIFwic3ViZGl2aXNpb25cIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBzdWJkaXZpc2lvbiBlbnJpY2htZW50LiAoRGVmYXVsdDogc3ViZGl2aXNpb24pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJzdWJkaXZpc2lvbiIKICAgICAgICB9LAogICAgICAgICJjaXR5RmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGNpdHkgZ2VvLXJlZmVyZW5jZVxuXG5TcGVjaWZpZXMgdGhlIGZpZWxkIG5hbWUgdG8gc3RvcmUgdGhlIGNpdHkgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2NpdHlcIikuIERlZmF1bHRzIHRvIFwiY2l0eVwiLiBTZXQgdG8gXCJcIiB0byBkaXNhYmxlIGNpdHkgZW5yaWNobWVudC4gKERlZmF1bHQ6IGNpdHkpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJjaXR5IgogICAgICAgIH0sCiAgICAgICAgInBvc3RhbEZpZWxkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJGaWVsZCBuYW1lIGZvciBwb3N0YWwgY29kZSBnZW8tcmVmZXJlbmNlXG5cblNwZWNpZmllcyB0aGUgZmllbGQgbmFtZSB0byBzdG9yZSB0aGUgcG9zdGFsIGNvZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X3Bvc3RhbFwiKS4gRGVmYXVsdHMgdG8gXCJwb3N0YWxcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBwb3N0YWwgY29kZSBlbnJpY2htZW50LiAoRGVmYXVsdDogcG9zdGFsKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAicG9zdGFsIgogICAgICAgIH0sCiAgICAgICAgImxhdGl0dWRlRmllbGQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkZpZWxkIG5hbWUgZm9yIGxhdGl0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsYXRpdHVkZSBnZW8tcmVmZXJlbmNlIGRhdGEgKGUuZy4sIFwibXlfbGF0aXR1ZGVcIikuIERlZmF1bHRzIHRvIFwibGF0aXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsYXRpdHVkZSBlbnJpY2htZW50LiAoRGVmYXVsdDogbGF0aXR1ZGUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJsYXRpdHVkZSIKICAgICAgICB9LAogICAgICAgICJsb25naXR1ZGVGaWVsZCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRmllbGQgbmFtZSBmb3IgbG9uZ2l0dWRlIGdlby1yZWZlcmVuY2VcblxuU3BlY2lmaWVzIHRoZSBmaWVsZCBuYW1lIHRvIHN0b3JlIHRoZSBsb25naXR1ZGUgZ2VvLXJlZmVyZW5jZSBkYXRhIChlLmcuLCBcIm15X2xvbmdpdHVkZVwiKS4gRGVmYXVsdHMgdG8gXCJsb25naXR1ZGVcIi4gU2V0IHRvIFwiXCIgdG8gZGlzYWJsZSBsb25naXR1ZGUgZW5yaWNobWVudC4gKERlZmF1bHQ6IGxvbmdpdHVkZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogImxvbmdpdHVkZSIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgImZpbGUiCiAgICAgIF0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' GeoIP lookup configuration
        
        # The GeoIP lookup geo-references TenXObjects based on their ipAddress field value.
        # To learn more see https://doc.log10x.com/api/js/#TenXObject+ipAddress
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/initialize/geoIP
        
        # =============================== GeoIP Options ===============================
        
        geoIP:
         
          # 'file' specifies the MaxMind GeoIP DB (.mmdb) file to load.
          # To learn more see https://doc.log10x.com/api/js/#TenXLookup.loadGeoIPDB
          file: data/run/lookup/geo.mmdb
        
          # 'countryField' specifies the field name for country geo-reference data.
          # Defaults to "country". Set to "" to disable country enrichment.
          countryField: country
        
          # Uncomment the following fields to enable additional geo-reference data as needed:
          # continentField: continent
          # subdivisionField: subdivision
          # cityField: city
          # postalField: postal
          # latitudeField: latitude
          # longitudeField: longitude
        ```

??? tenx-metricoutputs "Metric Outputs"

    <a id="metricOutputs"></a>
    ### Metric Outputs {.hidden-heading}

    Activate a [Metric output](/run/output/metric "Write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog)") to write aggregated TenXSummary instances to metric outputs (e.g., Prometheus, Datadog).

    === ":material-monitor-dashboard: Log10x"

  
        #### log10x {.hidden-heading}
        Configure [log10x managed Prometheus outputs](/run/output/metric/log10x "Publish TenXSummary metrics to the log10x Prometheus backend") to publish TenXSummary metrics to the log10x Prometheus backend.  
  
        Below is the default configuration from: [log10x/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log10x/config.yaml "log10x/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log10x/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml8-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml8-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml8-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit log10x managed Prometheus output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml8-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/log10x/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/log10x/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/log10x/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/log10x/config.yaml">$TENX_CONFIG/run/output/metric/log10x/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/log10x/config.yaml">./pipelines/run/output/metric/log10x/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImxvZzEweE1ldHJpY3MiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBsb2cxMHhNZXRyaWNzOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6ICAgICAgIGBgYCB5YW1sICBsb2cxMHhNZXRyaWNzOiAgICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgICAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpLiIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' 10x-hosted metrics backend output configuration
        
        # Configuration 10x-hosted metrics backend counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/log10x/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/log10x
        
        # =========================== Log10x Metrics output ===========================
        
        # Define multiple log10x metric outputs below
        log10xMetrics:
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
          - nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":simple-prometheus: Scrape"

  
        #### scrape {.hidden-heading}
        Configure [Prometheus scrape metrics outputs](/run/output/metric/prometheus/scrape "Publish TenXSummary metrics to Prometheus") to publish TenXSummary metrics to Prometheus.  
  
        Below is the default configuration from: [scrape/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/scrape/config.yaml "scrape/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/scrape/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml9-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml9-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml9-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus scrape metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml9-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/scrape/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/scrape/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/scrape/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/scrape/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/scrape/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/scrape/config.yaml">./pipelines/run/output/metric/prometheus/scrape/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNjcmFwZXIgcG9ydCBudW1iZXJcblxuUG9ydCBudW1iZXIgdG8gbGlzdGVuIHRvIHRoZSBQcm9tZXRoZXVzIHNjcmFwZXIgb24gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIHByb21ldGhldXM6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9tZXRoZXVzOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJwb3J0IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' Prometheus metric output configuration
        
        # Configure Prometheus metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/scrape
        
        # ============================== Prometheus Outputs ===========================
        
        # Define multiple Prometheus metric outputs below
        prometheus:
        
            # --------------------------- Connection Options --------------------------
        
            # 'port' sets the port number to listen to the Prometheus scraper on
            #  Override via 'PROMETHEUS_SCRAPE_PORT' to avoid collisions in sidecar deployments
            #  (default 9100 collides with node_exporter).
          - port: $=TenXEnv.get("PROMETHEUS_SCRAPE_PORT", 9100)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":simple-prometheus: Push-gateway"

  
        #### push-gateway {.hidden-heading}
        Configure [Prometheus Push gateway metrics outputs](/run/output/metric/prometheus/push-gateway "Publish TenXSummary metrics to Prometheus via a Push gateway") to publish TenXSummary metrics to Prometheus via a Push gateway.  
  
        Below is the default configuration from: [push-gateway/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/push-gateway/config.yaml "push-gateway/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/push-gateway/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml10-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml10-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml10-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus Push gateway metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml10-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/push-gateway/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/push-gateway/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/push-gateway/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/push-gateway/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/push-gateway/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/push-gateway/config.yaml">./pipelines/run/output/metric/prometheus/push-gateway/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNQRyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSG9zdCBhZGRyZXNzIG9mIFByb21ldGhldXMgcHVzaCBnYXRld2F5IGluc3RhbmNlIHRvIHB1c2ggZGF0YSB0b1xuXG5EZWZpbmVzIHRoZSBob3N0IGFkZHJlc3Mgb2YgdGhlIHB1c2ggZ2F0ZXdheSB1c2VkIGZvciBwdXNoaW5nIHRoZSBtZXRyaWNzLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiam9iIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBqb2IgYXNzaWduZWQgdG8gcHVzaGVkIG1ldHJpY3NcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgam9iIHRoYXQgdG8gYXNzaWduIHRvIG91dHB1dCBtZXRyaWNzLiIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDFtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjFtaW4iCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBwcm9tZXRoZXVzUEc6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBwcm9tZXRoZXVzUEc6ICAgZmlsdGVyOiB0aGlzLmlucHV0TmFtZSA9PSBcIm15TWV0cmljXCIgYGBgICBUbyBsZWFybiBtb3JlIHNlZSBbaW5wdXROYW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QraW5wdXROYW1lKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibWF4Q2FyZGluYWxpdHkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyBhbGxvd2VkXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIChjYXJkaW5hbGl0eSkgYWxsb3dlZCBmb3IgdGhpcyBvdXRwdXQuIFdoZW4gZXhjZWVkZWQsIG1ldHJpY3Mgd2lsbCBiZSBkcm9wcGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhcmRpbmFsaXR5LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZWQiIDogWwogICAgICAgICAgImhvc3QiLAogICAgICAgICAgImpvYiIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' Prometheus push gateway metric output configuration
        
        # Configures Prometheus push gateway metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/push-gateway/
        # For the Prometheus push gateway see: https://prometheus.io/docs/practices/pushing/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/push-gateway
        
        # ========================== Prometheus PG Options ============================
        
        # Define multiple Prometheus push gateway metric outputs below
        prometheusPG:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the address and port number of the push gateway
          - host: $=TenXEnv.get("PUSHGATEWAY_URL", "localhost:9091")
        
            # 'job' sets the logical job name reported to the push gateway
            job: $=TenXEnv.get("PUSHGATEWAY_JOB", "my-10x-job")
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval to send metrics Prometheus PG (e.g., '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-prometheus: Remote-write"

  
        #### remote-write {.hidden-heading}
        Configure [Prometheus RW metrics outputs](/run/output/metric/prometheus/remote-write "Publish TenXSummary metrics to Prometheus via the Remote-Write protocol") to publish TenXSummary metrics to Prometheus via the Remote-Write protocol.  
  
        Below is the default configuration from: [remote-write/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/remote-write/config.yaml "remote-write/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/prometheus/remote-write/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml11-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml11-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml11-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Prometheus RW metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml11-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/prometheus/remote-write/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/prometheus/remote-write/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/prometheus/remote-write/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/prometheus/remote-write/config.yaml">$TENX_CONFIG/run/output/metric/prometheus/remote-write/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/prometheus/remote-write/config.yaml">./pipelines/run/output/metric/prometheus/remote-write/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInByb21ldGhldXNSVyIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSG9zdCBhZGRyZXNzIG9mIHJlbW90ZSBQcm9tZXRoZXVzIGluc3RhbmNlIHRvIHdyaXRlIGRhdGEgdG9cblxuRGVmaW5lcyB0aGUgdGFyZ2V0IGhvc3QgYWRkcmVzcyBmb3IgcmVtb3RlIHdyaXRlLiBVc2UgZnVsbCBVUkwgcGF0aCwgKGkuZS4gaHR0cDovLzxzZXJ2ZXI+Ojxwb3J0Pi9hcGkvdjEvd3JpdGUpIgogICAgICAgICAgfSwKICAgICAgICAgICJ1c2VyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVXNlcm5hbWUgdG8gdXNlIHdoZW4gYXV0aGVudGljYXRpbmcgd2l0aCByZW1vdGUgd3JpdGUgdGFyZ2V0XG5cbkRlZmluZXMgdGhlIHVzZXJuYW1lIHdpdGggd2hpY2ggdG8gcGVyZm9ybSBhIGJhc2ljIGF1dGggd2l0aCB0aGUgcmVtb3RlIHdyaXRlIHRhcmdldC4gSWYgc3BlY2lmaWVkLCBleHBlY3RzICdwcm9tZXRoZXVzUldQYXNzd29yZCcgYWxzbyBiZSBwYXNzZWQuIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhc3N3b3JkIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nIHdpdGggcmVtb3RlIHdyaXRlIHRhcmdldFxuXG5EZWZpbmVzIHRoZSBwYXNzd29yZCB3aXRoIHdoaWNoIHRvIHBlcmZvcm0gYSBiYXNpYyBhdXRoIHdpdGggdGhlIHJlbW90ZSB3cml0ZSB0YXJnZXQuIE9ubHkgdXNlZCBpZiAncHJvbWV0aGV1c1JXVXNlcicgaXMgYWxzbyBzcGVjaWZpZWQuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b2tlbiIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRva2VuIHRvIHVzZSB3aGVuIGF1dGhlbnRpY2F0aW5nIHdpdGggcmVtb3RlIHdyaXRlIHRhcmdldFxuXG5EZWZpbmVzIGEgdG9rZW4gd2l0aCB3aGljaCB0byBwZXJmb3JtIGEgYmVhcmVyIHRva2VuIGF1dGggd2l0aCB0aGUgcmVtb3RlIHdyaXRlIHRhcmdldC4iCiAgICAgICAgICB9LAogICAgICAgICAgInN0ZXAiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIG91dHB1dFxuXG5TZXRzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25dKGh0dHBzOi8vbWljcm9tZXRlci5pby9kb2NzL2NvbmNlcHRzI3JhdGUtYWdncmVnYXRpb24pIChEZWZhdWx0OiAxbWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxbWluIgogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgcHJvbWV0aGV1c1JXOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgcHJvbWV0aGV1c1JXOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' Prometheus remote write metric output configuration
        
        # Configure Prometheus remote write metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/prometheus/remote-write/
        # For Prometheus RW, see https://prometheus.io/docs/concepts/remote_write_spec/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/prometheus/remote-write
        
        # ========================== Prometheus RW Options ============================
        
        # Define multiple Prometheus RW metric outputs below
        prometheusRW:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the Prometheus remote write endpoint
            #  'PROMETHEUS_REMOTE_WRITE_URL' works for any remote-write-compatible backend
            #  (Grafana Cloud, Mimir, Thanos, VictoriaMetrics, Cortex).
          - host: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_URL", "http://localhost:9090/api/v1/write")
        
            # 'user' for authentication
            user: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_USERNAME") # (❗ EnvVar REQUIRED)
        
            # 'password' for authentication
            password: $=TenXEnv.get("PROMETHEUS_REMOTE_WRITE_PASSWORD") # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval to send metrics to Prometheus RW (e.g. '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-datadog: Datadog"

  
        #### datadog {.hidden-heading}
        Configure [Datadog metrics outputs](/run/output/metric/datadog "Publish TenXSummary metrics to Datadog") to publish TenXSummary metrics to Datadog.  
  
        Below is the default configuration from: [datadog/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/datadog/config.yaml "datadog/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/datadog/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml12-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml12-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml12-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Datadog metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml12-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/datadog/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/datadog/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/datadog/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/datadog/config.yaml">$TENX_CONFIG/run/output/metric/datadog/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/datadog/config.yaml">./pipelines/run/output/metric/datadog/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImRhdGFkb2ciIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGRhdGFkb2c6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBkYXRhZG9nOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJkZXNjcmlwdGlvbnMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRvIHNlbmQgbWV0ZXIgZGVzY3JpcHRpb25zIHRvIERhdGFkb2cgc2NyYXBlXG5cblNldHMgd2hldGhlciB0byBzZW5kIG1ldGVyIGRlc2NyaXB0aW9ucyB0byBEYXRhZG9nIFR1cm4gdGhpcyBvZmYgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBkYXRhIHNlbnQgb24gZWFjaCB3cml0ZSAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gb3V0cHV0XG5cblNldHMgdGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byB0aGUgdGltZS1zZXJpZXMgZGVzdGluYXRpb24gKGUuZy4sICcxbScpLiBUbyBsZWFybiBtb3JlIHNlZSBbcmF0ZS1hZ2dyZWdhdGlvbl0oaHR0cHM6Ly9taWNyb21ldGVyLmlvL2RvY3MvY29uY2VwdHMjcmF0ZS1hZ2dyZWdhdGlvbikgKERlZmF1bHQ6IDEgbWludXRlLikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMSBtaW51dGUuIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJEYXRhZG9nIGFwaUtleVxuXG5TZXRzIHRoZSBEYXRhZG9nIFthcGkga2V5XShodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9hY2NvdW50X21hbmFnZW1lbnQvYXBpLWFwcC1rZXlzLykiCiAgICAgICAgICB9LAogICAgICAgICAgImFwcGxpY2F0aW9uS2V5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0YWRvZyBhcHBsaWNhdGlvbiBLZXkuXG5cblNldHMgdGhlIERhdGFkb2cgW2FwcCBLZXldKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FjY291bnRfbWFuYWdlbWVudC9hcGktYXBwLWtleXMvKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiaG9zdFRhZyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlZhbHVlIHRvIG1hcCB0byBcImhvc3RcIiB3aGVuIHNoaXBwaW5nIG1ldHJpY3MgdG8gRGF0YWRvZ1xuXG5WYWx1ZSB0byBtYXAgdG8gXCJob3N0XCIgd2hlbiBzaGlwcGluZyBtZXRyaWNzIHRvIERhdGFkb2ciCiAgICAgICAgICB9LAogICAgICAgICAgInVyaSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRoZSBVUkkgb2YgYW4gaW50ZXJuYWwgcHJveHkgZW4gcm91dGUgdG8gRGF0YWRvZy5cblxuU2V0cyB0aGUgRGF0YWRvZyBzaXRlIGFkZHJlc3MgdG8gY29ubmVjdCB0byAoZS5nLiAndXM1LmRhdGFkb2docS5jb20nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW0RhdGFkb2cgc2l0ZXNdKGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC9zaXRlLykgKERlZmF1bHQ6IGh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vYXBpLmRhdGFkb2docS5jb20iCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogdHJ1ZQp9</template>

        ```yaml
        # 🔟❎ 'run' Datadog metric output configuration
        
        # Configure Datadog metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/datadog/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/datadog
        
        # ============================== Datadog Options ==============================
        
        # Define multiple Datadog metric outputs below
        datadog:
          
            # --------------------------- Connection Options --------------------------
        
            # 'apiKey' and 'applicationKey' set the Datadog API and app keys (required).
            #  To learn more see: https://docs.datadoghq.com/account_management/api-app-keys/
          - apiKey: $=TenXEnv.get("DD_API_KEY")         # (❗ EnvVar REQUIRED)
        
            applicationKey: $=TenXEnv.get("DD_APP_KEY") # (❗ EnvVar REQUIRED)
        
            # 'uri' sets the Datadog site address to which to connect.
            #  'DD_SITE' is the bare site domain (e.g. 'us5.datadoghq.com', 'datadoghq.eu'),
            #  matches the Datadog Agent convention so existing cluster secrets work as-is.
            #  To learn more see: https://docs.datadoghq.com/getting_started/site/
            uri: $="https://" + TenXEnv.get("DD_SITE", "us5.datadoghq.com")
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'descriptions' sets whether to send meter descriptions to Datadog
            #  Turn this off to minimize the amount of data sent on each write
            descriptions: false
        
            # 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
            #  To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        ```

    === ":fontawesome-brands-aws: Cloudwatch"

  
        #### cloudwatch {.hidden-heading}
        Configure [AWS CloudWatch metrics outputs](/run/output/metric/cloudwatch "Publish TenXSummary metrics to AWS CloudWatch metrics") to publish TenXSummary metrics to AWS CloudWatch metrics.  
  
        Below is the default configuration from: [cloudwatch/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/cloudwatch/config.yaml "cloudwatch/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/cloudwatch/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml13-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml13-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml13-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit AWS CloudWatch metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml13-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/cloudwatch/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/cloudwatch/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/cloudwatch/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/cloudwatch/config.yaml">$TENX_CONFIG/run/output/metric/cloudwatch/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/cloudwatch/config.yaml">./pipelines/run/output/metric/cloudwatch/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImNsb3Vkd2F0Y2giIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGNsb3Vkd2F0Y2g6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gd3JpdGUgdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlIGBteU1ldHJpY2AgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgY2xvdWR3YXRjaDogICBmaWx0ZXI6IHRoaXMuaW5wdXROYW1lID09IFwibXlNZXRyaWNcIiBgYGAgIFRvIGxlYXJuIG1vcmUgc2VlIFtpbnB1dE5hbWVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCtpbnB1dE5hbWUpIgogICAgICAgICAgfSwKICAgICAgICAgICJtYXhDYXJkaW5hbGl0eSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIGFsbG93ZWRcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgKGNhcmRpbmFsaXR5KSBhbGxvd2VkIGZvciB0aGlzIG91dHB1dC4gV2hlbiBleGNlZWRlZCwgbWV0cmljcyB3aWxsIGJlIGRyb3BwZWQgdG8gcHJldmVudCBleGNlc3NpdmUgY2FyZGluYWxpdHkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDUwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiA1MDAKICAgICAgICAgIH0sCiAgICAgICAgICAic3RlcCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1Ymxpc2ggbWV0cmljcyBpbnRlcnZhbFxuXG5TZXRzIHRoZSBpbnRlcnZhbCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25daHR0cHM6Ly9kb2NzLm1pY3JvbWV0ZXIuaW8vbWljcm9tZXRlci9yZWZlcmVuY2UvY29uY2VwdHMvcmF0ZS1hZ2dyZWdhdGlvbi5odG1sKSAoRGVmYXVsdDogMSBtaW4pIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIjEgbWluIgogICAgICAgICAgfSwKICAgICAgICAgICJhd3NBY2Nlc3NLZXlJZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkFXUyBhY2Nlc3Mga2V5XG5cbkRlZmluZXMgdGhlIEFXUyBhY2Nlc3Mga2V5IHVzZWQgdG8gYXV0aGVudGljYXRlLiBUbyBsZWFybiBtb3JlIHNlZSBbQVdTIGNyZWRlbnRpYWxzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2VuZXJhbC9sYXRlc3QvZ3IvYXdzLXNlYy1jcmVkLXR5cGVzLmh0bWwpIgogICAgICAgICAgfSwKICAgICAgICAgICJhd3NTZWNyZXRLZXkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBV1Mgc2VjcmV0IGtleVxuXG5EZWZpbmVzIHRoZSB0YXJnZXQgQVdTIHNlY3JldCBrZXkgVG8gbGVhcm4gbW9yZSBzZWUgW0FXUyBjcmVkZW50aWFsc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dlbmVyYWwvbGF0ZXN0L2dyL2F3cy1zZWMtY3JlZC10eXBlcy5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZXNwYWNlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQVdTIENsb3VkV2F0Y2ggbmFtZXNwYWNlXG5cbkRlZmluZXMgdGhlIHRhcmdldCBBV1MgQ2xvdWRXYXRjaCBuYW1lc3BhY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFtDbG91ZFdhdGNoIG5hbWVzcGFjZXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL2Nsb3Vkd2F0Y2hfY29uY2VwdHMuaHRtbCNOYW1lc3BhY2UpIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IHRydWUKfQ==</template>

        ```yaml
        # 🔟❎ 'run' AWS CloudWatch metric output configuration
        
        # Configure AWS CloudWatch metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/cloudwatch/
        
        # ============================== Dependencies =================================
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/cloudwatch
        
        # ============================ AWS CloudWatch Options =========================
        
        # Define multiple AWS CloudWatch metric outputs below
        
        cloudwatch:
        
            # -------------------------- Connection Options ---------------------------
        
            # 'awsAccessKeyId' defines the AWS access key (required)
            #  To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
          - awsAccessKeyId: $=TenXEnv.get("AWS_ACCESS_KEY_ID") # (❗ EnvVar REQUIRED)
        
            # 'awsSecretKey' defines the target AWS secret key (required)
            #  To learn more see https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
            awsSecretKey: $=TenXEnv.get("AWS_SECRET_ACCESS_KEY") # (❗ EnvVar REQUIRED)
        
            # 'namespace' defines the target AWS CloudWatch namespace (required)
            #  To learn more see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace
            namespace: $=TenXEnv.get("CW_NAMESPACE") # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # 'step' sets the interval to send metrics to CloudWatch (e.g., '1m').
            #  To learn more see https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        ```

    === ":simple-elastic: Elastic"

  
        #### elastic {.hidden-heading}
        Configure [ElasticSearch metrics outputs](/run/output/metric/elastic "Publish TenXSummary metrics to ElasticSearch") to publish TenXSummary metrics to ElasticSearch.  
  
        Below is the default configuration from: [elastic/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/elastic/config.yaml "elastic/config.yaml"){target="\_blank"} (<span class="tenx-tooltip" data-tooltip="The config file below contains required fields to activate this module, marked with &#10071;">** Required Fields*</span>).  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/elastic/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml14-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml14-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml14-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit ElasticSearch metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml14-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/elastic/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/elastic/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/elastic/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/elastic/config.yaml">$TENX_CONFIG/run/output/metric/elastic/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/elastic/config.yaml">./pipelines/run/output/metric/elastic/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgImVsYXN0aWMiIDogewogICAgICAidHlwZSIgOiAiYXJyYXkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAibmFtZUZpZWxkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgaWRlbnRpZnlpbmcgdGhlIG1ldHJpY1xuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCB3aG9zZSB2YWx1ZSBpZGVudGlmaWVzIGEgbWV0cmljIGNvdW50ZXIuIERlZmF1bHRzIHRvIHRoZSBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGZpZWxkIHdoaWNoIGhvbGRzIHRoZSB2YWx1ZShzKSBieSB3aGljaCBUZW5YT2JqZWN0cyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBjdXJyZW50IFRlblhTdW1tYXJ5IGluc3RhbmNlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciBjb3VudGVyc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMi1jb3VudGVyKSAoRGVmYXVsdDogW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSIKICAgICAgICAgIH0sCiAgICAgICAgICAiY291bnRlckZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZXMgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkcyB1c2VkIHRvIGluY3JlbWVudCB0aGUgbWV0cmljIGNvdW50ZXIgdmFsdWVcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgYnkgd2hvc2UgdmFsdWUgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgVGVuWFN1bW1hcnkgZmllbGRzIHRvIHVzZSBhcyBtZXRyaWMgdGFnIHZhbHVlc1xuXG5EZWZpbmVzIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBuYW1lcyB0byB1c2UgYXMgYHRhZ2AgdmFsdWVzLiBUYWdzIGFyZSBkaW1lbnNpb25zIHRoYXQgZW5hYmxlIHNsaWNpbmcgYSBwYXJ0aWN1bGFyIG5hbWVkIG1ldHJpYyB0byBkcmlsbCBkb3duIHRvIHJlYXNvbiBhYm91dCBpdHMgdmFsdWUuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIHRhZ3NdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzEtdGFncykiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGROYW1lcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gdXNlIGZvciBUZW5YU3VtbWFyeSBmaWVsZHMuXG5cbkRlZmluZXMgdGhlIGEgbGlzdCBvZiBjdXN0b20gbmFtZXMgdG8gZ2l2ZSBmaWVsZHMgd2hlbiByZXBvcnRpbmcgdGhlbS4gRm9ybWF0IGFzIGEgbGlzdCBvZiBuYW1lMSwgY3VzdG9tMSwgbmFtZTIsIGN1c3RvbTIuICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgY3VzdG9tIG5hbWUgb2YgJ015LUN1c3RvbS1GaWVsZCcgdG8gYW4gZXhpc3RpbmcgJ2ludHJpbnNpYy1maWVsZCc6IGBgYCB5YW1sIGVsYXN0aWM6ICAgdGFnRmllbGROYW1lczogICAgIC0gaW50cmluc2ljLWZpZWxkICAgICAtIE15LUN1c3RvbS1GaWVsZCIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJmaWx0ZXIiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIEphdmFTY3JpcHQgZXhwcmVzc2lvbiBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzICd0cnV0aHknIGFnYWluc3QgdG8gYmUgd3JpdHRlbiB0byB0aGlzIG91dHB1dFxuXG5TcGVjaWZpZXMgYSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCBhbiBUZW5YU3VtbWFyeSBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSB0byB3cml0ZSBpdHMgaW5zdGFuY2UvdGVtcGxhdGUgZmllbGQgdmFsdWVzIHRvIHRoZSB0YXJnZXQgY291bnRlci4gIEZvciBleGFtcGxlLCB0byBvbmx5IGVtaXQgVGVuWFN1bW1hcmllcyBwcm9kdWNlZCBieSB0aGUgJ215TWV0cmljJyBhZ2dyZWdhdG9yLCBzcGVjaWZ5OiBgYGAgeWFtbCBlbGFzdGljOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJzdGVwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byBvdXRwdXRcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXShodHRwczovL21pY3JvbWV0ZXIuaW8vZG9jcy9jb25jZXB0cyNyYXRlLWFnZ3JlZ2F0aW9uKSAoRGVmYXVsdDogMSBtaW51dGUuKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxIG1pbnV0ZS4iCiAgICAgICAgICB9LAogICAgICAgICAgImhvc3QiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJIb3N0IHRvIHNlbmQgbWV0cmljcyB0b1xuXG5TZXRzIHRoZSBob3N0IHRvIHNlbmQgbWV0cmljcyB0by4gKERlZmF1bHQ6IGh0dHA6Ly9sb2NhbGhvc3Q6OTIwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiaHR0cDovL2xvY2FsaG9zdDo5MjAwIgogICAgICAgICAgfSwKICAgICAgICAgICJhcGlLZXlDcmVkZW50aWFscyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkJhc2U2NC1lbmNvZGVkIGNyZWRlbnRpYWxzIHN0cmluZ1xuXG5TZXRzIGEgYmFzZTY0LWVuY29kZWQgY3JlZGVudGlhbHMgc3RyaW5nIFRvIGxlYXJuIG1vcmUgc2VlOiBbRWxhc3RpYyBjcmVkZW50aWFsc10oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ndWlkZS9lbi9lbGFzdGljc2VhcmNoL3JlZmVyZW5jZS9jdXJyZW50L3NlY3VyaXR5LWFwaS1jcmVhdGUtYXBpLWtleS5odG1sKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidXNlck5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJCYXNpYyBBdXRoZW50aWNhdGlvbiB1c2VybmFtZVxuXG5TZXRzIHRoZSB0aGUgQmFzaWMgQXV0aGVudGljYXRpb24gdXNlcm5hbWUuIElmICdlbGFzdGljQXBpS2V5Q3JlZGVudGlhbHMnIG5vdCBpcyBzZXQsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIgogICAgICAgICAgfSwKICAgICAgICAgICJwYXNzd29yZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkJhc2ljIEF1dGhlbnRpY2F0aW9uIHBhc3N3b3JkXG5cblNldHMgYSBCYXNpYyBBdXRoZW50aWNhdGlvbiBwYXNzd29yZC4gSWYgJ2VsYXN0aWNBcGlLZXlDcmVkZW50aWFscycgaXMgbm90IHNldCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCIKICAgICAgICAgIH0sCiAgICAgICAgICAiaW5kZXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW5kZXggbmFtZSB0byB3cml0ZSBtZXRyaWNzIHRvXG5cblNldHMgdGhlIGluZGV4IG5hbWUgdG8gd3JpdGUgbWV0cmljcyB0by4gKERlZmF1bHQ6IG1pY3JvbWV0ZXItbWV0cmljcykiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAibWljcm9tZXRlci1tZXRyaWNzIgogICAgICAgICAgfSwKICAgICAgICAgICJhdXRvQ3JlYXRlSW5kZXgiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2hldGhlciB0byBjcmVhdGUgdGhlIGluZGV4IGF1dG9tYXRpY2FsbHkgaWYgaXQgZG9lc24ndCBleGlzdFxuXG5TZXRzIHdoZXRoZXIgdG8gY3JlYXRlIHRoZSBpbmRleCBhdXRvbWF0aWNhbGx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicGlwZWxpbmUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW5nZXN0IHBpcGVsaW5lIG5hbWVcblxuVGhlIGluZ2VzdCBwaXBlbGluZSBuYW1lIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVGb3JtYXQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbmRleCBkYXRlIGZvcm1hdCB1c2VkIGZvciByb2xsaW5nIGluZGljZXNcblxuU2V0cyB0aGUgaW5kZXggZGF0ZSBmb3JtYXQgdXNlZCBmb3Igcm9sbGluZyBpbmRpY2VzLiBUaGlzIGlzIGFwcGVuZGVkIHRvIHRoZSBpbmRleCBuYW1lLCBzZXBhcmF0ZWQgYnkgJ2VsYXN0aWNJbmRleERhdGVTZXBhcmF0b3InLiAoRGVmYXVsdDogeXl5eS1NTSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAieXl5eS1NTSIKICAgICAgICAgIH0sCiAgICAgICAgICAidGltZXN0YW1wRmllbGROYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGRcblxuU2V0cyB0aGUgbmFtZSBvZiB0aGUgZWxhc3RpYyB0aW1lc3RhbXAgZmllbGQuIChEZWZhdWx0OiBAdGltZXN0YW1wKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJAdGltZXN0YW1wIgogICAgICAgICAgfSwKICAgICAgICAgICJpbmRleERhdGVTZXBhcmF0b3IiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydFxuXG5TZXRzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgaW5kZXggbmFtZSBhbmQgdGhlIGRhdGUgcGFydCAoRGVmYXVsdDogLSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiLSIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' ElasticSearch metric output configuration
        
        # Configure ElasticSearch metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/elastic/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/elastic
        
        # =============================== Elastic Options =============================
        
        # Define multiple Elastic metric outputs below
        
        elastic:
        
            # --------------------------- Connection Options --------------------------
        
            # 'host' sets the host to send metrics to (e.g., https://<deployment-name>.us-central1.gcp.cloud.es.io).
          - host: $=TenXEnv.get("ELASTICSEARCH_HOST") # (❗ EnvVar REQUIRED)
        
            # 'apiKeyCredentials' sets base64-encoded credentials string
            #  To learn more see: https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html
            apiKeyCredentials: $=TenXEnv.get("ELASTIC_API_KEY")  # (❗ EnvVar REQUIRED)
        
            # 'userName' sets the the Basic Authentication username if 'apiKeyCredentials' is not set.
            userName: $=TenXEnv.get("ELASTIC_USERNAME")  # (❗ EnvVar REQUIRED)
        
            # 'password' sets a Basic Authentication password.
            password: $=TenXEnv.get("ELASTIC_PASSWORD")  # (❗ EnvVar REQUIRED)
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the interval for sending metrics to Elastic (e.g., '1m').
            #  To learn more see: https://micrometer.io/docs/concepts#rate-aggregation
            step: 5s
        
            # ----------------------------- Index Options -----------------------------
        
            # 'elasticIndex' sets the index name to which to write metrics.
            index: tenx-metrics
        
            # 'autoCreateIndex' sets whether to create the index automatically if it doesn't exist.
            autoCreateIndex: true
        
            # 'indexDateFormat' sets the index date format used for rolling indices.
            #  This is appended to the index name, separated by 'elasticIndexDateSeparator'.
            indexDateFormat: 'yyyy-MM'
        
            # 'indexDateFormat' sets the separator between the index name and the date part
            indexDateSeparator: '-'
        
            # 'pipeline' sets the ingest pipeline name
            pipeline: null
        
            # 'timestampFieldName' sets the name of the elastic timestamp field.
            timestampFieldName: '@timestamp'
        ```

    === ":material-math-log: Log"

  
        #### log {.hidden-heading}
        Configure [Log4j2 metrics outputs](/run/output/metric/log "Publish TenXSummary metrics to a log4j2 appender in Micrometer 'simple' format") to publish TenXSummary metrics to a log4j2 appender in Micrometer 'simple' format.  
  
        Below is the default configuration from: [log/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log/config.yaml "log/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/output/metric/log/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml15-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml15-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml15-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Log4j2 metrics output Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml15-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/output/metric/log/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/output/metric/log/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/output/metric/log/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/output/metric/log/config.yaml">$TENX_CONFIG/run/output/metric/log/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/output/metric/log/config.yaml">./pipelines/run/output/metric/log/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNpbXBsZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJlbmFibGVkIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkVuYWJsZSB0aGlzIG91dHB1dFxuXG5FbmFibGUgb3IgZGlzYWJsZSB0aGlzIG91dHB1dC4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJuYW1lRmllbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBpZGVudGlmeWluZyB0aGUgbWV0cmljXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIHdob3NlIHZhbHVlIGlkZW50aWZpZXMgYSBtZXRyaWMgY291bnRlci4gRGVmYXVsdHMgdG8gdGhlIFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykgZmllbGQgd2hpY2ggaG9sZHMgdGhlIHZhbHVlKHMpIGJ5IHdoaWNoIFRlblhPYmplY3RzIGFyZSBncm91cGVkIGludG8gdGhlIGN1cnJlbnQgVGVuWFN1bW1hcnkgaW5zdGFuY2UuIFRvIGxlYXJuIG1vcmUgc2VlIFttaWNyb21ldGVyIGNvdW50ZXJzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMyLWNvdW50ZXIpIChEZWZhdWx0OiBbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3VtbWFyeVZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIgogICAgICAgICAgfSwKICAgICAgICAgICJjb3VudGVyRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lcyBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGRzIHVzZWQgdG8gaW5jcmVtZW50IHRoZSBtZXRyaWMgY291bnRlciB2YWx1ZVxuXG5EZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZCBieSB3aG9zZSB2YWx1ZSB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBUZW5YU3VtbWFyeSBmaWVsZHMgdG8gdXNlIGFzIG1ldHJpYyB0YWcgdmFsdWVzXG5cbkRlZmluZXMgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIG5hbWVzIHRvIHVzZSBhcyBgdGFnYCB2YWx1ZXMuIFRhZ3MgYXJlIGRpbWVuc2lvbnMgdGhhdCBlbmFibGUgc2xpY2luZyBhIHBhcnRpY3VsYXIgbmFtZWQgbWV0cmljIHRvIGRyaWxsIGRvd24gdG8gcmVhc29uIGFib3V0IGl0cyB2YWx1ZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgdGFnc10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL21pY3JvbWV0ZXIjMS10YWdzKSIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ0YWdGaWVsZE5hbWVzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGN1c3RvbSBuYW1lcyB0byB1c2UgZm9yIFRlblhTdW1tYXJ5IGZpZWxkcy5cblxuRGVmaW5lcyB0aGUgYSBsaXN0IG9mIGN1c3RvbSBuYW1lcyB0byBnaXZlIGZpZWxkcyB3aGVuIHJlcG9ydGluZyB0aGVtLiBGb3JtYXQgYXMgYSBsaXN0IG9mIG5hbWUxLCBjdXN0b20xLCBuYW1lMiwgY3VzdG9tMi4gIEZvciBleGFtcGxlLCB0byBzZXQgYSBjdXN0b20gbmFtZSBvZiAnTXktQ3VzdG9tLUZpZWxkJyB0byBhbiBleGlzdGluZyAnaW50cmluc2ljLWZpZWxkJzogYGBgIHlhbWwgc2ltcGxlOiAgIHRhZ0ZpZWxkTmFtZXM6ICAgICAtIGludHJpbnNpYy1maWVsZCAgICAgLSBNeS1DdXN0b20tRmllbGQiLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAiZmlsdGVyIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQSBKYXZhU2NyaXB0IGV4cHJlc3Npb24gYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIHdyaXR0ZW4gdG8gdGhpcyBvdXRwdXRcblxuU3BlY2lmaWVzIGEgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgYW4gVGVuWFN1bW1hcnkgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgdG8gd3JpdGUgaXRzIGluc3RhbmNlL3RlbXBsYXRlIGZpZWxkIHZhbHVlcyB0byB0aGUgdGFyZ2V0IGNvdW50ZXIuICBGb3IgZXhhbXBsZSwgdG8gb25seSBlbWl0IFRlblhTdW1tYXJpZXMgcHJvZHVjZWQgYnkgdGhlICdteU1ldHJpYycgYWdncmVnYXRvciwgc3BlY2lmeTogYGBgIHlhbWwgc2ltcGxlOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdW5pcXVlIG1ldHJpYyBjb21iaW5hdGlvbnMgYWxsb3dlZFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyAoY2FyZGluYWxpdHkpIGFsbG93ZWQgZm9yIHRoaXMgb3V0cHV0LiBXaGVuIGV4Y2VlZGVkLCBtZXRyaWNzIHdpbGwgYmUgZHJvcHBlZCB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYXJkaW5hbGl0eS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogNTAwKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IDUwMAogICAgICAgICAgfSwKICAgICAgICAgICJzdGVwIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGhlIGludGVydmFsIGF0IHdoaWNoIHRvIHB1Ymxpc2ggbWV0cmljcyB0byBvdXRwdXRcblxuU2V0cyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIHRoZSB0aW1lLXNlcmllcyBkZXN0aW5hdGlvbiAoZS5nLiwgJzFtJykuIFRvIGxlYXJuIG1vcmUgc2VlIFtyYXRlLWFnZ3JlZ2F0aW9uXShodHRwczovL21pY3JvbWV0ZXIuaW8vZG9jcy9jb25jZXB0cyNyYXRlLWFnZ3JlZ2F0aW9uKSAoRGVmYXVsdDogMW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiMW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAibG9nZ2VyTmFtZSIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgbG9nNGoyIGxvZ2dlciB0byB3aGljaCByZWdpc3RyeSBtZXRyaWMgZGF0YSBpcyBwZXJpb2RpY2FsbHkgbG9nZ2VkXG5cblNldHMgdGhlIGxvZzRqMiBsb2dnZXIgdG8gd2hpY2ggcmVnaXN0cnkgbWV0cmljIGRhdGEgaXMgcGVyaW9kaWNhbGx5IGxvZ2dlZCBtZXRyaWMgYXJlIGxvZ2dlZCBhcyAnSU5GTycgbWVzc2FnZXMgdXNpbmcgdGhlIE1pY3JvbWV0ZXIgZGVmYXVsdCAnc2ltcGxlJyBmb3JtYXQuIFRvIGxlYXJuIG1vcmUgc2VlOiBbU2ltcGxlTWV0ZXJSZWdpc3RyeV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3JvbWV0ZXItbWV0cmljcy9taWNyb21ldGVyL2Jsb2IvbWFpbi9taWNyb21ldGVyLWNvcmUvc3JjL21haW4vamF2YS9pby9taWNyb21ldGVyL2NvcmUvaW5zdHJ1bWVudC9zaW1wbGUvU2ltcGxlTWV0ZXJSZWdpc3RyeS5qYXZhKSIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibG9nZ2VyTmFtZSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiB0cnVlCn0=</template>

        ```yaml
        # 🔟❎ 'run' Log4j2 metric output configuration
        
        # Configure log4j2 metric counter outputs.
        # To learn more see https://doc.log10x.com/run/output/metric/log/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Dependencies ================================
        
        include: run/modules/output/metric/log
        
        # ============================== Log4j2 Options ===============================
        
        # Define multiple log4j2 metric outputs below
        simple:
        
            # 'loggerName' sets the log4j2 logger to which registry metric data is periodically logged
            #  metric are logged a 'INFO' messages using micrometer's default 'simple' format.
            #  To learn more see: https://github.com/micrometer-metrics/micrometer/blob/main/micrometer-core/src/main/java/io/micrometer/core/instrument/simple/SimpleMeterRegistry.java
          - loggerName: consoleOut
        
            # ---------------------------- Counter Options ----------------------------
        
            # 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment. 
            #  The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
            #  To learn more see https://doc.log10x.com/run/aggregate
            nameField: inputName
        
            # 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
            #  To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
            counterFields:
              - summaryVolume
              - summaryBytes
              - summaryTotals
        
            # 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
            #  Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
            tagFields:
              - $=yield TenXEnv.get("enrichmentFields")
        
            # 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
            #  Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
            tagFieldNames:
              - $=yield TenXEnv.get("metricFieldNames")
        
            # 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
            #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
            filter: isSummary
        
            # ---------------------------- Publish Options ----------------------------
        
            # 'step' sets the frequency in which metrics are logged to 'loggerName' in
            # ISO-8601 format. To learn more see:
            # https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
            step: PT1S
        ```

## :material-tune: Advanced Config Files

To configure advanced options (optional) for the Reporter app, [:material-cog: Edit](https://doc.log10x.com/config/app/#module-config "Learn how to edit app and module configurations") these files:
??? tenx-bootstrap "Bootstrap"

    <a id="bootstrap"></a>
    ### Bootstrap {.hidden-heading}

    Configure  the [Pipeline Bootstrapper](/run/bootstrap "Authenticate the log10x account and launch a target pipeline") to authenticate the log10x account and launch a target pipeline.

    Below is the default configuration from: [bootstrap/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/bootstrap/config.yaml "bootstrap/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/bootstrap/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml16-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml16-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml16-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Pipeline Bootstrapper Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml16-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/bootstrap/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/bootstrap/config.yaml"
                                data-copy-win="C:\log10x\configs/run/bootstrap/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/bootstrap/config.yaml">$TENX_CONFIG/run/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/bootstrap/config.yaml">./pipelines/run/bootstrap/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBsaWNlbnNlS2V5OiA8bXktbGljZW5zZS1qd3Q+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgV2l0aG91dCBhIGxpY2Vuc2UgdGhlIGVuZ2luZSBydW5zIG9uIHRoZSBidWlsdC1pbiAzMC1kYXkgZXZhbHVhdGlvbiBsaWNlbnNlLiBTZWUgW2xpY2Vuc2luZ10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9tYW5hZ2UvbGljZW5zZS8pIGZvciBwcm9kdWN0aW9uIGxpY2Vuc2VzLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2U6IG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSBjYWxscyB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cCwgYW5kIG9ubHkgd2hlbiBhIHNlcnZpY2UgZW5kcG9pbnQgaXMgYWN0dWFsbHkgY29uZmlndXJlZDsgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBuYW1lcyBub25lLCBzbyBhbiB1bmNvbmZpZ3VyZWQgZW5naW5lIG1ha2VzIG5vIGNhbGwgZWl0aGVyIHdheS4gVGhlIGNhbGwgaXMgYmVzdC1lZmZvcnQgZW5yaWNobWVudDogdGhlIGxvY2FsIHZlcmlmaWNhdGlvbiBpcyB0aGUgZ2F0ZSwgYW5kIGEgc2VydmljZSB0aGF0IGNhbm5vdCBiZSByZWFjaGVkLCBvciB0aGF0IGFuc3dlcnMgd2l0aCBhbiBlcnJvciwgcHJvZHVjZXMgYSB3YXJuaW5nIGFuZCB0aGUgZW5naW5lIHJ1bnMuICBBaXJnYXBwZWQgbW9kZSBpcyBob25vcmVkIGZvciBldmVyeSBsaWNlbnNlIHR5cGUuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJtZXRyaWNFbmRwb2ludCIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBzZXJ2aWNlIFByb21ldGhldXMgbWV0cmljcyBlbmRwb2ludFxuXG5TcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIFByb21ldGhldXMgcmVtb3RlIHdyaXRlIGVuZHBvaW50IHRvIHdyaXRlIHBpcGVsaW5lIHVzYWdlIGFuZCBoZWFsdGggbWV0cmljcy4gIFVuc2V0IGJ5IGRlZmF1bHQ6IGFuIGVuZ2luZSB3aXRoIG5vIG1ldHJpYyBlbmRwb2ludCBjb25maWd1cmVkIGNvbGxlY3RzIG1ldHJpY3MgbG9jYWxseSBhbmQgc2VuZHMgdGhlbSBub3doZXJlLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIgogICAgfSwKICAgICJydW50aW1lIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOYW1lIHRvIHJlcG9ydCB0byB0aGUgMTB4IHNlcnZpY2UgZW5kcG9pbnQgZm9yIHRoaXMgcnVudGltZSBpbnN0YW5jZVxuXG5TcGVjaWZpZXMgYSBsb2dpY2FsIG5hbWUgdXNlZCBhcyBhIFt0YWcgdmFsdWVdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzQtbWV0ZXJzKSBmb3IgcGlwZWxpbmUgbWV0cmljcy4gVGhpcyB2YWx1ZSBpZGVudGlmaWVzIGluc3RhbmNlcyBvZiB0aGUgMTB4IHJ1bi9jb21waWxlIHBpcGVsaW5lcyB3aGVuIHJlcG9ydGluZyB0byB0aGUgMTB4IHNlcnZpY2UuIEZvciBleGFtcGxlLCBmb3IgYSAxMHggW1JlY2VpdmVyXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwcHMvcmVjZWl2ZXIvKSB3aXRoIG9wdGltaXphdGlvbiBlbmFibGVkIGZvciBGbHVlbnQgQml0IGZvcndhcmRlcnMgY29sbGVjdGluZyBldmVudHMgZnJvbSBhIGBicm9rZXJgIHVzZXItYXBwLCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG86IGByZWNlaXZlX2ZsdWVudGJpdF9icm9rZXJgIgogICAgICAgIH0sCiAgICAgICAgImF0dHJpYnV0ZXMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgYXR0cmlidXRlcyB0byBhZGQgdG8gYWxsIG1ldHJpY3MgcmVwb3J0aW5nXG5cblNwZWNpZmllcyBhIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRoZSBmb3JtYXQgYGtleTp2YWx1ZWAgdG8gYmUgYWRkZWQgYXMgdGFncyB0byBwaXBlbGluZSBtZXRyaWNzIHJlcG9ydGVkIHRvIHRoZSAxMHggc2VydmljZS4gVGhlc2UgdGFncyBlbmFibGUgZmluZXItZ3JhaW5lZCBmaWx0ZXJpbmcgYW5kIGFuYWx5c2lzIGluIG1vbml0b3Jpbmcgc3lzdGVtcyBsaWtlIFByb21ldGhldXMuIE11bHRpcGxlIGF0dHJpYnV0ZXMgY2FuIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGEgc2VtaWNvbG9uIChgO2ApLCBlLmcuLCBga2V5MTp2YWwxO2tleTI6dmFsMmAuICBJZiBhIGtleSBkb2VzIG5vdCBzdGFydCB3aXRoIHRlbnhfLCB0aGUgcHJlZml4IHRlbnhfIGlzIGF1dG9tYXRpY2FsbHkgcHJlcGVuZGVkIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBpbiB0YWcgbmFtaW5nIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgYSBwcm92aWRlZCBhdHRyaWJ1dGUgYXBwOm15LWFwcCB3aWxsIGJlIHJlcG9ydGVkIGFzIHRlbnhfYXBwOm15LWFwcCAgYGBgIHlhbWwgICBydW50aW1lQXR0cmlidXRlczogICAgIC0gYXBwOnJlcG9ydGVyICAgICAtIGVudjplZGdlIGBgYCIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJpbmNsdWRlUGF0aHMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBpcGVsaW5lIGluY2x1ZGUgZm9sZGVyc1xuXG5TcGVjaWZpZXMgZm9sZGVycyBvbiBkaXNrIGZvciByZXNvbGluZyByZWxhdGl2ZSByZWZlcmVuY2VzIHdpdGhpbiBbaW5jbHVkZSBkaXJlY3RpdmVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbmZpZy95YW1sLyNpbmNsdWRlLWRpcmVjdGl2ZXMpLiAoRGVmYXVsdDogW1wid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzXCJdKSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgfSwKICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICJ3b3JraW5nIGRpcmVjdG9yeSBvZiBjdXJyZW50IHByb2Nlc3MiCiAgICAgIF0KICAgIH0sCiAgICAiamFyRmlsZXMiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphciBmaWxlcyB0byBsb2FkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgLmphciBmaWxlcyB0byBsb2FkIGludG8gdGhlIGhvc3QgSlZNIGZvciB1c2UgYnkgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2NvbXBpbGUvKSwgW2lucHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9pbnB1dC8pIGFuZCBbb3V0cHV0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9vdXRwdXQvKSBBUEkgZXh0ZW5zaW9ucy4gICEhISBub3RlIFwiXCIgICAgICBUaGlzIGFyZ3VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIFtSdW50aW1lXShodHRwczovL2RvYy5sb2cxMHguY29tL2VuZ2luZS9mbGF2b3JzLyNydW50aW1lKSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ run bootstrap configuration
    
    # This config file specifies bootstrap options for the run pipeline.
    # To learn more see https://doc.log10x.com/run/bootstrap
    
    # To learn more see https://doc.log10x.com/config/
    
    tenx: run
    
    # =============================== Launch Settings ==============================
    
    # 'licenseKey' specifies a signed JWT license token used for authenticating against the 10x service
    licenseKey: $=TenXEnv.get("TENX_LICENSE_KEY", "NO-LICENSE")
    
    # 'licenseFile' specifies a path to a file containing the signed JWT license token.
    # Preferred over 'licenseKey' on production hosts: the token does not appear in 'ps' output.
    licenseFile: $=TenXEnv.get("TENX_LICENSE_FILE")
    
    # 'airgapped' suppresses every call to the 10x SaaS gateway: the license is verified locally against the embedded
    # public key, and ALL outbound calls to the 10x SaaS gateway are suppressed (no DNS, no TCP).
    # Use for deployments where security review forbids vendor phone-home.
    airgapped: $=TenXEnv.get("TENX_AIRGAPPED", "false")
    
    # 'includePaths' specifies folders on disk for resolving relative config file/folder references in addition to the working folder
    includePaths: []
    
    # 'quiet' disables printing version information to the console.
    # quiet: true
    
    # 'jarFiles' specifies .jar files to dynamically load for use by compile, input and output API extensions.
    jarFiles: []
    
    # 'metricEndpoint' specifies a Prometheus remote-write endpoint for pipeline usage and health metrics.
    # Unset by default. The endpoint is a self-hosted or vendor Prometheus-compatible store, never a 10x
    # service, and is where the MCP reads engine state back from to tune policy such as regulator rates.
    # metricEndpoint: https://prometheus.example.com/api/v1/write
    
    # 'disabledArgs' specifies a list of launch arguments that are disallowed from either command line or user config files.
    disabledArgs: []
    
    # 'debugEnvVars' list environment variables to debug
    debugEnvVars: []
    ```

??? tenx-githubsync "Github Sync"

    <a id="githubSync"></a>
    ### Github Sync {.hidden-heading}



    Below is the default configuration from: [gitops/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml "gitops/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/gitops/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml17-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml17-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml17-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml17-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/gitops/config.yaml"
                                data-copy-nix="/etc/log10x/config/gitops/config.yaml"
                                data-copy-win="C:\log10x\configs/gitops/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/gitops/config.yaml">$TENX_CONFIG/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/gitops/config.yaml">./pipelines/gitops/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICIkc2NoZW1hIjogImh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyIsCiAgInRpdGxlIjogIkdpdE9wcyBDb25maWd1cmF0aW9uIiwKICAiZGVzY3JpcHRpb24iOiAiQ29uZmlndXJhdGlvbiBmb3IgcHVsbGluZyBzeW1ib2wsIGNvbmZpZyBhbmQgbG9va3VwIGZpbGVzIGZyb20gYSByZW1vdGUgc291cmNlIChHaXRIdWIgcmVwbyBvciBLdWJlcm5ldGVzIENvbmZpZ01hcCkgdG8gZW5hYmxlIGNlbnRyYWxpemVkIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCIsCiAgInR5cGUiOiAib2JqZWN0IiwKICAicHJvcGVydGllcyI6IHsKICAgICJ0ZW54IjogewogICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHRhcmdldCAxMHggcGlwZWxpbmUgdG8gcnVuIChlLmcuLCBydW4sIGNvbXBpbGUpIgogICAgfSwKICAgICJpbmNsdWRlIjogewogICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJMaXN0IG9mIGluY2x1ZGUgc291cmNlcyIsCiAgICAgICJpdGVtcyI6IHsKICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICJvbmVPZiI6IFsKICAgICAgICAgIHsKICAgICAgICAgICAgInByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAiY29uc3QiOiAiZ2l0aHViIiwKICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgc291cmNlIHR5cGUgZm9yIHRoaXMgaW5jbHVkZSIKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICJvcHRpb25zIjogewogICAgICAgICAgICAgICAgIiRyZWYiOiAiIy9kZWZpbml0aW9ucy9QaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgInNvdXJjZSIsCiAgICAgICAgICAgICAgIm9wdGlvbnMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgImNvbnN0IjogImt1YmVybmV0ZXMiLAogICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBzb3VyY2UgdHlwZSBmb3IgdGhpcyBpbmNsdWRlIgogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgIm9wdGlvbnMiOiB7CiAgICAgICAgICAgICAgICAiJHJlZiI6ICIjL2RlZmluaXRpb25zL1BpcGVsaW5lTGF1bmNoS3ViZXJuZXRlc09wdGlvbnMiCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZWQiOiBbCiAgICAgICAgICAgICAgInNvdXJjZSIsCiAgICAgICAgICAgICAgIm9wdGlvbnMiCiAgICAgICAgICAgIF0KICAgICAgICAgIH0KICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJkZWZpbml0aW9ucyI6IHsKICAgICJQaXBlbGluZUxhdW5jaEdpdEh1Yk9wdGlvbnMiOiB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJHaXRIdWIgcHVsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMiLAogICAgICAicHJvcGVydGllcyI6IHsKICAgICAgICAiZW5hYmxlZCI6IHsKICAgICAgICAgICJ0eXBlIjogImJvb2xlYW4iLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRyb2xzIHdoZXRoZXIgdG8gZW5hYmxlIHRoaXMgcHVsbCBjb25maWciLAogICAgICAgICAgImRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgInRva2VuIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBY2Nlc3MgdG9rZW4gZm9yIGFjY2Vzc2luZyB0aGUgR2l0SHViIHJlcG8uIFNlZSBodHRwczovL2RvY3MuZ2l0aHViLmNvbS9lbi9hdXRoZW50aWNhdGlvbi9rZWVwaW5nLXlvdXItYWNjb3VudC1hbmQtZGF0YS1zZWN1cmUvbWFuYWdpbmcteW91ci1wZXJzb25hbC1hY2Nlc3MtdG9rZW5zIgogICAgICAgIH0sCiAgICAgICAgInJlcG8iOiB7CiAgICAgICAgICAidHlwZSI6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgR2l0SHViIHVzZXIvcmVwbyBmcm9tIHdoaWNoIHRvIHB1bGwgKGUuZy4sICdvd25lci9yZXBvJykiCiAgICAgICAgfSwKICAgICAgICAiYnJhbmNoIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQnJhbmNoIG9uIHJlcG8uIElmIG51bGwsIHVzZXMgdGhlIHJlcG8ncyBkZWZhdWx0IGJyYW5jaCIsCiAgICAgICAgICAiZGVmYXVsdCI6IG51bGwKICAgICAgICB9LAogICAgICAgICJwYXRocyI6IHsKICAgICAgICAgICJ0eXBlIjogImFycmF5IiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHbG9iIHBhdHRlcm5zIHdpdGhpbiAncmVwbycgdG8gcHVsbCBhbmQgZXh0cmFjdCB0byBhIHRlbXAgZm9sZGVyIiwKICAgICAgICAgICJpdGVtcyI6IHsKICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIgogICAgICAgICAgfSwKICAgICAgICAgICJleGFtcGxlcyI6IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICJjb25maWcvKi55YW1sIiwKICAgICAgICAgICAgICAic3ltYm9scy8qLjEweC50YXIiLAogICAgICAgICAgICAgICJsb29rdXBzLyouY3N2IiwKICAgICAgICAgICAgICAic2NyaXB0cy8qLmpzIgogICAgICAgICAgICBdCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAic3luY0ludGVydmFsIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW50ZXJ2YWwgdG8gY2hlY2sgdGhlIHJlbW90ZSBicmFuY2ggZm9yIHVwZGF0ZXMgKGUuZy4sICc1bWluJykuIFNldCB0byBudWxsIHRvIGRpc2FibGUgc3luYyIsCiAgICAgICAgICAiZGVmYXVsdCI6IG51bGwsCiAgICAgICAgICAiZXhhbXBsZXMiOiBbCiAgICAgICAgICAgICI1bWluIiwKICAgICAgICAgICAgIjFoIiwKICAgICAgICAgICAgIjMwcyIKICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJkZXN0aW5hdGlvbiI6IHsKICAgICAgICAgICJ0eXBlIjogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN0YWJsZSBhYnNvbHV0ZSBmb2xkZXIgdGhlIHB1bGxlZCBjb250ZW50IGlzIG1pcnJvcmVkIGludG8gYWZ0ZXIgdGhlIGluaXRpYWwgcHVsbCBhbmQgYWZ0ZXIgZXZlcnkgc3luYyAoYXRvbWljIHBlci1maWxlIHdyaXRlczsgbXRpbWUgcmVmcmVzaGVkIGV2ZXJ5IHN5bmMpLiBMb29rdXAgb3B0aW9ucyBzdWNoIGFzIHJhdGVSZWNlaXZlckxvb2t1cEZpbGUgbXVzdCB0YXJnZXQgdGhpcyBmb2xkZXIsIG5vdCB0aGUgc2hhLWFkZHJlc3NlZCBwdWxsIGNhY2hlLiBVbnNldCBkaXNhYmxlcyB0aGUgbWlycm9yLiBSZXF1aXJlcyBlbmdpbmUgPj0gMS4xLjY5LiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJyZXF1aXJlZCI6IFsKICAgICAgICAiZW5hYmxlZCIsCiAgICAgICAgInJlcG8iCiAgICAgIF0sCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyI6IGZhbHNlCiAgICB9LAogICAgIlBpcGVsaW5lTGF1bmNoS3ViZXJuZXRlc09wdGlvbnMiOiB7CiAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJLdWJlcm5ldGVzIENvbmZpZ01hcCBwdWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsCiAgICAgICJwcm9wZXJ0aWVzIjogewogICAgICAgICJlbmFibGVkIjogewogICAgICAgICAgInR5cGUiOiBbCiAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgIF0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29udHJvbHMgd2hldGhlciB0byBlbmFibGUgdGhpcyBwdWxsIGNvbmZpZyAoSzhTX0VOQUJMRUQpIgogICAgICAgIH0sCiAgICAgICAgIm5hbWVzcGFjZSI6IHsKICAgICAgICAgICJ0eXBlIjogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbmZpZ01hcCBuYW1lc3BhY2U7IGRlZmF1bHRzIHRvIHRoZSBwb2QncyBvd24gbmFtZXNwYWNlIGZyb20gdGhlIG1vdW50ZWQgc2VydmljZS1hY2NvdW50IHZvbHVtZSAoSzhTX05BTUVTUEFDRSkiCiAgICAgICAgfSwKICAgICAgICAiY29uZmlnTWFwIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb25maWdNYXAgbmFtZSB0byBwdWxsIGZyb20gKEs4U19DT05GSUdNQVA7IGRlZmF1bHQgbG9nMTB4LWFjdGlvbi1pbnRlbnQpIgogICAgICAgIH0sCiAgICAgICAgImtleXMiOiB7CiAgICAgICAgICAidHlwZSI6ICJhcnJheSIsCiAgICAgICAgICAiaXRlbXMiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiR2xvYiBwYXR0ZXJucyBvdmVyIENvbmZpZ01hcCBkYXRhICsgYmluYXJ5RGF0YSBrZXlzOyBvbmx5IG1hdGNoaW5nIGtleXMgYXJlIHdyaXR0ZW4gdG8gZGlzayIKICAgICAgICB9LAogICAgICAgICJzeW5jSW50ZXJ2YWwiOiB7CiAgICAgICAgICAidHlwZSI6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQb2xsIGludGVydmFsLCBmbG9vcmVkIHRvIDYwcyBieSB0aGUgc2NoZWR1bGVyIChLOFNfU1lOQ19JTlRFUlZBTCkiCiAgICAgICAgfSwKICAgICAgICAiYXBpU2VydmVyIjogewogICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJrdWJlLWFwaXNlcnZlciBVUkw7IGRlZmF1bHQgaXMgdGhlIGluLWNsdXN0ZXIgc2VydmljZSBVUkwgKEs4U19BUElfU0VSVkVSKSIKICAgICAgICB9LAogICAgICAgICJ0b2tlblBhdGgiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdGggdG8gdGhlIHByb2plY3RlZCBzZXJ2aWNlLWFjY291bnQgdG9rZW4gKEs4U19UT0tFTl9QQVRIKSIKICAgICAgICB9LAogICAgICAgICJjYVBhdGgiOiB7CiAgICAgICAgICAidHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhdGggdG8gdGhlIHNlcnZpY2UtYWNjb3VudCBDQSBjZXJ0IChLOFNfQ0FfUEFUSCkiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9</template>

    ```yaml
    # 🔟❎ GitOps configuration
    
    # This config file pulls symbol, config and lookup files from a remote repo to
    # enable centralized configuration management via GitHub.
    
    # To learn more see https://doc.log10x.com/config/github
    
    # The target 10x pipeline to run (e.g., run, compile) is specified in the config files pulled from the repo
    tenx: any
    
    include:
    
      - source: github
    
        options:
          # Env-var overrides: GH_ENABLED, GH_REPO, GH_BRANCH, GH_PATH, GH_SYNC_INTERVAL.
          # Defaults below are for the compact-receiver GitOps reload test:
          # they pull test/compact-lookup.csv from talwgx/test every 30s.
          # For a real deployment, set GH_ENABLED=false OR override the repo.
          enabled: $=TenXEnv.get("GH_ENABLED", false)
    
          # 'token' specifies an access token for accessing the Github repo.
          token: $=TenXEnv.get("GH_TOKEN")
    
          # 'repo' specifies the GitHub user/repo from which to pull
          repo: $=TenXEnv.get("GH_REPO", "talwgx/test")
    
          # 'branch' on 'repo' (if null, uses default repo default branch)
          branch: $=TenXEnv.get("GH_BRANCH", "main")
    
          # 'paths' specifies Glob patterns within 'repo' to pull and extract to a temp folder.
          # (List items don't honor $= expressions; hardcoded glob. Override repo+branch
          # to target a different repo layout. Compact lookup must live as test/*.csv.)
          paths:
            - test/*.csv
    
          # 'syncInterval' specifies an interval by which check to check the remote branch for updates (null to disable).
          # This interval works in conjunction with: https://doc.log10x.com/run/reload
          syncInterval: $=TenXEnv.get("GH_SYNC_INTERVAL", "30s")
    
          # 'destination' mirrors pulled content into a stable absolute folder,
          # after the initial pull and after every sync (atomic per-file writes,
          # mtime refreshed every sync). The pull cache itself lives under a
          # sha-addressed temp folder whose path changes per commit -- options
          # like rateReceiverLookupFile must point HERE, not into the cache:
          #   GH_DEST=/tmp/policy  +  rateReceiverLookupFile=/tmp/policy/test/mutes.csv
          # The folder must be writable by the engine user: the shipped container
          # runs as uid 1000, so a root-level path like /policy fails the launch.
          # Unset = no mirror (prior behavior). Requires engine >= 1.1.69.
          destination: $=TenXEnv.get("GH_DEST")
    
    # ---------------------------------------------------------------------------
    # Alternative source: kubernetes ConfigMap
    #
    # Pulls regulator CSV / lookup files from a kube-apiserver ConfigMap. Same
    # polling cadence + atomic write semantics as the github lane, but the
    # source-of-truth lives in the cluster rather than a remote repo. Useful
    # for air-gapped deployments and for tooling that already writes intent
    # (e.g. log10x-mcp configure_engine) directly into kubernetes.
    #
    # DISABLED unless K8S_ENABLED=true on the pod. The MCP install wizard sets
    # it (with a seeded ConfigMap + RBAC read grant), so a wizard-installed
    # receiver picks up caps.csv / actions.csv / config-generation.csv without
    # hand-wiring. The seed matters: the first pull runs on the launch thread
    # and a MISSING ConfigMap aborts startup; the lookup loader also refuses a
    # rows-less CSV, so the seeded files each carry one no-op `tenx-seed` row.
    #
    # Auth uses the pod's mounted service-account token (re-read each poll so
    # BoundServiceAccountTokenVolume rotation is honored). CA cert is re-loaded
    # on mtime change. Atomic file replacement via temp + Files.move.
    
      - source: kubernetes
    
        options:
          # Env-var overrides: K8S_ENABLED, K8S_NAMESPACE, K8S_CONFIGMAP,
          # K8S_SYNC_INTERVAL, K8S_API_SERVER, K8S_TOKEN_PATH, K8S_CA_PATH.
          enabled: $=TenXEnv.get("K8S_ENABLED", false)
    
          # 'namespace' defaults to the pod's namespace (read from the mounted
          # service-account token volume). Override for cross-namespace pulls.
          namespace: $=TenXEnv.get("K8S_NAMESPACE")
    
          # 'configMap' is the ConfigMap name to pull from.
          configMap: $=TenXEnv.get("K8S_CONFIGMAP", "log10x-action-intent")
    
          # 'keys' is a list of glob patterns over the ConfigMap data + binaryData
          # keys. Only keys matching at least one glob are written to disk.
          keys:
            - "*.csv"
            - "*.json"
    
          # 'syncInterval', floored to 60s by the scheduler (mirrors github lane).
          syncInterval: $=TenXEnv.get("K8S_SYNC_INTERVAL", "30s")
    
          # 'apiServer' default is the in-cluster URL. Override for out-of-cluster
          # smoke tests (e.g., https://127.0.0.1:6443 via kubectl proxy).
          apiServer: $=TenXEnv.get("K8S_API_SERVER", "https://kubernetes.default.svc")
    
          # Paths to the projected service-account token + CA cert. Defaults are
          # the standard in-cluster mount points; override only for non-standard
          # service-account volume layouts.
          tokenPath: $=TenXEnv.get("K8S_TOKEN_PATH", "/var/run/secrets/kubernetes.io/serviceaccount/token")
          caPath: $=TenXEnv.get("K8S_CA_PATH", "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")
    ```

??? tenx-symbols "Symbols"

    <a id="symbols"></a>
    ### Symbols {.hidden-heading}



    Below is the default configuration from: [symbol/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/symbol/config.yaml "symbol/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/symbol/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml18-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml18-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml18-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml18-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/symbol/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/symbol/config.yaml"
                                data-copy-win="C:\log10x\configs/run/symbol/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/symbol/config.yaml">$TENX_CONFIG/run/symbol/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/symbol/config.yaml">./pipelines/run/symbol/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSW5wdXQgc3ltYm9sIGZpbGVzIGFuZCBmb2xkZXJzXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucyB1c2VkIHRvIGxvYWQgc3ltYm9scyBmaWxlcyAoLmpzb24sIC5jc3YpIGludG8gdGhlIHBpcGVsaW5lIHVwb24gaW5pdGlhbGl6YXRpb24uIFppcCBhcmNoaXZlcyBhcmUgZXh0cmFjdGVkIHRvIHRoZSB0ZW1wIGZvbGRlciBhbmQgZGVsZXRlZCBvbiBleGl0LiAoRGVmYXVsdDogW1wicGF0aChcXFwic2FtcGxlL3N5bWJvbHNcXFwiKVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJwYXRoKFwic2FtcGxlL3N5bWJvbHNcIikiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAibGl0ZXJhbHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlN5bWJvbCBsaXRlcmFsIHZhbHVlc1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGxpdGVyYWwgc3ltYm9sIHZhbHVlcyB0byBhZGQgdG8gdGhlIGhvc3QgcGlwZWxpbmUncyBzeW1ib2wgY29sbGVjdGlvbi4gVGhpcyBvcHRpb24gZW5hYmxlcyBkZWNsYXJpbmcgc3ltYm9sIHZhbHVlcyBkaXJlY3RseSB0aHJvdWdoIHRoZSBjb21tYW5kIGxpbmUgb3IgdmlhIFlBTUwvSlNPTiBjb25maWd1cmF0aW9uLiIsCiAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJtYXhTeW1ib2xVbml0c1BlclRva2VuIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJudW1iZXIiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTnVtYmVyIG9mIHN5bWJvbCB1bml0cyB0byByZXRyaWV2ZSB3aGVuIHNlYXJjaGluZyBmb3IgdGhlIG9yaWdpbiBvZiBhbiBUZW5YVGVtcGxhdGUgc3ltYm9sIHNlcXVlbmNlXG5cbkNvbnRyb2xzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzeW1ib2wgdW5pdHMgdG8gbG9hZCBmcm9tIHRoZSBwaXBlbGluZSdzIHN5bWJvbCBsaWJyYXJ5IHdoZW4gc2VhcmNoaW5nIGZvciB0aGUgW29yaWdpbl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8pIG9mIGEgc3BlY2lmaWMgW1RlblhUZW1wbGF0ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdGVtcGxhdGUvKSBzeW1ib2wuICAgVGhlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpIGZ1bmN0aW9uIHF1ZXJpZXMgdGhlIHNvdXJjZSBjb2RlL2JpbmFyeSBvcmlnaW4gb2Ygc3ltYm9sIHNlcXVlbmNlcyBpbiBhIHRhcmdldCBUZW5YVGVtcGxhdGUgdG8gaWRlbnRpZnkgdGhlIGxvZ2ljYWwgXCJtZXNzYWdlXCIgcG9ydGlvbnMgb2YgYXBwL2luZnJhIGV2ZW50cyB2cy4gdmFyaWFibGUgdmFsdWVzIGFuZCBbTURDIGNvbnRleHRdKGh0dHBzOi8vbG9nZ2luZy5hcGFjaGUub3JnL2xvZzRqLzIueC9tYW51YWwvdGhyZWFkLWNvbnRleHQuaHRtbCkuICAgU2luY2Ugc3ltYm9scyBtYXkgYXBwZWFyIGluIGh1bmRyZWRzIG9yIG1vcmUgbG9jYXRpb25zIGFjcm9zcyBhIGNvZGUgYmFzZSwgIGxpbWl0aW5nIHRoZSBudW1iZXIgb2Ygc3ltYm9sIHVuaXRzIHRvIGxvYWQgaXMgbmVjZXNzYXJ5IHRvIHJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24uICAgICBBIHNlY29uZCBjb25zaWRlcmF0aW9uIGluIHBsYWNpbmcgYW4gdXBwZXIgbGltaXQgb24gdGhlIG51bWJlciBvZiB1bml0cyB0byBsb2FkIGZyb20gdGhlIHN5bWJvbCBsaWJyYXJ5ICBpcyB0aGUgbW9yZSBmcmVxdWVudCBhIHN5bWJvbCBpcywgdGhlIGxvd2VyIHRoZSBwcm9iYWJpbGl0eSBvZiBzZWxlY3RpbmcgaXRzIGNvcnJlY3Qgb3JpZ2luLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMjgpIiwKICAgICAgImRlZmF1bHQiIDogMTI4CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

    ```yaml
    # 🔟❎ 'run' symbol file configuration
    
    # Loads symbol library files to transform events into well-defined TenXObjects.
    # To learn more see https://doc.log10x.com/run/symbol
      
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # ============================ Symbol Options =================================
    
    symbol:
    
      # 'paths' specifies the file/folder locations to scan for symbol library files.
      #  To learn more see https://doc.log10x.com/run/symbol/#symbolpaths
      paths:
        - $=path("data/shared/symbols", false)
        - $=path("<TENX_SYMBOLS_PATH>",  false)
    
      literals: []
    ```

??? tenx-aggregators "Aggregators"

    <a id="aggregators"></a>
    ### Aggregators {.hidden-heading}

    Configure [Aggregators](/run/aggregate "Aggregate and summarize TenXObjects to publish as metrics") to aggregate and summarize TenXObjects to publish as metrics.

    Below is the default configuration from: [report/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/aggregate/report/config.yaml "report/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/aggregate/report/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml19-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml19-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml19-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit Aggregator Config Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml19-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/aggregate/report/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/aggregate/report/config.yaml"
                                data-copy-win="C:\log10x\configs/run/aggregate/report/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/aggregate/report/config.yaml">$TENX_CONFIG/run/aggregate/report/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/aggregate/report/config.yaml">./pipelines/run/aggregate/report/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiYWdncmVnYXRvciIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIG9mIGFnZ3JlZ2F0b3JcblxuUHJvdmlkZXMgYSBsb2dpY2FsIG5hbWUgZm9yIHRoaXMgYWdncmVnYXRvciAoZS5nLiwgJ2Vycm9ycycpLiBUaGlzIHZhbHVlIGlzIGFjY2Vzc2libGUgYXQgcnVuLXRpbWUgdmlhIHRoZSBpbnRyaW5zaWMgJ2lucHV0TmFtZScgZmllbGQgdG8gaWRlbnRpZnkgVGVuWFN1bW1hcmllcyBvcmlnaW5hdGluZyBmcm9tIHRoaXMgYWdncmVnYXRvci4iCiAgICAgICAgICB9LAogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRW5hYmxlL2Rpc2FibGUgdGhpcyBhZ2dyZWdhdG9yXG5cblNldHMgd2hldGhlciB0byBvcGVuIHRoZSBpbnB1dCBzdHJlYW0uIFRvIGVuYWJsZSB0aGlzIGlucHV0IG9ubHkgd2hlbiBhbiAnYWdncmVnYXRlRXJyb3JzJyBzdGFydHVwIGFyZ3VtZW50IHZhbHVlIGlzIHRydXRoeTogIGBgYCB5YW1sIC4uLiBhZ2dyZWdhdG9yOiAgIGVuYWJsZWQ6ICQ9VGVuWEVudi5nZXQoXCJhZ2dyZWdhdGVFcnJvcnNcIikgYGBgIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJ0cnVlIgogICAgICAgICAgfSwKICAgICAgICAgICJmaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgZmllbGQgbmFtZXMgYnkgd2hpY2ggdG8gYWdncmVnYXRlIFRlblhPYmplY3RzXG5cblByb3ZpZGVzIGEgbGlzdCBvZiBpbnRyaW5zaWMvZXh0cmFjdGVkL2NhbGN1bGF0ZWQgW1RlblhPYmplY3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0KSBmaWVsZCBuYW1lcyBieSB3aGljaCB0byBhZ2dyZWdhdGUgaW5zdGFuY2VzLiAgV2hlbiB0aGUgYWdncmVnYXRvciBmbHVzaGVzIHRoZSBpbi1tZW0gdGFibGUgdG8gcHJvZHVjZWQgVGVuWFN1bW1hcmllcywgZWFjaCBnZW5lcmF0ZWQgVGVuWFN1bW1hcnkgaW5zdGFuY2UgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB0b3RhbCB2YWx1ZXMgdmlhIGl0cyBbc3VtbWFyeVRvdGFsc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhTdW1tYXJ5K3N1bW1hcnlWYWx1ZXMpIGFycmF5IGZpZWxkLiIsCiAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJkZWZhdWx0VmFsdWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJBIGNvbnN0YW50IHZhbHVlIHRvIGRlZmF1bHQgaWYgJ21heENhcmRpbmFsaXR5JyBpcyBleGNlZWRlZFxuXG5EZWZpbmVzIGEgY29uc3RhbnQgdmFsdWUgdG8gdXNlIGluc3RlYWQgb2YgW2ZpZWxkIHZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmllbGRzKSB3aGVuIHRoZSBjdXJyZW50IG51bWJlciBvZiByb3dzIHdpdGhpbiB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZSBkdXJpbmcgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpIGV4Y2VlZHMgW21heENhcmRpbmFsaXR5XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JtYXhjYXJkaW5hbGl0eSkuICBUaGlzIHZhbHVlIHByZXZlbnRzIGFuIG91dC1vZi1tZW0gZXJyb3IgaWYgVGVuWE9iamVjdHMgd2hvc2UgW2ZpZWxkIHZhbHVlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmllbGRzKSBhcmUgb2YgaGlnaCBjYXJkaW5hbGl0eSwgd2hpY2ggY2FuIGNhdXNlIHRoZSBpbi1tZW0gdGFibGUgdG8gZ3JvdyBiZXlvbmQgdGhlIGNvbmZpbmVzIG9mIHRoZSBob3N0IEpWTSBoZWFwLiAgVGhpcyBlcnJvciBpcyBwb3NzaWJsZSBpZiBbZmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIGNvbnRhaW5zIGEgY2FsY3VsYXRlZC9leHRyYWN0ZWQgZmllbGQgd2hvc2UgdmFsdWUgaXMgYWxwaGFudW1lcmljIChlLmcuLCAnc3BhbklEJykgYW5kIGlzIHByYWN0aWNhbGx5IHVuaXF1ZSB0byBlYWNoIFRlblhPYmplY3QuIgogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbEZpZWxkcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBmaWVsZHMgd2hvc2UgdmFsdWVzIHRvIHRhbGx5IGludG8gZ2VuZXJhdGVkIFRlblhTdW1tYXJpZXNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBpbnRyaW5zaWMgY2FsY3VsYXRlZC9leHRyYWN0ZWQgVGVuWE9iamVjdCBmaWVsZCBuYW1lcyB0byB0YWxseSBhbmQgd3JpdGUgaW50byBhZ2dyZWdhdGVkIFRlblhTdW1tYXJ5IGluc3RhbmNlcyB3aXRoaW4gYSB0YXJnZXQgZmx1c2ggIFt0aHJlc2hvbGRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNodGhyZXNob2xkKSBvciBbaW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpLiAgRm9yIGV4YW1wbGUsIHNldHRpbmcgYSB2YWx1ZSBvZjogYHByaWNlYCBpbnRvIHRoaXMgYXJyYXkgd2lsbCB0YWxseSB0aGUgcHJpY2VzIG9mIGFsbCBUZW5YT2JqZWN0cyBhZ2dyZWdhdGVkIGludG8gYSB0YXJnZXQgb3V0cHV0IFRlblhTdW1tYXJ5IGluc3RhbmNlLiAgIEEgbWF0Y2hpbmcgYHByaWNlYCB2YWx1ZSBjb250YWluaW5nIHRoZSBzdW0gb2YgYWdncmVnYXRlZCBwcmljZXMgd2lsbCBiZSBhY2Nlc3NpYmxlIGZvciBlYWNoIFRlblhTdW1tYXJ5IGluc3RhbmNlIHZpYSBpdHMgIFtzdW1tYXJ5VG90YWxzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVRvdGFscykgYXJyYXkuIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4IG51bWJlciBvZiBjb25jdXJyZW50IHJvd3Mgd2l0aGluIHRoZSBhZ2dyZWdhdG9yIGluLW1lbSB0YWJsZSB3aXRoaW4gdGhlIGZsdXNoIGludGVydmFsXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSByb3dzIHdpdGhpbiB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZS4gSWYgdGhlIG51bWJlciBvZiByb3dzIGV4Y2VlZHMgdGhpcyB2YWx1ZSBkdXJpbmcgW2ZsdXNoSW50ZXJ2YWxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2FnZ3JlZ2F0ZS8jYWdncmVnYXRvcmZsdXNoaW50ZXJ2YWwpICwgdGhlICdhZ2dyZWdhdG9yRGVmYXVsdFZhbHVlJyB2YWx1ZSB3aWxsIGJlIGZvciBhbGwgVGVuWE9iamVjdHMgaW5zdGVhZCBvZiBbZmllbGQgdmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIHVudGlsIHRoZSBhZ2dyZWdhdG9yIGlzIGZsdXNoZWQuICBUaGlzIHZhbHVlIGlzIHVzZWQgYXMgYSBiYWNrc3RvcCB0byBlbnN1cmUgdGhhdCB0aGUgYWdncmVnYXRvcidzIGluLW1lbSB0YWJsZSBkb2VzIG5vdCBvdmVyZmxvdyB3aGVuIGV4dHJhY3RpbmcgYW5kICBhZ2dyZWdhdGluZyB2ZXJ5IGhpZ2ggY2FyZGluYWxpdHkgdmFsdWVzIGZyb20gdGhlIGZpZWxkcyBvZiBUZW5YT2JqZWN0cyBwYXNzZWQgdG8gdGhpcyBhZ2dyZWdhdG9yLiAgSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQgb3Igc2V0IHRvIDAsIHRoZSBhZ2dyZWdhdG9yIGhhcyBubyBjYXAuIFRoaXMgbWF5IHJlc3VsdCBpbiBhbiBvdXQtb2YtbWVtIGVycm9yIHdoZW4gdmVyeSBoaWdoIGNhcmRpbmFsaXR5IChlLmcuLCAnc3BhbklEJywgJ0dVSUQnKSBbZmllbGRzXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmaWVsZHMpIGFyZSBzcGVjaWZpZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikiCiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhPYmplY3QgbXVzdCBldmFsdWF0ZSBhcyAndHJ1dGh5JyBhZ2FpbnN0IHRvIGJlIGFnZ3JlZ2F0ZWRcblxuUHJvdmlkZXMgYSB3YXkgdG8gY29udHJvbCB3aGljaCBUZW5YT2JqZWN0cyBhcmUgaW5jb3Jwb3JhdGVkIGludG8gdGhpcyBhZ2dyZWdhdG9yLiBVbmxpa2UgdGhlICdhZ2dyZWdhdG9yRW5hYmxlZCcsIHdoaWNoIGVuYWJsZXMvZGlzYWJsZXMgdGhpcyBhZ2dyZWdhdG9yIGFsdG9nZXRoZXIsIHRoaXMgSmF2YVNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBwZXIgVGVuWE9iamVjdCB0byBwcm92aWRlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB3aGF0IGluZm9ybWF0aW9uIHRvIGFnZ3JlZ2F0ZS4gIEZvciBleGFtcGxlLCB0byBvbmx5IGFnZ3JlZ2F0ZSBUZW5YT2JqZWN0cyByZWFkIGZyb20gYSBzcGVjaWZpZWQgaW5wdXQ6ICBgYGAgeWFtbCBhZ2dyZWdhdG9yOiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJlbGFzdGljXCIgYGBgICBUbyBhcHBseSBtb3JlIGNvbXBsZXggbG9naWMsIGludm9rZSBhbiAxMHggSmF2YVNjcmlwdCBmdW5jdGlvbiBkZWNsYXJlZCBpbiBhIC5qcyBmaWxlIGJ5IHBhc3NpbmcgaXQgdG8gdGhlIDEweCBFbmdpbmUgYXQgc3RhcnR1cCAoZS5nLiwgJCB0ZW54IHJ1biBAbXkuanMpLiAgYGBgIHlhbWwgYWdncmVnYXRvcjogICAuLi4gICBmaWx0ZXI6IG15QWdncmVnYXRvckZpbHRlcigpIGBgYCAgRm9yIGEgcmVhbC13b3JsZCBhZ2dyZWdhdG9yIGV4YW1wbGUgc2VlIFthZ2dyZWdhdGUvc3RyZWFtLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L21vZHVsZXMvYmxvYi9tYWluL3BpcGVsaW5lcy9ydW4vbW9kdWxlcy9hZ2dyZWdhdGUvc3RyZWFtLnlhbWwpLiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZmx1c2hUaHJlc2hvbGQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHRoZSBudW1iZXIgb2YgVGVuWE9iamVjdHMgdG8gYWdncmVnYXRlIGJlZm9yZSB0aGUgYWdncmVnYXRvciBmbHVzaGVzXG5cbkNvbnRyb2xzIGhvdyBtYW55IFRlblhPYmplY3RzIHRvIHVwc2VydCBpbnRvIHRoaXMgYWdncmVnYXRvciAoZS5nLiwgMTAwMDApIGJlZm9yZSB0aGUgYWdncmVnYXRvciB0cmFuc2Zvcm1zIHRoZSByb3dzIG9mIGl0cyBpbi1tZW0gdGFibGUgaW50byBUZW5YU3VtbWFyaWVzIGluc3RhbmNlcyBhbmQgZmx1c2hlcyB0aGVtIGludG8gdGhlIHBpcGVsaW5lLiAgSWYgbm90IHNldCwgdGhlIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi9hZ2dyZWdhdGUvI2FnZ3JlZ2F0b3JmbHVzaGludGVydmFsKSBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZW4gdG8gZmx1c2ggdGhlIGFnZ3JlZ2F0b3IuIElmIG5laXRoZXIgYXJndW1lbnQgaXMgcHJlc2VudCwgdGhlIGFnZ3JlZ2F0b3Igb25seSBmbHVzaGVzIHBlbmRpbmcgVGVuWFN1bW1hcmllcyB3aGVuIHRoZSBwaXBlbGluZSB0ZXJtaW5hdGVzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJmbHVzaEludGVydmFsIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiSW50ZXJ2YWwgdG8gd2FpdCBiZWZvcmUgdGhlIGFnZ3JlZ2F0b3IgZmx1c2hlc1xuXG5TZXRzIHRoZSBwZXJpb2QgKGUuZy4sICczMHMnKSwgYWZ0ZXIgd2hpY2ggdGhlIGFnZ3JlZ2F0b3IgdHJhbnNmb3JtcyB0aGUgcm93cyBvZiBpdHMgaW4tbWVtIHRhYmxlIGludG8gVGVuWFN1bW1hcmllcyBpbnN0YW5jZXMgYW5kIGZsdXNoZXMgdGhlbSBpbnRvIHRoZSBwaXBlbGluZS4gIElmIHNldCwgdGhlIFtmbHVzaFRocmVzaG9sZF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vYWdncmVnYXRlLyNhZ2dyZWdhdG9yZmx1c2h0aHJlc2hvbGQpICBhcmd1bWVudCBkZXRlcm1pbmVzIHdoZW4gdG8gZmx1c2ggdGhlIGFnZ3JlZ2F0b3IuIElmIG5laXRoZXIgYXJndW1lbnQgaXMgcHJlc2VudCwgdGhlIGFnZ3JlZ2F0b3Igb25seSBmbHVzaGVzIHBlbmRpbmcgVGVuWFN1bW1hcmllcyB3aGVuIHRoZSBwaXBlbGluZSB0ZXJtaW5hdGVzLiIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJyZXF1aXJlZCIgOiBbCiAgICAgICAgICAibmFtZSIsCiAgICAgICAgICAiZmllbGRzIgogICAgICAgIF0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

    ```yaml
    # 🔟❎ 'run' aggregator config for the reporter app.
    
    # This file configures aggregators for tracking emitted (non-dropped) events.
    # To learn more see https://doc.log10x.com/run/aggregate
    
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # ============================== Aggregator Options ===========================
    
    # Multiple aggregators can be defined below
    aggregator:
    
      # Defines an aggregator for tracking emitted (non-dropped) events
      # This enables an output metric to show an accurate (lossless) metric of the
      # data actually emitted to downstream systems.
      - name: emitted_events
    
        # 'filter' sets a JavaScript expression that TenXObjects must evaluate as truthy to be aggregated.
        #  To learn more see https://doc.log10x.com/run/output/receive/#filter-expressions
        #
        # This filter excludes dropped events by checking isRoute("drop"),
        # ensuring only emitted events are tracked.
        #
        # For more info, see https://doc.log10x.com/api/js/#TenXBaseObject+dropped
        filter: "this.isObject && !this.isRoute(\"drop\")"
    
        # 'fields' set the names of intrinsic/extracted/calculated fields whose combined values
        #  identify a unique row within the aggregator's in-mem table for
        #  each object passed to it. This aggregator defaults to enrichment fields.
        #  To learn more see https://doc.log10x.com/run/initialize/#enrichmentFields
        fields:
          - $=yield TenXEnv.get("enrichmentFields")
    
        # 'totalFields' specifies fields to extract and tally into generated TenXSummaries
        totalFields: []
    
        # 'flushThreshold' sets the max number of TenXObjects whose values to upsert into
        #  the aggregator's in-mem table. Once exceeded, the aggregator instantiates TenXSummaries
        #  from the table rows to send to output and reset the table.
        flushThreshold: 10000
    
        # 'flushInterval' sets a periodic interval, after which the aggregator
        #  flushes the rows of its in-mem table into the pipeline as TenXSummary instances.
        flushInterval: 2s
    
        # 'maxCardinality' sets the maximum number of rows for the aggregator's
        #  in-mem table. If an TenXObjects whose 'values' are not contained in the table
        #  is passed to the aggregator, 'defaultValue' will be used for it instead
        #  until the aggregator flushes its in-mem table after 'flushInterval' or 'flushThreshold'
        #  are exceeded.
        maxCardinality: 65536
    
        # 'defaultValue' sets a constant value that is used instead of 'values' when
        #  'maxCardinality' is exceeded within 'flushInterval'
        defaultValue: unknown
    ```

??? tenx-template "Template"

    <a id="template"></a>
    ### Template {.hidden-heading}



    Below is the default configuration from: [template/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/template/config.yaml "template/config.yaml"){target="\_blank"}.  
  
    <div class="edit-options">
        <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/template/config.yaml" target="_blank" rel="noopener noreferrer">
            <span class="twemoji" style="margin-right: 0.3rem;">
                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                    <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                </svg>
            </span> Edit Online
        </a>
        <button class="md-button tenx-config.yaml20-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml20-dialog">
            <span style="margin-right: 0.3rem;">
                <span class="twemoji">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                    </svg>
                </span>
            </span>Edit Locally
        </button>
    </div>
    
    <dialog id="config-yaml20-dialog" class="md-dialog md-dialog--editor">
        <div class="editor-dialog-wrapper">
            <div class="editor-dialog-header">
                <span class="editor-dialog-title">Edit config.yaml Locally</span>
                <div class="editor-header-actions">
                    <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                    </button>
                    <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                        <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                        <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                        <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                        <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                    </button>
                    <span class="header-divider"></span>
                    <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml20-dialog')" data-tooltip="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                    </button>
                </div>
            </div>
            <div class="editor-dialog-content">
                <div class="yaml-editor-container"></div>
            </div>
            <div class="yaml-editor-statusbar">
                <span class="yaml-editor-status"></span>
            </div>
        </div>
        <!-- Locations Popup -->
        <div class="locations-popup" style="display: none;">
            <div class="locations-popup-content">
                <div class="locations-popup-header">
                    <span class="locations-header-label">Download and save to:</span>
                    <button class="locations-popup-close" aria-label="Close">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                            <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                        </svg>
                    </button>
                </div>
                <ul class="locations-list">
                    <li>
                        <span class="location-label">Linux / Docker / macOS
                            <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="default-path location-path" data-tooltip=""
                                data-copy-osx="/etc/log10x/config/run/template/config.yaml"
                                data-copy-nix="/etc/log10x/config/run/template/config.yaml"
                                data-copy-win="C:\log10x\configs/run/template/config.yaml"></code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Custom directory
                            <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="$TENX_CONFIG/run/template/config.yaml">$TENX_CONFIG/run/template/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                    <li>
                        <span class="location-label">Within cloned repo
                            <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                            </span>
                        </span>
                        <div class="location-path-row">
                            <code class="location-path" data-tooltip="./pipelines/run/template/config.yaml">./pipelines/run/template/config.yaml</code>
                            <button class="copy-btn" data-tooltip="Copy path">
                                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                    <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                </svg>
                            </button>
                        </div>
                    </li>
                </ul>
                <div class="locations-popup-footer">
                    <button class="locations-download-btn" title="Download config file">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                            <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                        </svg>
                        <span>Download</span>
                    </button>
                </div>
            </div>
        </div>
    </dialog>
    
    <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVtcGxhdGUiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnB1dCBmaWxlcyBvciBnbG9iIHBhdHRlcm5zIGNvbnRhaW5pbmcgSlNPTi1lbmNvZGVkIFRlblhUZW1wbGF0ZXNcblxuSW5wdXQgZmlsZXMgb3IgZ2xvYiBwYXR0ZXJucyBmcm9tIHdoaWNoIHRvIGxvYWQgSlNPTi1lbmNvZGVkIFRlblhUZW1wbGF0ZXMuIChEZWZhdWx0OiBbXCJwYXRoKFxcXCJkYXRhL3NhbXBsZS90ZW1wbGF0ZXMvKi5qc29uXFxcIilcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAicGF0aChcImRhdGEvc2FtcGxlL3RlbXBsYXRlcy8qLmpzb25cIikiCiAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAiY2FjaGVTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlIHNpemUgb2YgaW4tbWVtb3J5IGNhY2hlZCB0ZW1wbGF0ZXNcblxuQ29udHJvbHMgdGhlIG1heGltdW0gdG90YWwgYnl0ZSBzaXplIG9mIHRlbXBsYXRlcyBoZWxkIGluIHRoZSBpbi1tZW1vcnkgY2FjaGUuIFdoZW4gdGhlIGNhY2hlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgbGVhc3QgcmVjZW50bHkgdXNlZCB0ZW1wbGF0ZXMgYXJlIHBydW5lZCB0byBhIHRlbXBvcmFyeSBmaWxlIG9uIGRpc2suIFBydW5lZCB0ZW1wbGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgZnJvbSBkaXNrIHdoZW4gYWNjZXNzZWQgYWdhaW4uICBTZXQgdG8gMCB0byBkaXNhYmxlIHBydW5pbmcgYW5kIGtlZXAgYWxsIHRlbXBsYXRlcyBpbiBtZW1vcnkuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwOTcxNTIwKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAyMDk3MTUyMAogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgICJ2YXIiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgInBsYWNlaG9sZGVyIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQbGFjZWhvbGRlciBjaGFyYWN0ZXIgZm9yIG5vdGF0aW5nIFRlblhPYmplY3QgaW5zdGFuY2UgdmFyaWFibGVzXG5cblNwZWNpZmllcyBhIGNoYXJhY3RlciB0byB1c2Ugd2hlbiBlbmNvZGluZyBhbiBUZW5YVGVtcGxhdGUgdG8gc2lnbmlmeSB0aGUgbG9jYXRpb24gb2YgYSBydW50aW1lIHZhcmlhYmxlIHZhbHVlLiAgRm9yIGV4YW1wbGUsIGZvciBhbiBUZW5YVGVtcGxhdGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIHNlZ21lbnQ6ICAnRVJST1I6IGNvdWxkIG5vdCBjb25uZWN0IHRvIGhvc3QgSVA6ICQuJC4kLiQnICBUaGUgJyQnIGVudHJpZXMgZGVzaWduYXRlIHRoYXQgYW55IFRlblhPYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGVtcGxhdGUgIHdpbGwgc3Vic3RpdHV0ZSB0aGUgJyQnIHNsb3RzIHdpdGggbWF0Y2hpbmcgdmFsdWVzIGZyb20gaXRzIGluZGl2aWR1YWwgW3ZhcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSBhcnJheSAoZS5nLiAwLDAsMCwxMjcpLiAoRGVmYXVsdDogJCkiLAogICAgICAgICAgImRlZmF1bHQiIDogIiQiCiAgICAgICAgfSwKICAgICAgICAibWF4UmVjdXJJbmRleGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgdGVtcGxhdGUgcmV1c2FibGUgdmFyaWFibGUgdmFsdWVcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZhcmlhYmxlIHZhbHVlcyB0byByZXVzZSB3aGVuIGVuY29kaW5nIGFuIFRlblhPYmplY3QncyBbdmFyc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3ZhcnMpIGFycmF5IHRvIHN0cmVhbS4gV2hlbiBnZW5lcmF0aW5nIGEgbmV3ICBUZW5YVGVtcGxhdGUgZm9yIGFuIFRlblhPYmplY3QgaW5zdGFuY2Ugd2hvc2UgdmFyaWFibGVzIGNvbnRhaW4gcmVwZXRpdGl2ZSB2YWx1ZXMsICB0aGUgdGVtcGxhdGUgbWF5IGluZGljYXRlIHRoYXQgYSB2YWx1ZSBpcyBhIHJlcGV0aXRpb24gb2YgYSBwcmV2aW91cyB2YXJpYWJsZSB2YWx1ZSBhbmQgIGRvZXMgbm90IG5lZWQgdG8gYmUgZW5jb2RlZCBhZ2Fpbi4gIEZvciBleGFtcGxlLCBmb3IgYW4gVGVuWE9iamVjdCB3aG9zZSBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIGZpZWxkIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc2VnbWVudDogYHVzZXJJRD00NWRmZ2RmczQscGFyZW50SUQ9NDVkZmdkZnM0YCwgdGhlIHJlc3VsdGluZyBUZW5YVGVtcGxhdGUgY2FuIGJlIGVuY29kZWQgYXM6IGB1c2VySUQ9JCxwYXJlbnRJRD0kMWAgc3BlY2lmeWluZyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgYHBhcmVudElEYCB2YXJpYWJsZSBjYW4gYmUgZm91bmQgb25lIHNsb3QgYmVoaW5kIGluIHRoZSBUZW5YT2JqZWN0J3MgW3ZhcnMgYXJyYXldKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt2YXJzKSwgc2F2aW5nIHRoZSBuZWVkIHRvIGVuY29kZSB0aGlzIHZhbHVlIG11bHRpcGxlIHRpbWVzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMTAKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAidGltZXN0YW1wIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwcmVmaXgiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRlbXBsYXRlIHRpbWVzdGFtcCBwcmVmaXhcblxuU3BlY2lmaWVzIGEgcHJlZml4IGZvciBhbiBUZW5YVGVtcGxhdGUncyBzZXQgb2YgdmFyaWFibGUgYW5kIHN5bWJvbCB0b2tlbnMgZGVzY3JpYmluZyBhIHRpbWVzdGFtcCAoZS5nLiwgJHtERC9NTS9ZWSBISC1tbS1zc30pLiAoRGVmYXVsdDogKCkiLAogICAgICAgICAgImRlZmF1bHQiIDogIigiCiAgICAgICAgfSwKICAgICAgICAicG9zdGZpeCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVGVtcGxhdGUgdGltZXN0YW1wIHBvc3RmaXhcblxuU3BlY2lmaWVzIGEgdmFsdWUgYXBwZW5kZWQgdG8gYW4gVGVuWFRlbXBsYXRlJ3MgYW5kIHNldCBvZiB2YXJpYWJsZSBhbmQgc3ltYm9sIHRva2VucyBkZXNjcmliaW5nIGEgdGltZXN0YW1wIChlLmcuLCAke0REL01NL1lZIEhILW1tLXNzfSkuIChEZWZhdWx0OiApKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiKSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

    ```yaml
    # 🔟❎ 'run' template file configuration
    
    # Load TenXTemplates .json files that define the structure/schema of TenXObjects.
    # To learn more see https://doc.log10x.com/run/template/
    
    # Set the 10x pipeline to 'run'
    tenx: run
    
    # =============================== Template ===================================
    
    template:
      # 'files' specifies GLOB pattern for finding JSON-encoded TenXTemplates.
      files:
        - $=path("data/templates/*.json")
        - $=path("data/sample/output/*.json")
    
      # 'cacheSize' controls the maximum total byte size of templates held
      #  in the in-memory cache vs. on disk. Set to 0 to disable pruning.
      cacheSize: $=parseBytes("10MB")
    
    # =============================== Variable ===================================
    
    var:
      # 'placeholder' specifies a character to use when encoding a TenXTemplate
      #  to signify the location of a runtime variable value.
      placeholder: "$"
    
      # 'maxRecurIndexes' controls the maximum number of variable values to reuse.
      maxRecurIndexes: 10
    
    # =============================== Timestamp ==================================
    
    timestamp:
      # 'prefix' specifies a prefix for a TenXTemplate's timestamp tokens.
      prefix: (
    
      # 'postfix' specifies a postfix for a TenXTemplate's timestamp tokens.
      postfix: )
    ```

??? tenx-transform "Transform"

    <a id="transform"></a>
    ### Transform {.hidden-heading}

    Configure  the [Transform](/run/transform "Transform log and trace events into well-defined TenXObjects") to transform log and trace events into well-defined TenXObjects.

    === ":material-stamper: Timestamp"

  
        #### timestamp {.hidden-heading}
        Configure  the [Timestamp parser](/run/transform/timestamp "Extract alphanumeric and epoch timestamp values from input events") to extract alphanumeric and epoch timestamp values from input events.  
  
        Below is the default configuration from: [timestamp/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/timestamp/config.yaml "timestamp/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/timestamp/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml21-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml21-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml21-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Timestamp parser Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml21-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/timestamp/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/timestamp/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/timestamp/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/timestamp/config.yaml">$TENX_CONFIG/run/transform/timestamp/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/timestamp/config.yaml">./pipelines/run/transform/timestamp/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGltZXN0YW1wIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJwYXR0ZXJucyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGF0ZS10aW1lIGZvcm1hdHMgZm9yIHBhcnNpbmcgdGltZXN0YW1wcyBmcm9tIGlucHV0IGV2ZW50c1xuXG5MaXN0cyBkYXRlLXRpbWUgZm9ybWF0cyBpbiBbSmF2YSBzcGVjaWZpY2F0aW9uXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvZm9ybWF0L0RhdGVUaW1lRm9ybWF0dGVyLmh0bWwpIGZvciBwYXJzaW5nIHRpbWVzdGFtcCBlcG9jaCB2YWx1ZXMgZnJvbSBpbnB1dCBldmVudHMuIChEZWZhdWx0OiBbXCJbY29uZmlnLnlhbWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9sb2ctMTB4L2NvbmZpZy90cmVlL21haW4vcGlwZWxpbmVzL3J1bi9jb25maWcvdHJhbnNmb3JtL3RpbWVzdGFtcC9jb25maWcueWFtbClcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAiW2NvbmZpZy55YW1sXShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9jb25maWcvdHJlZS9tYWluL3BpcGVsaW5lcy9ydW4vY29uZmlnL3RyYW5zZm9ybS90aW1lc3RhbXAvY29uZmlnLnlhbWwpIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgInNlYXJjaERpcmVjdGlvbiIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiQ29udHJvbHMgdGhlIHRleHQgZGlyZWN0aW9uKHMpIGluIHdoaWNoIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wc1xuXG5Db250cm9scyB0aGUgZGlyZWN0aW9uKHMpIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wcyB3aXRoaW4gYW4gVGVuWE9iamVjdCdzIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgZmllbGQuIFBvc3NpYmxlIHZhbHVlczogICAtICoqZnJvbVN0YXJ0Kio6IHNlYXJjaCBmb3IgW3RpbWVzdGFtcE1heFBlck9iamVjdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wbWF4cGVyb2JqZWN0KSBmcm9tIHRoZSBzdGFydCBvZiBbdGV4dF1odHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgdG8gcmVzdHJpY3QgdGhlIHNlYXJjaCB0byBbc2VhcmNoTGVuZ3RoTGltaXRGcm9tU3RhcnRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbXN0YXJ0KSBjaGFyYWN0ZXJzICAgIC0gKipmcm9tRW5kKio6IHNlYXJjaCBiYWNrd2FyZCBmb3IgW3RpbWVzdGFtcE1heFBlck9iamVjdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3RpbWVzdGFtcC8jdGltZXN0YW1wbWF4cGVyb2JqZWN0KSBmcm9tIHRoZSBlbmQgb2YgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSB0byBsaW1pdCB0aGUgc2VhcmNoIHRvIFtzZWFyY2hMZW5ndGhMaW1pdEZyb21FbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS90aW1lc3RhbXAvI3RpbWVzdGFtcHNlYXJjaGxlbmd0aGxpbWl0ZnJvbWVuZCkgY2hhcmFjdGVycyAgICAtICoqZnJvbVN0YXJ0QW5kRW5kKiogc2VhcmNoIGZvciBbdGltZXN0YW1wTWF4UGVyT2JqZWN0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBtYXhwZXJvYmplY3QpIGZyb20gYm90aCB0aGUgc3RhcnQgYW5kIGVuZCBvZiBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIHRvIGxpbWl0IHRoZSBzZWFyY2ggdG8gW3NlYXJjaExlbmd0aExpbWl0RnJvbVN0YXJ0XShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBzZWFyY2hsZW5ndGhsaW1pdGZyb21zdGFydCkgYW5kICBbc2VhcmNoTGVuZ3RoTGltaXRGcm9tRW5kXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vdGltZXN0YW1wLyN0aW1lc3RhbXBzZWFyY2hsZW5ndGhsaW1pdGZyb21lbmQpIHJlc3BlY3RpdmVseSAgICAtICoqbm9uZSoqOiBkbyBub3QgcGFyc2UgdGltZXN0YW1wcyAoRGVmYXVsdDogZnJvbVN0YXJ0KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiZnJvbVN0YXJ0IgogICAgICAgIH0sCiAgICAgICAgIm1heFBlck9iamVjdCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgcGVyIFRlblhPYmplY3RcblxuQ29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzdGFtcHMgdG8gYWRkIGludG8gYW4gVGVuWE9iamVjdCdzIFt0aW1lc3RhbXBdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YT2JqZWN0K3RpbWVzdGFtcCkgYXJyYXkuIFNldCB0byAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJzZWFyY2hMZW5ndGhMaW1pdEZyb21TdGFydCIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2NhbiBmb3IgdGltZXN0YW1wcyBmcm9tIGV2ZW50IHN0YXJ0XG5cbkxpbWl0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2VhcmNoIGZvciB0aW1lc3RhbXBzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgb2JqZWN0J3MgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSAgZmllbGQuIFNldCAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJzZWFyY2hMZW5ndGhMaW1pdEZyb21FbmQiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2NhbiBmb3IgdGltZXN0YW1wcyBmcm9tIGV2ZW50IGVuZFxuXG5MaW1pdHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHNlYXJjaCBmb3IgdGltZXN0YW1wcyBmcm9tIHRoZSBlbmQgb2YgdGhlIG9iamVjdCdzIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgZmllbGQuIFNldCAwIGZvciB1bmxpbWl0ZWQuIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDAKICAgICAgICB9LAogICAgICAgICJ6b25lIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaW1lem9uZSB0byB1c2Ugd2hlbiBmb3JtYXR0aW5nIHRpbWVzdGFtcCBVbml4IGVwb2NoIHZhbHVlc1xuXG5Db250cm9scyB0aGUgdGltZXpvbmUgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGltZXN0YW1wIGVwb2NoIHN0cmluZyB2YWx1ZXMuIFRoZSBbWm9uZUlkLm9mXShodHRwczovL2RvY3Mub3JhY2xlLmNvbS9qYXZhc2UvOC9kb2NzL2FwaS9qYXZhL3RpbWUvWm9uZUlkLmh0bWwjb2YtamF2YS5sYW5nLlN0cmluZy0pICBvYnRhaW5zIHRoZSB0aW1lem9uZSBmcm9tIHRoZSAnem9uZScgdmFsdWUuIChEZWZhdWx0OiBbaG9zdCBPUyB0aW1lem9uZV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy9hcGkvamF2YS90aW1lL1pvbmVJZC5odG1sI3N5c3RlbURlZmF1bHQtLSkpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJbaG9zdCBPUyB0aW1lem9uZV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy9hcGkvamF2YS90aW1lL1pvbmVJZC5odG1sI3N5c3RlbURlZmF1bHQtLSkiCiAgICAgICAgfSwKICAgICAgICAibGl0ZXJhbHMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlRpbWVzdGFtcCBsaXRlcmFsc1xuXG5BbiBhcnJheSBvZiBzdHJpbmdzIGxpdGVyYWwgdmFsdWVzIHRvIHRyZWF0IGFzIHZhbGlkIHBhcnRzIG9mIHRpbWVzdGFtcCAoZS5nLiwgJ1onLCAnVCcsICdHTVQnKS4gKERlZmF1bHQ6IFtcIlRcIixcIlpcIl0pIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9LAogICAgICAgICAgImRlZmF1bHQiIDogWwogICAgICAgICAgICAiVCIsCiAgICAgICAgICAgICJaIgogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=</template>

        ```yaml
        # 🔟❎ 'run' timestamp parser configuration
        
        # Identify unix/alphanumeric timestamp structures within TenXTemplates.
        # https://doc.log10x.com/run/transform/timestamp/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # ============================= Timestamp Options =============================
        
        timestamp:
         
          # 'maxPerObject' controls the max number of timestamps to add into an TenXObject's
          # 'timestamp' array. Set to 0 for unlimited.
          maxPerObject: 0
        
          # 'searchDirection' controls the direction(s) from with timestamps are searched for
          #  within the object's 'text' field. Possible values: 
        
          #  - fromStart: search for 'maxPerObject' from the start of 'text',  
          #    limiting search to 'searchLengthLimitFromStart' characters  
        
          #  - fromEnd: search backward for 'maxPerObject' from the end of 'text',
          #    limiting search to 'searchLengthLimitFromEnd' characters  
        
          #  - fromStartAndEnd: search for 'maxPerObject' from both the start and end of 'text'
          #    limiting search to 'searchLengthLimitFromStart' and 'searchLengthLimitFromEnd' respectively  
        
          #  - none: do not parse timestamps
        
          searchDirection: fromStartAndEnd
        
          # 'searchLengthLimitFromStart' limits the number of characters to search for
          #  timestamps from the beginning of the object's 'text' field. 0 for unlimited
          searchLengthLimitFromStart: 0
        
          # 'searchLengthLimitFromStart' limits the number of characters to search for
          #  timestamps from the end of the object's 'text' field. 0 for unlimited
          searchLengthLimitFromEnd: 0
        
          # 'zone' controls the timezone for formatting timestamp epoch
          #  values to string. The 'java.time.ZoneId.of(String zoneId)' 
          #  is used to obtain the timezone from the 'zone' value.
          #  If set to null, the host OS timezone is used. 
          zone: null
        
          # 'literals' contains an array of strings to treat as a part 
          #  of any timestamp candidate found when structuring an TenXObject.
          literals:
            - T
            - Z
            - I # Go INFO
            - E # Go ERROR
            - W # Go WARN
          
          # 'patterns' specifies an array of date-time formats to attempt when parsing timestamps from input events.
          #  Timestamp formats that appear frequently within an input stream can be 'bumped' higher within the list below.
        
          patterns:
          # Most common formats
          - "'I'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with INFO prefix, 1-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with INFO prefix, 2-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with INFO prefix, 3-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with INFO prefix, 4-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with INFO prefix, 5-digit microsecond precision.
          - "'I'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with INFO prefix, 6-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with WARNING prefix, 1-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with WARNING prefix, 2-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with WARNING prefix, 3-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with WARNING prefix, 4-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with WARNING prefix, 5-digit microsecond precision.
          - "'W'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with WARNING prefix, 6-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with ERROR prefix, 1-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with ERROR prefix, 2-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with ERROR prefix, 3-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with ERROR prefix, 4-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with ERROR prefix, 5-digit microsecond precision.
          - "'E'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with ERROR prefix, 6-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.S"                       # Used in Kubernetes kube-apiserver logs with FATAL prefix, 1-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SS"                      # Used in Kubernetes kube-apiserver logs with FATAL prefix, 2-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSS"                     # Used in Kubernetes kube-apiserver logs with FATAL prefix, 3-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSS"                    # Used in Kubernetes kube-apiserver logs with FATAL prefix, 4-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSSS"                   # Used in Kubernetes kube-apiserver logs with FATAL prefix, 5-digit microsecond precision.
          - "'F'MMdd HH:mm:ss.SSSSSS"                  # Used in Kubernetes kube-apiserver logs with FATAL prefix, 6-digit microsecond precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSSSZ"              # Used in macOS unified logs (log show), with microsecond precision and timezone offset (e.g., -0400).
          - "yyyy-MM-dd HH:mm:ss"                      # Widely used in Java applications, databases (e.g., MySQL, PostgreSQL), and application servers (e.g., Tomcat, JBoss).
          - "yyyy-MM-dd'T'HH:mm:ss.SSSZ"               # Common in web services, APIs, Java (with DateTimeFormatter.ISO_OFFSET_DATE_TIME), Python (with datetime.isoformat()), and systems requiring precise timestamps with timezone information.
          - "MMM dd HH:mm:ss"                          # Frequently seen in syslog, Unix-based systems, network devices (e.g., Cisco routers), and web servers (e.g., Apache, Nginx).
          - "MMM  d HH:mm:ss"                          # Classic syslog (RFC 3164) on days 1-9: the day is space-padded, e.g. "Jan  3 17:38:36".
          - "MMM d HH:mm:ss"                           # Same date without the padding (strftime %b %-d), e.g. "Nov 9 12:01:01" in Thunderbird-style system logs.
          - "dd/MMM/yyyy:HH:mm:ss Z"                   # Standard syslog format, used in firewalls (e.g., Cisco ASA, Palo Alto), network monitoring tools, and Unix-based systems.
          - "yyyy-MM-dd HH:mm:ss,SSS"                  # Common in Java logging frameworks like Log4j and Logback.
          - "yyyy-MM-dd'T'HH:mm:ss,SSS"                # Common in Java logging with ISO 8601 date-time, comma-separated milliseconds.
          - "MM/dd/yyyy HH:mm:ss"                      # Used in Windows event logs, .NET applications, and U.S.-based systems.
          - "EEE MMM dd HH:mm:ss yyyy"                 # Human-readable format used in various logs, including some web servers and application logs.
          - "EEE MMM dd HH:mm:ss zzz yyyy"             # java.util.Date.toString() and the Unix date command, e.g. "Thu Jan 15 10:00:01 UTC 2026". Common in Java application logs and shell-script output.
          - "yyyy-MM-dd'T'HH:mm:ss"                    # Simplified ISO 8601 format, used in many modern applications and frameworks.
          - "HH:mm:ss"                                 # Time-only format, used when the date is implied or provided separately, common in embedded systems and some programming languages.
          - "yyyyMMdd HH:mm:ss"                        # Compact format used in some legacy systems and batch processing logs.
          - "yyyyMMdd-H:m:s:SSS"                       # Compact date, hyphen, unpadded time, colon before the milliseconds, e.g. "20171223-22:15:29:606" or "20171224-0:0:0:234". Android HealthApp and similar mobile logs.
          - "yyyyMMdd-H:m:s:SS"                        # Same with two fraction digits, e.g. "20171223-22:30:24:28".
          - "yyyyMMdd-H:m:s:S"                         # Same with one fraction digit.
          - "MM.dd HH:mm:ss"                           # Month.day without a year, e.g. "10.30 16:49:06". Proxifier and other Windows utility logs.
          - "MMM dd, yyyy h:mm:ss a"                   # Human-readable format with 12-hour clock, used in application logs and some U.S.-based systems.
          - "MMM dd, yyyy hh:mm:ss a"                  # Human-readable format with 12-hour clock (padded hour), used in application logs and some U.S.-based systems.
          # Common formats with slight variations
          - "yyyy-MM-dd HH:mm:ss.SSS"                  # Extended precision format used in Java applications and databases requiring millisecond accuracy.
          - "dd-MMM-yyyy HH:mm:ss.SSS"                 # Common in Java logging frameworks (e.g., Log4j, SLF4J) and application logs requiring human-readable dates with millisecond precision.
          - "yyyy-MM-dd'T'HH:mm:ss.S'Z'"               # Microsecond precision ISO 8601 format, 1-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SS'Z'"              # Microsecond precision ISO 8601 format, 2-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"             # Microsecond precision ISO 8601 format, 3-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'"            # Microsecond precision ISO 8601 format, 4-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'"           # Microsecond precision ISO 8601 format, 5-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"          # Microsecond precision ISO 8601 format, 6-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.S'Z'"               # Nanosecond precision ISO 8601 format, 1-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SS'Z'"              # Nanosecond precision ISO 8601 format, 2-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"             # Nanosecond precision ISO 8601 format, 3-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'"            # Nanosecond precision ISO 8601 format, 4-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSS'Z'"           # Nanosecond precision ISO 8601 format, 5-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"          # Nanosecond precision ISO 8601 format, 6-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"         # Nanosecond precision ISO 8601 format, 7-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSS'Z'"        # Nanosecond precision ISO 8601 format, 8-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS'Z'"       # Nanosecond precision ISO 8601 format, 9-digit precision.
          - "yyyy-MM-dd'T'HH:mm:ssZZZZZ"               # ISO 8601 with timezone offset, used in systems where timezone information is critical.
          - "yyyy-MM-dd HH:mm:ss.SSSZZZZZ"             # Similar to above but without the 'T' separator, used in database logs and application servers.
          - "yyyy-MM-dd HH:mm:ss.S"                    # Microsecond precision format, 1-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SS"                   # Microsecond precision format, 2-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSS"                  # Microsecond precision format, 3-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSS"                 # Microsecond precision format, 4-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSS"                # Microsecond precision format, 5-digit precision.
          - "yyyy-MM-dd HH:mm:ss.SSSSSS"               # Microsecond precision format, 6-digit precision.
          - "MM/dd/yyyy*HH:mm:ss*SSS"                  # Used in some U.S.-based systems, particularly in legacy applications or specific logging frameworks.
          - "M/d/yyyy h:mm:ss a:SSS"                   # Common in systems using 12-hour time format, such as some Windows applications or older logging systems.
          - "M/d/yyyy hh:mm:ss a:SSS"                  # Common in systems using 12-hour time format with milliseconds and padded hour, such as some Windows applications.
          - "M/dd/yyyy hh:mm:ss a"                     # Similar to above, used in systems where millisecond precision is not needed.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSX"               # ISO 8601 with basic timezone offset format, used in systems that require standardized timestamps.
          - "yyyy-MM-dd'T'HH:mm:ss.SSSz"               # ISO 8601 with timezone name, used in applications that need to display timezone information.
          - "yyyy-MM-dd'T'HH:mm:ss'Z'"                 # ISO 8601 format assuming UTC, used in systems where all times are in UTC.
          - "yy/MM/dd HH:mm:ss"                        # Two-digit year format, used in compact logs or older systems.
          - "MMM dd HH:mm:ss ZZZZ"                     # Used in some Unix-based systems and web servers, includes timezone offset.
          - "HH:mm:ss,SSS"                             # Time-only format with milliseconds, used in performance logs or systems where date is provided separately.
          - "yyyy-MM-dd*HH:mm:ss"                      # Used in some application logs where the separator is a space or asterisk.
          - "yyyy MMM dd HH:mm:ss.SSS"                 # Human-readable format with milliseconds, used in some application logs.
          - "dd/MMM/yyyy HH:mm:ss"                     # Used in European systems and some web applications.
          - "yyyy-MM-dd'T'HH:mm:ss.SSS''Z''"           # ISO 8601 with milliseconds and literal 'Z', used in systems where 'Z' is explicitly included.
          - "MMM dd yyyy HH:mm:ss"                     # Human-readable format, used in various logs.
          - "yyyy-MM-dd HH:mm:ss ZZZZ"                 # Format with timezone offset, used in systems requiring timezone information.
          - "yyyy-MM-dd HH:mm:ssZZZZZ"                 # Similar to above, used in application logs.
          - "dd MMM yyyy HH:mm:ss"                     # European format, used in some web applications and databases.
          - "MMdd_HH:mm:ss"                            # Compact format without separators, used in file names or space-constrained logs.
          - "yyyy-MM-dd HH:mm:ss,SSSZZZZZ"             # Java logging format with timezone offset.
          - "yyyyMMdd HH:mm:ss.SSS"                    # Compact format with milliseconds, used in some legacy systems.
          - "yyyy/MM/dd HH:mm:ss"                      # Format used in some Asian systems, particularly in Japan.
          - "dd/MM/yyyy HH:mm:ss"                      # Common in European systems, including some web applications and databases.
          - "MM-dd-yyyy HH:mm:ss"                      # U.S. format variant, used in some older systems.
          - "yyyyMMddHHmmss"                           # Compact format for file names or database timestamps, used in systems where space is a concern.
          - "EEE, dd MMM yyyy HH:mm:ss zzz"            # RFC 1123 format, used in HTTP headers, web servers, and email systems.
        ```

    === ":material-equal: Fields"

  
        #### fields {.hidden-heading}
        Configure  the [Field parser](/run/transform/fields "Scan TenXTemplates for JSON and KV fields") to scan TenXTemplates for JSON and KV fields.  
  
        Below is the default configuration from: [fields/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/fields/config.yaml "fields/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/fields/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml22-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml22-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml22-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Field parser Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml22-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/fields/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/fields/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/fields/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/fields/config.yaml">$TENX_CONFIG/run/transform/fields/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/fields/config.yaml">./pipelines/run/transform/fields/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZmllbGQiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImV4dHJhY3QiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2NhbiBUZW5YVGVtcGxhdGUgZm9yIG5lc3RlZCBKU09OIG9iamVjdHMgb3Iga2V5LXZhbHVlIGxpc3RzXG5cbkNvbnRyb2xzIHdoZXRoZXIgdG8gc2NhbiBUZW5YVGVtcGxhdGVzIGZvciBKU09OIG9iamVjdHMgb3Iga2V5LXZhbHVlIGxpc3RzIChlLmcuLCBge1wicHJpY2VcIjogMTB9YCBvciBgcHJpY2U9MTBgKS4gVGVuWE9iamVjdHMgaW5zdGFuY2VzIG9mIHRoaXMgdGVtcGxhdGUgd2lsbCBwcm92aWRlIGFjY2VzcyB0byB0aGVzZSBmaWVsZHMgYXMgbmFtZWQgbWVtYmVycyAoZS5nLiwgYHRoaXMucHJpY2VgKS4gSWYgYSBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIFt0ZXh0XShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEJhc2VPYmplY3QrdGV4dCkgaXQgaXMgYWNjZXNzaWJsZSBhcyBhbiBhcnJheSAoZS5nLiwgYHRoaXMucHJpY2VbMV1gKS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICB9LAogICAgICAgICJuYW1lQnJlYWtzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJLViBmaWVsZCBuYW1lIHRlcm1pbmF0b3IgY2hhcnNcblxuQ29udHJvbHMgd2hpY2ggJ3RleHQnIGNoYXJhY3RlcnMgbGVmdCBvZiBhIGNhbmRpZGF0ZSB0b2tlbiBmb3IgYmVpbmcgYSAna2V5JyBpbiBhIEtWIGZpZWxkIGZvcm1hdGlvbiBzaG91bGQgc2VydmUgYXMgYSB0ZXJtaW5hdG9yIGZvciB0aGUgc2VhcmNoLiAgIEZvciBleGFtcGxlLCBmb3IgYW4gVGVuWE9iamVjdCB3aG9zZSBbdGV4dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K3RleHQpIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZW50cnkgJyx0eF9yZXN1bHQ9T0snLCB0aGUgZGVzaXJlZCBrZXkgc2hvdWxkIGJlICd0eF9yZXN1bHQnLCBhbmQgc28gdGhlIG5hbWUgdGVybWluYXRvciBjaGFyYWN0ZXIgc2hvdWxkIGJlICcsJyB2cy4gJ18nIChpbiB3aGljaCBjYXNlIHRoZSBrZXkgd291bGQgaGF2ZSBiZWVuIG5hbWVkICdyZXN1bHQnKS4gKERlZmF1bHQ6ICwgL1xce30uKClbXSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIiwgL1xce30uKClbXSIKICAgICAgICB9LAogICAgICAgICJ2YWx1ZUJyZWFrcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiS1YgZmllbGQgdmFsdWUgdGVybWluYXRvciBjaGFyc1xuXG5Db250cm9scyB3aGljaCBjaGFyYWN0ZXJzIGZvdW5kIHRvIHRoZSByaWdodCBvZiBhIHRva2VuIHdob3NlIGlzIGEgY2FuZGlkYXRlIGZvciBiZWluZyBhICd2YWx1ZScgaW4gYSBLViBmaWVsZCBmb3JtYXRpb24gc2hvdWxkIHNlcnZlICBhcyBhIHRlcm1pbmF0b3IgZm9yIHRoZSBzZWFyY2guICAgRm9yIGV4YW1wbGUsIGZvciBhbiBvYmplY3Qgd2hvc2UgW3RleHRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YQmFzZU9iamVjdCt0ZXh0KSBmaWVsZCBjb250YWlucyB0aGUgZm9sbG93aW5nIGVudHJ5OiAnc3RhdHVzPVJFU1VMVF9TVUNDRVNTJyB0aGUgZGVzaXJlZCBLViB2YWx1ZSAgc2hvdWxkIGJlICdSRVNVTFRfU1VDQ0VTUycsIGFuZCBhcyBzdWNoIHRoZSB2YWx1ZSB0ZXJtaW5hdG9yIGNoYXJhY3RlciAgc2hvdWxkIGJlICcsJyB2cy4gJ18nIChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSB3b3VsZCBiZSAnUkVTVUxUJykuIChEZWZhdWx0OiAvXFx7fSgpW10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIvXFx7fSgpW10iCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'run' TenXTemplate field extract configuration
        
        # Configure how to extract JSON objects and KV structures from TenXTemplates.
        # To learn more see https://doc.log10x.com/run/transform/fields/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Extract Options =============================
        
        field:
        
          # 'extract' controls whether to scan TenXTemplate for  JSON
          #  objects or key-value lists (e.g., 'X=Y'). 
          extract: true
        
          # 'nameBreaks' controls which characters found to the left of a token
          #  whose is a candidate for being a 'key' in a KV field formation should serve 
          #  as a terminator for the search. For example, for an object whose 'text' field
          #  contains the following entry ',tx_result=OK' the desired key name should be 'tx_result'
          #  and as such, the name terminator character should be ',' vs. '_' (in which case
          #  the key would have been named 'result').
          nameBreaks: ', /\{}.()[]'
        
          # 'valueBreaks' controls which characters found to the right of a token
          #  whose is a candidate for being a 'value' in a KV field formation should serve 
          #  as a terminator for the search. For example, for an object whose 'text' field
          #  contains the following entry: 'status=RESULT_SUCCESS' the desired KV value 
          #  should be 'RESULT_SUCCESS', and as such, the value terminator character 
          #  should be ',' vs. '_' (in which case the value would be 'RESULT').
          valueBreaks: ', /\{}()[]'
        ```

    === ":material-origin: Symbol"

  
        #### symbol {.hidden-heading}
        Configure  the [Origin selector](/run/transform/symbol "Select the source code/binary executable origin of TenXTemplate symbol values") to select the source code/binary executable origin of TenXTemplate symbol values.  
  
        Below is the default configuration from: [symbol/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/symbol/config.yaml "symbol/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/symbol/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml23-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml23-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml23-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Origin selector Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml23-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/symbol/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/symbol/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/symbol/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/symbol/config.yaml">$TENX_CONFIG/run/transform/symbol/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/symbol/config.yaml">./pipelines/run/transform/symbol/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAic3ltYm9sIiA6IHsKICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICJzZXF1ZW5jZVJlc2VydmVkIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIHRlcm1zIHRvIGlnbm9yZSB3aGVuIHNjYW5uaW5nIHN5bWJvbCB0b2tlbnNcblxuRGVmaW5lcyBhIGxpc3Qgb2YgdGVybXMgdGhhdCB0byBpZ25vcmUgd2hlbiBzZWFyY2hpbmcgZm9yIHRoZSBzeW1ib2wgdG9rZW5zIGNvbnN0aXR1dGluZyBhbiBUZW5YVGVtcGxhdGUncyAnbWVzc2FnZScgcG9ydGlvbiAoaS5lLiwgdGhlIFtzeW1ib2xdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zdHJ1Y3R1cmUvI3N5bWJvbHMpIHRva2VucyBvZiB0aGUgb3JpZ2luIHJhbmtlZCBoaWdoZXN0IGJ5IGNvdmVyYWdlLCBtZWFuaW5nIHRoZSBjb3VudCBvZiBkaXN0aW5jdCBsaWJyYXJ5LWtub3duIHRva2VucyBpdCBleHBsYWluczsgc3BhbiBsZW5ndGggaXMgdGhlIGxhc3QgdGllYnJlYWspLiBGb3IgZXhhbXBsZSwgZm9yIGFuIFRlblhPYmplY3Qgd2hvc2UgdGV4dCBjb250YWluczogJ2Nvbm5lY3Qgc3VjY2VzcyA9IHRydWUnLCB0aGUgdmFsdWUgJ3RydWUnIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgYSBwYXJ0IG9mIHRoZSBpbnN0YW5jZSdzIG1lc3NhZ2UsIGFzIGl0IGlzIG1vc3RseSBsaWtlbHkgdGhlIHJlc3VsdCBvZiBhIHZhcmlhYmxlIGJvb2xlYW4gc3RhdGUuIFRvIGxlYXJuIG1vcmUgc2VlIFtzeW1ib2xTZXF1ZW5jZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhPYmplY3Qrc3ltYm9sU2VxdWVuY2UpLiAoRGVmYXVsdDogW1wibnVsbFwiLFwibmlsXCIsXCJ0cnVlXCIsXCJmYWxzZVwiXSkiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0sCiAgICAgICAgICAiZGVmYXVsdCIgOiBbCiAgICAgICAgICAgICJudWxsIiwKICAgICAgICAgICAgIm5pbCIsCiAgICAgICAgICAgICJ0cnVlIiwKICAgICAgICAgICAgImZhbHNlIgogICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm1heE9yaWdpbnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIHNvdXJjZS9iaW5hcnkgb3JpZ2lucyB0byBsaXN0IHBlciBzeW1ib2xcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiBzb3VyY2UgY29kZS9iaW5hcnkgb3JpZ2lucyB0byBsaXN0IHBlciBzeW1ib2wgdG9rZW4gc2VxdWVuY2UuIEFzIGEgc2VyaWVzIG9mIHRva2VucyB3aXRoaW4gIGEgZ2l2ZW4gdGVtcGxhdGUgKGUuZy4sICdFUlJPUicsICdjb3VsZCBub3QgY29ubmVjdCB0byBcInt9JykgbWF5IGFwcGVhciAgaW4gbXVsdGlwbGUgc291cmNlL2JpbmFyeSBmaWxlcyB3aXRoaW4gdGhlIHBpcGVsaW5lJ3Mgc3ltYm9sIGZpbGVzLCB0aGUgc29ydGluZyBhbGdvcml0aG0gc2VsZWN0cyBbbWF4U3ltYm9sT3JpZ2luc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3N5bWJvbC8jc3ltYm9sbWF4b3JpZ2lucykgZm9yIGNvbXBhcmlzb24uIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDY0KSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiA2NAogICAgICAgIH0sCiAgICAgICAgImRlYnVnIiA6IHsKICAgICAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgICAib3JpZ2lucyIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBvZiBzb3VyY2Ugc2Nhbm5lZCBmaWxlIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBpbnB1dCBmaWxlIG5hbWVzIHdpdGhpbiB0aGUgbG9hZGVkIHN5bWJvbCBsaWJyYXJ5IChlLmcuLCAnbXkuc2NhbGEnLCAnZm9vLmphdmEnKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIG9uIGlmL2hvdyB0aGV5IHBhcnRpY2lwYXRlIGluIHNlbGVjdGluZyB0aGUgb3JpZ2luIG9mIGEgdGFyZ2V0IFRlblhUZW1wbGF0ZSBzeW1ib2wgc2VxdWVuY2UuIFRoaXMgb3B0aW9uIGhlbHBzIGRlYnVnIGhvdyB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gc2VsZWN0cyAgb3JpZ2luIHZhbHVlcyBmb3IgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gIFNwZWNpZnkgJyonIGZvciBhbGwgaW5wdXQgZmlsZXMuIiwKICAgICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzeW1ib2xzIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAiYXJyYXkiLAogICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhUZW1wbGF0ZSBzeW1ib2wgdmFsdWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb25cblxuTGlzdCBvZiBzeW1ib2wgdmFsdWVzIHN1Y2ggYXMgY2xhc3MgYW5kIG1ldGhvZCBuYW1lcyhlLmcuLCAnTXlDbGFzcycsICdmb28nKSBmb3Igd2hpY2ggdG8gbG9nIGluZm9ybWF0aW9uIG9uIGhvdyB0aGVpciBvcmlnaW4gaW5mb3JtYXRpb24gaXMgc2VsZWN0ZWQuIFRoaXMgb3B0aW9uIGhlbHBzIGRlYnVnIGhvdyB0aGUgW3N5bWJvbFNlcXVlbmNlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWE9iamVjdCtzeW1ib2xTZXF1ZW5jZSkgZnVuY3Rpb24gc2VsZWN0cyAgb3JpZ2luIHZhbHVlcyBmb3IgYSB0YXJnZXQgVGVuWFRlbXBsYXRlIHN5bWJvbCBzZXF1ZW5jZS4gIFNwZWNpZnkgJyonIGZvciBhbGwgc3ltYm9scy4iLAogICAgICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImxvZ2dlck5hbWUiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiRGVidWcgbG9nZ2VyIG5hbWVcblxuQ29udHJvbHMgdGhlIG5hbWUgb2YgdGhlIGxvZzRqIGxvZ2dlciB1c2VkIGJ5IFtkZWJ1Z09yaWdpbnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnb3JpZ2lucykgYW5kIFtkZWJ1Z1N5bWJvbHNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9zeW1ib2wvI3N5bWJvbGRlYnVnc3ltYm9scykuIChEZWZhdWx0OiBbY29uc29sZU91dF0oaHR0cHM6Ly9naXRodWIuY29tL2xvZy0xMHgvY29uZmlnL2Jsb2IvbWFpbi9sb2c0ajIueWFtbCNMNjYpKSIsCiAgICAgICAgICAgICAgImRlZmF1bHQiIDogIltjb25zb2xlT3V0XShodHRwczovL2dpdGh1Yi5jb20vbG9nLTEweC9jb25maWcvYmxvYi9tYWluL2xvZzRqMi55YW1sI0w2NikiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'run' symbol origin configuration
        
        # Identify the origin of symbol values within TenXTemplates.
        # To learn more see https://doc.log10x.com/run/transform/symbol/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Origin Options ==============================
        
        symbol:
        
          # 'maxOrigins' controls the number of source/binary origins to list 
          #  per symbol token sequence. As a series of tokens within 
          #  a target TenXTemplate (e.g., 'ERROR', 'could not connect to "{}') may appear 
          #  in multiple source/binary files within the pipeline's loaded library.
          #  The sorting algorithm configured below is used to select the 'maxSymbolOrigins' 
          #  topmost entries to list.
          maxOrigins: 64
          
          # 'sequenceReserved' defines a list of terms to ignore when searching
          #  for the symbol tokens that constitute an TenXTemplate's 'message' portion.
          #  For example, for an event whose text contains: 'connect success = true',
          #  the value 'true' will not be considered a part of the event's message,
          #  as the 'true' value is mostly likely the result of a variable boolean state.
          #  For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbolSequence
          sequenceReserved:
            # literals
            - "null"
            - "nil"
            - "true"
            - "false"
            # stopwords (articles, conjunctions, prepositions)
            - "a"
            - "an"
            - "the"
            - "to"
            - "of"
            - "in"
            - "on"
            - "at"
            - "by"
            - "for"
            - "from"
            - "with"
            - "and"
            - "or"
            - "as"
            - "is"
            # generic log words
            - "log"
            - "logger"
            - "logs"
            - "http"
            - "https"
            # severity levels, uppercase
            - TRACE
            - DEBUG
            - INFO
            - NOTICE
            - WARN
            - WARNING
            - ERROR
            - ERR
            - CRITICAL
            - CRIT
            - ALERT
            - EMERGENCY
            - EMERG
            - FATAL
            - PANIC
            # severity levels, lowercase (engine matching is case-sensitive).
            # Note. The token "error" is intentionally NOT reserved here.
            # Verification against 3254 demo events (2026-05-20) found 1280
            # signal hits where the "error" key carries the actual message
            # body the pattern groups; reserving it would collapse distinct
            # error patterns into one.
            # Note. The token "emergency" is also intentionally NOT reserved
            #, sample showed only prose hits, no envelope use observed.
            - "trace"
            - "debug"
            - "info"
            - "notice"
            - "warn"
            - "warning"
            - "err"
            - "critical"
            - "crit"
            - "alert"
            - "fatal"
            - "panic"
            # severity-equivalent envelope keys
            - "level"
            - "levelname"
            - "severity"
            # envelope time keys
            - "time"
            - "timestamp"
            - "ts"
            - "msg"
            - "message"
            # OpenTelemetry / collector envelope (these tokens leak from the
            # otelcol's Go-package logging into pattern names)
            - "otel"
            - "otelcol"
            - "opentelemetry"
            - "collector"
            - "contrib"
            - "processor"
            - "processors"
            - "receiver"
            - "receivers"
            - "exporter"
            - "exporters"
            - "pipeline"
            - "pipelines"
            # structured / envelope keys (singular + plural, engine matcher
            # is exact, no stem; both forms appear in real otel logs).
            # Note: "trace" is already reserved above under lowercase severity.
            - "service"
            - "services"
            - "instance"
            - "instances"
            - "component"
            - "components"
            - "signal"
            - "signals"
            - "resource"
            - "resources"
            - "scope"
            - "scopes"
            - "attribute"
            - "attributes"
            - "traces"
            - "span"
            - "spans"
            - "flag"
            - "flags"
            - "context"
            - "contexts"
            - "baggage"
            # K8s audit / Kubernetes API envelope (verified zero signal in
            # the 2026-05-20 sample, every occurrence was a JSON metadata
            # key or audit field)
            - "metadata"
            - "namespace"
            - "verb"
            - "uid"
            - "identity"
            - "protocol"
            - "priority"
            - "encoding"
            - "headers"
            - "duration"
            # HTTP / request envelope (verified safe, appear only as
            # klog field markers or JSON keys, not as message content)
            - "path"
            - "status"
            # generic identity keys (very common envelope tokens in JSON logs)
            - "id"
            - "name"
            - "kind"
            - "version"
            - "type"
            # source-location envelope (Go / Java / Python loggers leak these)
            - "caller"
            - "func"
            - "function"
            - "file"
            - "line"
            - "module"
            - "package"
            - "class"
            - "method"
            - "stack"
            - "stacktrace"
            # process / runtime context.
            # Note. The token "host" is intentionally NOT reserved, 1018 of
            # 1024 occurrences in the verification corpus were the content
            # phrase "no such host" inside DNS-failure messages; reserving
            # it would collapse every "no such host" pattern into one.
            # Note. The token "app" is intentionally NOT reserved, 42 of 44
            # occurrences were the Flask logger-name discriminator in
            # "INFO in app:" lines; reserving it would collapse Python-app
            # logger structure.
            - "pid"
            - "tid"
            - "process"
            - "thread"
            - "hostname"
            - "application"
            # package-qualifier prefixes (Go / Java loggers embed these in
            # source-path tokens like `com.foo.bar.MyLogger`)
            - "com"
            - "org"
            - "io"
            - "net"
            # tokenizer artifacts
            - "t"
        
          # ----------------------------- Debug Options -------------------------------
          
          debug:
         
            # 'symbol' debugging allows for verbose printing of the selection process
            #  for symbol tokens from the pipeline's 10x symbol files used to produce the
            #  results of 10x reflection functions.
            #  For more information, see: https://doc.log10x.com/api/js/#TenXObject+symbol
            
        
           # 'loggerName' controls the name of the log4j logger used by origins and symbols below
            loggerName: "symbolDebugger"
        
            # 'origins' outputs information about the origin selection process for an TenXTemplate symbol.
            #  For example, setting 'units' to 'foo.js' will output information about if/how it 
            #  was selected as the origin of TenXTemplate symbols.
            #  In other words, if a symbol (e.g., 'MyClass') has 'foo.java' as the source file
            #  from which it originated, adding 'foo.js' to 'units' will emit information
            #  about the selection process.
            #  Specifying '*' will emit information for all source /binary files that have
            #  been selected as the origin of any TenXTemplate objects within the pipeline.
            origins: [
            #  '*'
            ]
        
            # 'symbols' logs the origin selection process for symbol tokens within an TenXTemplate.
            #  For example, set 'symbols' to 'Could not connect to' to log how the 10x JavaScript 'symbolSequence' 
            #  determines the origin source code/binary file within the pipeline's symbol library. 
        
            #  Specifying '*' will emit information for all source code /binary files that have
            #  been selected as the origin of any TenXTemplate objects within the pipeline.
            symbols: [
            #  '*'
            ]
        ```

    === ":material-select-group: Group"

  
        #### group {.hidden-heading}
        Configure  the [Group sequencer](/run/transform/group "Group and sequence TenXObjects") to group and sequence TenXObjects.  
  
        Below is the default configuration from: [group/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/group/config.yaml "group/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/group/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml24-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml24-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml24-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Group sequencer Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml24-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/group/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/group/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/group/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/group/config.yaml">$TENX_CONFIG/run/transform/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/group/config.yaml">./pipelines/run/transform/group/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiZ3JvdXAiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgIm1heFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXggbnVtYmVyIG9mIG9iamVjdHMgdG8gcGxhY2UgaW4gYSBncm91cFxuXG5TZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvYmplY3RzIHRvIHBsYWNlIHVuZGVyIG9uZSBncm91cCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgZ3JvdXAuIFNldCAwIHRvIHVubGltaXRlZC4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMjAwMDApIiwKICAgICAgICAgICJkZWZhdWx0IiA6IDIwMDAwCiAgICAgICAgfSwKICAgICAgICAiZmx1c2hUaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJJbnRlcnZhbCB0byBmbHVzaCBhIHBlbmRpbmcgVGVuWE9iamVjdHMgZ3JvdXBcblxuU2V0cyB0aGUgbWF4IGludGVydmFsIGFmdGVyIHdoaWNoIHRvIGZsdXNoIHBlbmRpbmcgVGVuWE9iamVjdHMgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGEgdGltZW91dCBwZXJpb2QgdG8gZmx1c2ggdGhlIGN1cnJlbnQgZ3JvdXAgaGVhZCBhbmQgY29tcG9zZWQgIFRlblhPYmplY3RzIGludG8gdGhlIHBpcGVsaW5lIGZvciBhZ2dyZWdhdGlvbiwgZmlsdGVyaW5nLCBhbmQgZW5jb2RpbmcgdG8gb3V0cHV0LiAoRGVmYXVsdDogNXNlYykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjVzZWMiCiAgICAgICAgfSwKICAgICAgICAiZXhwcmVzc2lvbnMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkphdmFTY3JpcHQgZXhwcmVzc2lvbnMgVGVuWE9iamVjdCBpbnN0YW5jZS9ncm91cCBtdXN0IGV2YWx1YXRlIGFzIHRydXRoeSBhZ2FpbnN0IHRvIGJlIHNldCBhcyBncm91cCBoZWFkXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgSmF2YVNjcmlwdCBleHByZXNzaW9ucyB0aGF0IG11c3QgYWxsIGV2YWx1YXRlIGFzIHRydXRoeSBmb3IgdGhlIHRhcmdldCBUZW5YT2JqZWN0IHRvIGJlIGNsYXNzaWZpZWQgYXMgW2dyb3VwIGhlYWRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9ncm91cC8jZ3JvdXAtaGVhZHMpLiAgRm9yIGV4YW1wbGUsIHRoZSBbZ3JvdXAgaW5pdGlhbGl6ZXJdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2luaXRpYWxpemUvZ3JvdXAvKSBtb2R1bGUgY2FsY3VsYXRlcyBhIFtUZW54VGVtcGxhdGUgdmFyaWFibGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YVGVtcGxhdGUuc2V0KSB0byBkZXRlcm1pbmUgd2hldGhlciBpbnN0YW5jZXMgb2YgYSB0YXJnZXQgYFRlblhUZW1wbGF0ZWAgcmVwcmVzZW50IGdyb3VwIGhlYWRzIGJhc2VkIG9uIGEgbnVtYmVyIG9mIGhldXJpc3RpYyBpbmRpY2F0b3JzIGFuZCBzZXRzIHRoZSBjYWxjdWxhdGVkIGZpZWxkIG5hbWUgKGUuZy4sIGBHcm91cFRlbXBsYXRlLmlzR3JvdXBgKSBob2xkaW5nIHRoZSByZXN1bHRpbmcgdmFsdWUgaW50byB0aGlzIGFycmF5LiAgIFVzaW5nIFRlblhUZW1wbGF0ZSB2YXJpYWJsZXMgYWxsb3dzIGZvciBjb21wdXRpbmcgdGhpcyBzdGF0ZSBvbmNlIGZvciBhbGwgaW5zdGFuY2VzIG9mIGEgdGFyZ2V0IGV2ZW50LiIKICAgICAgICB9LAogICAgICAgICJmaWx0ZXJzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXZhU2NyaXB0IGV4cHJlc3Npb25zIFRlblhPYmplY3QgaW5zdGFuY2UvZ3JvdXAgbXVzdCBldmFsdWF0ZSBhcyB0cnV0aHkgYWdhaW5zdFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIEphdmFTY3JpcHQgZXhwcmVzc2lvbnMgdGhhdCBtdXN0IGFsbCBldmFsdWF0ZSBhcyB0cnV0aHkgZm9yIHRoZSB0YXJnZXQgb2JqZWN0L2dyb3VwIHRvIGJlIHBhcnQgb2YgYSBzZXF1ZW5jZSBhZ2dyZWdhdGVkL3dyaXR0ZW4gdG8gb3V0cHV0LiAgVG8gbGVhcm4gbW9yZSBzZWUgW2dyb3VwIGZpbHRlcnNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL3RyYW5zZm9ybS9ncm91cC8jZ3JvdXAtZmlsdGVycykuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiYXN5bmMiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiR3JvdXAgVGVuWE9iamVjdHMgaW4gYSBkZWRpY2F0ZWQgdGhyZWFkXG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHBlcmZvcm0gVGVuWE9iamVjdCBncm91cGluZyBsb2dpYyBpbiBhIGRlZGljYXRlZCB0aHJlYWQgKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9</template>

        ```yaml
        # 🔟❎ 'run' event grouping configuration
        
        # Group  sequences of TenXObjects to filter, aggregate and output as a single logical unit.
        # To learn more see https://doc.log10x.com/run/transform/group/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Group Options ===============================
        
        group:
        
          # 'filters' specify JavaScript expressions an TenXObject instance/group must 
          #  evaluate as truthy against to be written to output
          filters: []
        
          # 'maxSize' defines the maximum number of TenXObjects to group
          #  before the group is sealed and forwarded into the pipeline. 
          #  Subsequent TenXObjects can form a new group.
          maxSize: 20000
        
          # 'flushTimeout' defines the max interval (e.g., 10s) to wait for 
          #  new events to be read from an input stream before it flushes any
          #  pending TenXObjects group into the pipeline.
          #  This mechanism is designed to avoid latencies in dispatching pending event
          #  groups to output destinations.
          flushTimeout: $=parseDuration("5s")
        
          # 'async' specifies whether to sequence and group TenXObjects in a dedicated thread
          async: true 
        ```

    === ":octicons-cpu-24: Parallelize"

  
        #### parallelize {.hidden-heading}
        Configure  the [Parallel processor](/run/transform/parallelize "Distribute event parsing and transformation workloads across multiple cores.") to distribute event parsing and transformation workloads across multiple cores..  
  
        Below is the default configuration from: [parallelize/config.yaml](https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml "parallelize/config.yaml"){target="\_blank"}.  
  
        <div class="edit-options">
            <a class="md-button tenx-edit-online-button" data-tooltip="Edit online on github.dev" href="https://github.dev/log-10x/config/blob/main/pipelines/run/transform/parallelize/config.yaml" target="_blank" rel="noopener noreferrer">
                <span class="twemoji" style="margin-right: 0.3rem;">
                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                        <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path>
                    </svg>
                </span> Edit Online
            </a>
            <button class="md-button tenx-config.yaml25-edit-button" data-tooltip="Edit configuration file" data-dialog-id="config-yaml25-dialog">
                <span style="margin-right: 0.3rem;">
                    <span class="twemoji">
                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                            <path d="M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z"></path>
                        </svg>
                    </span>
                </span>Edit Locally
            </button>
        </div>
        
        <dialog id="config-yaml25-dialog" class="md-dialog md-dialog--editor">
            <div class="editor-dialog-wrapper">
                <div class="editor-dialog-header">
                    <span class="editor-dialog-title">Edit Parallel processor Config Locally</span>
                    <div class="editor-header-actions">
                        <button class="editor-toolbar-btn yaml-editor-locations" data-tooltip="Save">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-reset" data-tooltip="Reset to default">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.5 8c-2.65 0-5.05 1-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z"></path></svg>
                        </button>
                        <button class="editor-toolbar-btn yaml-editor-copy" data-tooltip="Copy to clipboard">
                            <svg class="icon-copy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path></svg>
                            <svg class="icon-check" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn yaml-editor-fullscreen" data-tooltip="Fullscreen">
                            <svg class="icon-maximize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M5,5H10V7H7V10H5V5M14,5H19V10H17V7H14V5M17,14H19V19H14V17H17V14M10,17V19H5V14H7V17H10Z"></path></svg>
                            <svg class="icon-minimize" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" style="display:none;"><path fill="currentColor" d="M5,16H8V19H10V14H5V16M14,14V19H16V16H19V14H14M16,5V8H19V10H14V5H16M10,5V10H5V8H8V5H10Z"></path></svg>
                        </button>
                        <span class="header-divider"></span>
                        <button class="editor-toolbar-btn editor-dialog-close" onclick="closeDialog('config-yaml25-dialog')" data-tooltip="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path></svg>
                        </button>
                    </div>
                </div>
                <div class="editor-dialog-content">
                    <div class="yaml-editor-container"></div>
                </div>
                <div class="yaml-editor-statusbar">
                    <span class="yaml-editor-status"></span>
                </div>
            </div>
            <!-- Locations Popup -->
            <div class="locations-popup" style="display: none;">
                <div class="locations-popup-content">
                    <div class="locations-popup-header">
                        <span class="locations-header-label">Download and save to:</span>
                        <button class="locations-popup-close" aria-label="Close">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
                                <path fill="currentColor" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
                            </svg>
                        </button>
                    </div>
                    <ul class="locations-list">
                        <li>
                            <span class="location-label">Linux / Docker / macOS
                                <span class="help-icon" data-tooltip="Default system location. The engine automatically reads configs from here at startup. Best for production deployments.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="default-path location-path" data-tooltip=""
                                    data-copy-osx="/etc/log10x/config/run/transform/parallelize/config.yaml"
                                    data-copy-nix="/etc/log10x/config/run/transform/parallelize/config.yaml"
                                    data-copy-win="C:\log10x\configs/run/transform/parallelize/config.yaml"></code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Custom directory
                                <span class="help-icon" data-tooltip="Set TENX_CONFIG environment variable to point to a custom config directory. Useful when you want configs in a non-standard location.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="$TENX_CONFIG/run/transform/parallelize/config.yaml">$TENX_CONFIG/run/transform/parallelize/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                        <li>
                            <span class="location-label">Within cloned repo
                                <span class="help-icon" data-tooltip="First run: git clone github.com/log-10x/config. Then save the file to this path within the cloned folder. Use for version control.">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="12" height="12"><path fill="currentColor" d="M11 18h2v-2h-2v2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8m0-14a4 4 0 0 0-4 4h2a2 2 0 0 1 2-2 2 2 0 0 1 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5a4 4 0 0 0-4-4Z"/></svg>
                                </span>
                            </span>
                            <div class="location-path-row">
                                <code class="location-path" data-tooltip="./pipelines/run/transform/parallelize/config.yaml">./pipelines/run/transform/parallelize/config.yaml</code>
                                <button class="copy-btn" data-tooltip="Copy path">
                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                        <path fill="currentColor" d="M19 21H8V7h11m0-2H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2m-3-4H4a2 2 0 0 0-2 2v14h2V3h12V1Z"></path>
                                    </svg>
                                </button>
                            </div>
                        </li>
                    </ul>
                    <div class="locations-popup-footer">
                        <button class="locations-download-btn" title="Download config file">
                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="14" height="14">
                                <path fill="currentColor" d="M5 20h14v-2H5v2m14-9h-4V3H9v8H5l7 7 7-7Z"></path>
                            </svg>
                            <span>Download</span>
                        </button>
                    </div>
                </div>
            </div>
        </dialog>
        
        <template class="tenx-config-schema" data-encoding="base64">ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAicGFyYWxsZWxFdmVudCIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAidGhyZWFkUG9vbFNpemUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHlcblxuQ29udHJvbHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIHRvIGFsbG9jYXRlIHRvIHRyYW5zZm9ybSBldmVudHMgaW50byBUZW5YT2JqZWN0cyBjb25jdXJyZW50bHkuIElmIHRoZSB2YWx1ZSBpcyAtICB8IFNldHRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsb2NhdGVkIFRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8IDptYXRlcmlhbC1lcXVhbDogKiowKiogICAgICAgICAgIHwgVHJhbnNmb3JtIGV2ZW50cyBpbnRvIFRlblhPYmplY3RzIHN5bmNocm9ub3VzbHkgdXNpbmcgdGhlaXIgaW5wdXQgc3RyZWFtIGNhbGxpbmcgdGhyZWFkICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtbGVzcy10aGFuOiAqKjEqKiAgICAgICB8IEludGVycHJldGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBjb3JlcyAoZS5nLiwgMC41ID0gdXNlIHVwIHRvIDUwJSBvZiBhdmFpbGFibGUgY29yZXMpIHwgfCA6bWF0ZXJpYWwtZXF1YWw6ICoqMSoqICAgICAgICAgICB8IEFsbG9jYXRlIGEgc2luZ2xlIGRlZGljYXRlZCB0byB0cmFuc2Zvcm0gZXZlbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA6bWF0ZXJpYWwtZ3JlYXRlci10aGFuOiAqKjEqKiAgICB8IEludGVycHJldGVkIGFzIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMgKGUuZy4sIDEwID0gMTAgdGhyZWFkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwiCiAgICAgICAgfSwKICAgICAgICAiYmF0Y2hTaXplIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgIm51bWJlciIsCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRvIHF1ZXVlIGZvciBjb25jdXJyZW50IHByb2Nlc3NpbmcgYmVmb3JlIGZsdXNoaW5nXG5cblNldHMgdGhlIG51bWJlciBvZiBldmVudHMgdG8gcXVldWUgYmVmb3JlIGZsdXNoaW5nIHRoZW0gdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgY2FsbGluZyBpbnB1dCdzIHRocmVhZC4gIElmIDAsIGZsdXNoIHBlbmRpbmcgZXZlbnRzIGFmdGVyIFtmbHVzaEludGVydmFsXShodHRwczovL2RvYy5sb2cxMHguY29tL3J1bi90cmFuc2Zvcm0vcGFyYWxsZWxpemUvI3BhcmFsbGVsZXZlbnRmbHVzaGludGVydmFsKSBleHBpcmVzIG9yIHRoZSBzb3VyY2UgaW5wdXQgcmVhY2hlcyBlbmQtb2YtZmlsZS4gKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSAoRGVmYXVsdDogMTAwMCkiLAogICAgICAgICAgImRlZmF1bHQiIDogMTAwMAogICAgICAgIH0sCiAgICAgICAgImZsdXNoSW50ZXJ2YWwiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk1heGltdW0gd2FpdCBkdXJhdGlvbiBiZWZvcmUgZmx1c2hpbmcgcXVldWVkIGV2ZW50c1xuXG5TZXRzIGFuIGludGVydmFsIHBlcmlvZCBmb3IgKGUuZy4gJzJzKSBiZWZvcmUgZmx1c2hpbmcgcGVuZGluZyBldmVudHMgdG8gdHJhbnNmb3JtIGludG8gVGVuWE9iamVjdHMuIElmIFt0aHJlYWRQb29sU2l6ZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vdHJhbnNmb3JtL3BhcmFsbGVsaXplLyNwYXJhbGxlbGV2ZW50dGhyZWFkcG9vbHNpemUpIGlzIDEsIHRoaXMgdmFsdWUgaXMgdW51c2VkLCBhbmQgZXZlbnRzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIFRlblhPYmplY3Qgc3luY2hyb25vdXNseSAgdG8gdGhlaXIgaW5wdXQgdGhyZWFkLiBJZiAwLCBubyB3YWl0IGZsdXNoIGludGVydmFsIGlzIGFwcGxpZWQuIChEZWZhdWx0OiAycykiLAogICAgICAgICAgImRlZmF1bHQiIDogIjJzIgogICAgICAgIH0sCiAgICAgICAgInByb2Nlc3NpbmdUaW1lb3V0IiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIHdhaXQgZHVyYXRpb24gYmVmb3JlIGRyb3BwaW5nIHVuLXByb2Nlc3NlZCBxdWV1ZWQgZXZlbnRzXG5cblNldHMgYSB0aW1lb3V0IHBlcmlvZCAoZS5nLiwgJzMwcycpLCBhZnRlciB3aGljaCB0byBkcm9wIHF1ZXVlZCBldmVudHMuIFRoaXMgdmFsdWUgcHJvdmlkZXMgYSBiYWNrc3RvcCBmb3Igb3ZlcmZsb3dpbmcgdGhlIGhlYXAgaWYgdGhlIHBpcGVsaW5lIGNhbm5vdCBkZXF1ZXVlICBwZW5kaW5nIGV2ZW50cyB0byB0cmFuc2Zvcm0gaW50byBUZW5YT2JqZWN0LiBJZiAwLCBubyB0aW1lb3V0IGlzIGFwcGxpZWQuIChEZWZhdWx0OiAzMHMpIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICIzMHMiCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==</template>

        ```yaml
        # 🔟❎ 'run' event parallel processing configuration
        
        # Transform log/trace events read from inputs into well-defined TenXObjects using multiple cores.
        # To learn more see https://doc.log10x.com/run/transform/parallelize/
        
        # Set the 10x pipeline to 'run'
        tenx: run
        
        # =============================== Parallel Options ============================
        
        parallelEvent:
          
          # 'threadPoolSize' specifies the number of threads allocated to transform events into TenXObjects concurrently.
          #  If the value is -
          #  - = 0: transform events into TenXObjects synchronously using their input stream calling thread.
          #  - < 1: interpreted as a percentage of the number of available cores (e.g., 0.5 = use up to 50% of available cores)
          #  - = 1: allocate a single dedicated to transform events.
          #  - > 1: interpreted as a fixed number of threads (e.g., 10 = 10 threads)
          threadPoolSize: "0.5"
        
          # 'batchSize' specifies the maximum number of events to queue for concurrent processing before flushing.
          #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
          #  to their calling input's thread.  If 0, flush pending events after 'flushInterval' expires or the
          #  source input reaches end-of-file.
          batchSize: 1000
        
          # 'flushInterval'  specifies the maximum wait duration before flushing queued events 
          #  If 'threadPoolSize' is 1, this value is unused, and events are transformed into TenXObject synchronously 
          #  to their input thread. If 0, no wait flush interval is applied. 
          flushInterval: 2s
        
          # 'processingTimeout' specifies the maximum wait duration before dropping un-processed queued events 
          #  This value provides a backstop for overflowing the heap if the pipeline cannot dequeue 
          #  pending events to transform into TenXObjects. If 0, no timeout is applied.
          processingTimeout: 30s
        ```

<br/>:material-github: This app is defined in [reporter/app.yaml](https://github.com/log-10x/modules/tree/main/pipelines/reporter/app.yaml "reporter/app.yaml"){target="\_blank"}.

