---
icon: material/folder-search-outline
---

# Paths

The 10x Engine loads files from two directory types:

| Directory | Contents | Example |
|-----------|----------|---------|
| **Modules** | [Pipeline](/engine/pipeline/), [module](/engine/module/), and [app](/apps/) definitions shipped with the engine | `pipelines/run/modules/input/` |
| **Config** | User [configuration](/config/) that customizes behavior | `config/log4j2.yaml` |

This separation (similar to Helm charts vs. values files) allows engine updates without overwriting user configuration.

## :material-map-marker-path: Path Resolution

The engine searches for these directories using the following resolution order:

<div style="text-align: center;">

```mermaid
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#101519', 'primaryTextColor': '#fff', 'primaryBorderColor': '#272d33', 'lineColor': '#4ade80', 'background': '#01080f'}}}%%
flowchart LR
    START(("🚀"))
    INCLUDE["TENX_INCLUDE_PATHS"]
    MODULES["TENX_MODULES"]
    CONFIG["TENX_CONFIG"]
    HOME["TENX_HOME"]
    WORKDIR["Working Directory"]
    OSDEFAULT["OS Defaults"]
    DONE(("✓"))

    START --> INCLUDE
    INCLUDE -->|set| DONE
    INCLUDE -->|not set| MODULES
    MODULES --> CONFIG
    CONFIG -->|both set| DONE
    CONFIG -->|missing| HOME
    HOME -->|found| DONE
    HOME -->|not set| WORKDIR
    WORKDIR -->|"pipelines/ found"| DONE
    WORKDIR -->|not found| OSDEFAULT
    OSDEFAULT --> DONE

    classDef default fill:#101519,stroke:#272d33,color:#fff,stroke-width:1px,rx:8,ry:8
    classDef override fill:#06b6d4,stroke:#0891b2,color:#fff,stroke-width:2px
    classDef envvar fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:2px
    classDef home fill:#10b981,stroke:#059669,color:#fff,stroke-width:2px
    classDef workdir fill:#f59e0b,stroke:#d97706,color:#000,stroke-width:2px
    classDef osdefault fill:#8b5cf6,stroke:#7c3aed,color:#fff,stroke-width:2px
    classDef endpoint fill:#059669,stroke:#047857,color:#fff,stroke-width:2px

    class INCLUDE override
    class MODULES,CONFIG envvar
    class HOME home
    class WORKDIR workdir
    class OSDEFAULT osdefault
    class START,DONE endpoint
```

</div>

<div class="diagram-controls">
    <button class="md-button md-button--primary enlarge-diagram" onclick="enlargeDiagram(this, `flowchart LR
    START((&quot;🚀&quot;))
    INCLUDE[&quot;TENX_INCLUDE_PATHS&quot;]
    MODULES[&quot;TENX_MODULES&quot;]
    CONFIG[&quot;TENX_CONFIG&quot;]
    HOME[&quot;TENX_HOME&quot;]
    WORKDIR[&quot;Working Directory&quot;]
    OSDEFAULT[&quot;OS Defaults&quot;]
    DONE((&quot;✓&quot;))

    START --&gt; INCLUDE
    INCLUDE --&gt;|set| DONE
    INCLUDE --&gt;|not set| MODULES
    MODULES --&gt; CONFIG
    CONFIG --&gt;|both set| DONE
    CONFIG --&gt;|missing| HOME
    HOME --&gt;|found| DONE
    HOME --&gt;|not set| WORKDIR
    WORKDIR --&gt;|&quot;pipelines/ found&quot;| DONE
    WORKDIR --&gt;|not found| OSDEFAULT
    OSDEFAULT --&gt; DONE

    classDef default fill:#101519,stroke:#272d33,color:#fff,stroke-width:1px,rx:8,ry:8
    classDef override fill:#06b6d4,stroke:#0891b2,color:#fff,stroke-width:2px
    classDef envvar fill:#6366f1,stroke:#4f46e5,color:#fff,stroke-width:2px
    classDef home fill:#10b981,stroke:#059669,color:#fff,stroke-width:2px
    classDef workdir fill:#f59e0b,stroke:#d97706,color:#000,stroke-width:2px
    classDef osdefault fill:#8b5cf6,stroke:#7c3aed,color:#fff,stroke-width:2px
    classDef endpoint fill:#059669,stroke:#047857,color:#fff,stroke-width:2px

    class INCLUDE override
    class MODULES,CONFIG envvar
    class HOME home
    class WORKDIR workdir
    class OSDEFAULT osdefault
    class START,DONE endpoint`)">
        <span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"><path d="M15 3l2.3 2.3-2.9 2.9 1.4 1.4 2.9-2.9L21 9V3h-6zM3 9l2.3-2.3 2.9 2.9 1.4-1.4-2.9-2.9L9 3H3v6zm6 12l-2.3-2.3 2.9-2.9-1.4-1.4-2.9 2.9L3 15v6h6zm12-6l-2.3 2.3-2.9-2.9-1.4 1.4 2.9 2.9L15 21h6v-6z"/></svg></span>
        Enlarge
    </button>
</div>

Locations are checked in order of priority (first match wins):

| Source | Description |
|--------|-------------|
| `TENX_INCLUDE_PATHS` | Explicit semicolon-separated list of paths - overrides all other resolution |
| `TENX_MODULES` + `TENX_CONFIG` | Checked independently: [modules](../engine/module/) for `$TENX_MODULES/pipelines` + `$TENX_MODULES/apps`, [config](../run/bootstrap/#config) for `$TENX_CONFIG/pipelines`. If either is missing, continue to next priority |
| `TENX_HOME` | Checks for modules at `$TENX_HOME/lib/app/modules` or `$TENX_HOME/modules/`, and config at `$TENX_HOME/config/` |
| Working Directory | Checks for modules at `$PWD/pipelines/` or `$PWD/modules/`, and config at `$PWD/config/` |
| OS Defaults | Checked in order (first match wins):<br>**Linux:**<br>modules: `/opt/tenx-edge/lib/app/modules` or `/opt/tenx-cloud/lib/app/modules`<br>config: `/etc/tenx/config`<br>**Windows:**<br>modules: `%ProgramFiles%\TenX\lib\app\modules` or `%LOCALAPPDATA%\TenX\lib\app\modules`<br>config: `%ProgramData%\TenX\config` or `%LOCALAPPDATA%\TenX\config` |

## :material-file-document-outline: Log File Location

The engine writes its own logs to `/var/log/tenx/tenx.log`, or to `TENX_LOG_PATH` when set. See [Logging](../manage/logging.md) for the appender, rotation, and `log4j2.yaml` defaults.
