Core engine
The shared runtime used by Community Scripts repositories.
core is the shared Bash engine, not an application-script collection. It is
loaded by scripts in ProxmoxVE,
DevScripts, and
Incus. Those repositories describe
the application; Core supplies the loading, UI, host backend, container bootstrap,
error handling, telemetry, and common helper library.
The current engine is organised by responsibility rather than by the former large
*.func bundles:
| Area | Entry point | Responsibility |
|---|---|---|
| Loading | core/build.func | Resolves both source roots, prefetches Core, selects a platform backend |
| Runtime | core/core.func | Output, prompts, logs, update entrypoint, utility functions |
| UI | ui/build-ui.func | Default/advanced/settings flow and input validation |
| In-container runtime | lxc/install.func | Bootstrap on every supported distribution, including Alpine |
| Install helpers | lib/tools.func | Package, runtime, database, release, and hardware helpers |
| Platform backend | pve/ or incus/ | Host-specific container and VM creation |
| Telemetry | api/api.func | One terminal event per run and diagnostics payloads |
Source only the loader appropriate to the execution context. A script starts at
core/build.func; an install script receives its prepared runtime through
FUNCTIONS_FILE_PATH; helpers are loaded by that bootstrap. Individual Core parts
are implementation files, not stable copy-and-paste import targets.
Splitting by responsibility replaced a smaller number of large *.func bundles.
A smaller, single-purpose file is easier to review and test in isolation, and it
keeps the CI check meaningful: each loader's manifest (API.txt) is diffed
against the functions it actually exposes, which is only a useful check when a
loader's surface is small enough that an unintended change stands out.
core/build.func also resolves two independent source roots—the engine
(Core itself) and the script (the repository that supplied the running
script)—rather than one. Keeping them separate is what lets a forked
application script run against released Core, and a Core branch be tested
against released scripts, without touching the other side. See
Loading and source roots.
The Core repository documentation is the canonical, versioned source for engine behaviour. The pages in this section explain its public contracts and how the projects fit together.