Skip to main content

Configuration reference

Generated from the configuration schema and the loader's environment override table. Defaults below are parsed from an empty configuration, before edition presets, user values and environment overrides. Nested defaults account for parent prefaults (the app port is 3100).

TIMON_HOME selects the data directory; it is not a schema field. A dash means no direct bootstrap environment override is declared for that field. Registry settings use their own names as environment keys. The installation-directory default is described rather than copied: it is wherever the running daemon's code lives, so a packaged install needs no value.

KeyTypeDefaultDescriptionEnvironment
version11Configuration schema version.—
profile"linux-desktop" | "linux-server" | "macos" | "windows""linux-desktop"Host platform profile.—
edition"expert" | "lite""expert"Requested edition; the effective edition remains constrained by the licence.—
workspacesRootstringNot setWorking folder of the agents created during onboarding; when unset, they use the workspace folder inside the Timon home.—
daemonobjectSee child fieldsDaemon process and listener configuration.—
daemon.listenobjectSee child fieldsNetwork listener configuration.—
daemon.listen.hoststring"127.0.0.1"Listener address; use loopback for local-only access.—
daemon.listen.portinteger3000TCP listening port.PORT
daemon.listen.extraHostsstring[][]Unauthenticated extra listener addresses, for a container bridge only (e.g. 172.17.0.1).—
daemon.installDirstringDirectory of the running daemon's codeAbsolute orchestrator installation directory; defaults to where this daemon's own code lives.TIMON_INSTALL_DIR
daemon.supervisor"systemd-user" | "launchd" | "windows" | "none""systemd-user"Operating-system supervisor responsible for the daemon.—
daemon.heapMbinteger4096Maximum Node heap size in MiB.—
daemon.auth"auto" | "required" | "off""auto"Daemon authentication mode; auto requires authentication as soon as the daemon or the web app listens off loopback, or behind a TLS proxy.—
daemon.trustedProxiesstring[][]Peer addresses trusted to supply forwarded client addresses.—
daemon.behindTlsProxybooleanfalseForce secure session cookies when HTTPS terminates at a reverse proxy.—
hostobjectSee child fieldsHost capabilities and binary configuration.—
host.docker"auto" | "required" | "disabled""auto"Container capability policy.—
host.traefikbooleantrueWhether a Traefik deployment is available.—
host.gui"auto" | "disabled""auto"Native graphical integration policy.—
host.binariesobjectBinary names mapped to absolute paths; null uses PATH discovery.—
host.isolationobjectSee child fieldsRequested mission filesystem restrictions.—
host.isolation.filesystem"auto" | "off""auto"Requested mission filesystem confinement mode; availability depends on the host launcher.—
host.isolation.denystring[][]Additional paths requested to be hidden from missions.—
host.isolation.readOnlystring[][]Paths requested to remain visible but read-only.—
host.isolation.allowstring[][]Paths exempted from filesystem masking.—
host.isolation.runAsstring | nullnullReserved OS-account isolation option; non-null values are currently refused by the runtime.—
host.isolation.egressobjectSee child fieldsOutbound network proxy offered to missions.—
host.isolation.egress.mode"log" | "off""off"Outbound proxy for missions: off (no proxy, no connection journal, the default), or log each connection per mission without blocking.—
host.isolation.egress.hoststring"127.0.0.1"Loopback address the egress proxy listens on.—
host.isolation.egress.portinteger0Egress proxy port; 0 lets the system choose a free one.—
appobjectSee child fieldsWeb app served as a daemon-managed child process.—
app.enabledbooleanfalseWhether this feature is enabled.TIMON_APP_ENABLED
app.listenobjectSee child fieldsNetwork listener configuration.—
app.listen.hoststring"127.0.0.1"Listener address; use loopback for local-only access.—
app.listen.portinteger3100TCP listening port.TIMON_APP_PORT
app.publicUrlstring"http://timon.localhost"Public URL through which users reach the web app.—
modulesobjectBundled module IDs mapped to enabled state or module-specific options.—
pluginsobjectThird-party manifest IDs mapped to enabled state or plugin options; absent installed plugins are enabled.—
developerobjectSee child fieldsDeveloper-mode preferences.—
developer.unsignedPluginsbooleanNot setAllows unsigned plugins when true; requires a valid licence. Unset refuses them.—
pluginPolicyobjectSee child fieldsOperator ceilings on third-party plugin capabilities.—
pluginPolicy.spawnobjectSee child fieldsApproval and rate limits for plugin mission spawning.—
pluginPolicy.spawn.maxinteger5Maximum missions one plugin may spawn in a window; zero denies spawning.—
pluginPolicy.spawn.windowMsinteger3600000Time window in milliseconds.—
pluginPolicy.spawn.approvedstring[][]Plugin IDs explicitly approved to spawn missions.—
pluginPolicy.spawn.autoApproveSignedbooleantrueApprove signed and built-in plugins that declare missions:spawn without listing them in approved.—
pluginPolicy.spawn.deniedstring[][]Plugin IDs refused mission spawning, even when signed or listed in approved.—
pluginPolicy.execobjectSee child fieldsAllowed binaries for plugin host execution; built-in denials still apply.—
pluginPolicy.exec.allowstring[][]Operator allowlist; an empty list refuses access.—
pluginPolicy.kanbanobjectSee child fieldsOperator grants for plugin access to the Kanban.—
pluginPolicy.kanban.projectsobjectPlugin ID to the project slugs its jobs may read tasks of; an absent plugin reads none.—
pluginPolicy.httpobjectSee child fieldsAllowed outbound hostnames; a wildcard covers subdomains only.—
pluginPolicy.http.allowstring[][]Operator allowlist; an empty list refuses access.—
pluginPolicy.http.byPluginobjectPlugin ID to the hostnames that plugin alone may reach, on top of the shared allowlist.—
pluginPolicy.http.connectionApproval"admin" | "owner""admin"Who approves the destination of a user's plugin connection: an administrator, or its owner.—
authThrottleobjectSee child fieldsCredential endpoint back-off and lockout policy.—
authThrottle.enabledbooleantrueWhether this feature is enabled.—
authThrottle.maxAttemptsinteger5Failed credential attempts allowed before lockout.—
authThrottle.windowMsinteger900000Time window in milliseconds.—
authThrottle.lockoutMsinteger60000Initial credential lockout duration in milliseconds.—
authThrottle.maxLockoutMsinteger3600000Maximum credential lockout duration in milliseconds.—
authThrottle.trustProxybooleanfalseUse forwarded client addresses for throttling only behind a proxy that rewrites them.—
secretsobjectSee child fieldsSecret injection and master-key storage preferences.—
secrets.inheritEnvbooleanfalseAllow missions to inherit the daemon environment instead of the restricted system and granted-secret set.—
secrets.keyring"auto" | "off""auto"Store the vault master key in an available OS keyring, or use the local key file.—
uiobjectSee child fieldsInstance UI visibility and home preferences.—
ui.hiddenstring[][]UI zone identifiers hidden by instance configuration.—
ui.home"cockpit" | "chat" | "kanban""cockpit"Initial application destination.—
settingsobjectRegistry overrides keyed by setting name; environment overrides still take precedence.Same key as each registry setting

Record-valued fields accept arbitrary keys within their declared value type. Module and plugin entries accept a boolean, "auto", or an options object with optional enabled; registry values accept strings, numbers and booleans. See Configuration for precedence and safe installation examples.