Bootstrap
Authenticates the log10x account, validates launch arguments, and starts the specified pipeline (run, compile).
Config Files
To configure the Pipeline Bootstrapper unit, Edit these files:
Run
Run
Launch a run pipeline to report, receive and optimize log/trace events in edge and cloud environments.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.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: []
Compile
Compile
Launch a compile pipeline to scan source code and binary files to generate symbol unit and library files.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ compile bootstrap configuration
# This config file specifies bootstrap options for the compile pipeline.
# To learn more see https://doc.log10x.com/compile/bootstrap
# To learn more see https://doc.log10x.com/config/
tenx: compile
# =============================== 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).
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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.com/api/v1/write
# specifies a list of launch arguments that are disallowed from either command line or user config files.
disabledArgs: []
Options
Specify the options below to configure the Pipeline Bootstrapper:
| Name | Description |
|---|---|
| tenx | Name of pipeline to execute |
| licenseFile | Path to a file containing the 10x license JWT |
| licenseKey | 10x license JWT (inline) |
| airgapped | Run without contacting the 10x service |
| metricEndpoint | 10x service Prometheus metrics endpoint |
| runtimeName | Name to report to the 10x service endpoint for this runtime instance |
| runtimeAttributes | List of attributes to add to all metrics reporting |
| includePaths | Pipeline include folders |
| jarFiles | Jar files to load |
| quiet | Disable printing binary version information to the console |
| disabledArgs | Limit argument values that can be set by users |
| debugEnvVars | List environment variables to debug |
tenx
Name of pipeline to execute.
| Type | Required | Names |
|---|---|---|
| String | ✔ | [tenx, pipeline] |
Target pipeline to execute.
For example, to specify the run pipeline and a YAML config file containing launch arguments, use:
The YAML file may specify the pipeline name via a 'tenx' entry, allowing the 'pipeline' argument to be omitted from the command line.
For example (my.yaml):
Allows for launching the run pipeline via:
licenseFile
Path to a file containing the 10x license JWT.
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseFile, TENX_LICENSE_FILE] |
Path to a file containing the signed 10x license JWT.
Preferred over licenseKey for production: the token is not visible in ps output and is easy to rotate by replacing the file.
Download a license from your account.
If both licenseFile and licenseKey are provided, the file wins.
licenseKey
10x license JWT (inline).
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseKey, TENX_LICENSE_KEY] |
The signed 10x license JWT, passed inline.
Discouraged on the command line because the value is visible in ps output; prefer licenseFile in production.
Download a license from your account.
airgapped
Run without contacting the 10x service.
| Type | Default | Names |
|---|---|---|
| Boolean | false | [airgapped, TENX_AIRGAPPED] |
When true, the license is verified locally (signature + claims) and no calls are made to the 10x service —
no startup validation, no metrics reporting, no user-attribute enrichment. Suitable for fully airgapped deployments
where the engine has no path to the vendor SaaS.
When false (default), the engine additionally validates the license against the 10x service at startup; a non-2xx response refuses to start.
demo and limited license types cannot run airgapped — if airgapped: true is set with one of these license types, a warning is logged and the engine runs in online mode anyway.
metricEndpoint
10x service Prometheus metrics endpoint.
| Type | Default |
|---|---|
| String | https://prometheus.log10x.com/api/v1/write |
Specifies the address of the Prometheus remote write endpoint to write pipeline usage and health metrics.
This argument is only settable in the 10x 'on-premises' build.
runtimeName
Name to report to the 10x service endpoint for this runtime instance.
| Type | Default |
|---|---|
| String | "" |
Specifies a logical name used as a tag value for pipeline metrics.
This value identifies instances of the 10x run/compile pipelines
when reporting to the 10x service. For example, for a 10x Receiver with optimization enabled for Fluent Bit forwarders collecting events from a broker user-app,
this value can be set to: receive_fluentbit_broker.
runtimeAttributes
List of attributes to add to all metrics reporting.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of key-value pairs in the format key:value to be added as tags to pipeline metrics reported to the 10x service.
These tags enable finer-grained filtering and analysis in monitoring systems like Prometheus.
Multiple attributes can be combined into a single string using a semicolon (;), e.g., key1:val1;key2:val2.
If a key does not start with tenx_, the prefix tenx_ is automatically prepended to ensure consistency in tag naming conventions. For example, a provided attribute app:my-app will be reported as tenx_app:my-app
includePaths
Pipeline include folders.
| Type | Default |
|---|---|
| List | [working directory of current process] |
Specifies folders on disk for resoling relative references within include directives.
jarFiles
Jar files to load.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of .jar files to load into the host JVM for use by compile, input and output API extensions.
This argument is not supported in the edge runtime flavor.
quiet
Disable printing binary version information to the console.
| Type | Default |
|---|---|
| Boolean | false |
Disable printing build/version information to the console upon launch.
disabledArgs
Limit argument values that can be set by users.
| Type | Default |
|---|---|
| List | [] |
specifies a list of launch arguments that are disallowed from either command line or user config files. This argument provides a method of limiting the target pipeline, source and and command line settable by the user.
This mechanism enables pipeline launchers such as the Quarkus launcher to limit user input received via REST requests to a target subset of 'safe' arguments.
For example, adding procOutCommand to this list ensures that no external process outputs can be launched by the runtime.
An optional regex pattern can limit arguments to a certain subset of values in the form of: <arg-name>[:pattern] (e.g., specific process names).
Multiple patterns can be specified per argument.
Matching the source argument determines which source locations to inspect (e.g., folders, files, GitHub repos).
For example, an admin may place .yaml config files containing preset Fluent Bit outputs in /etc/log10x/,
excluding their enclosed arguments from limits set by this list, while disallowing users to directly set them via the command-line
or by sourcing them from their local/GitHub config files (see example below).
To limit:
The target pipeline (e.g., run, compile):
Target arguments (e.g., process outputs):
- "procOutCommand:^fluent-bit$" # limit to Fluent Bit only
# - procOutArgs: <specify-regex> # further limit args for Fluent Bit
Control which argument sources to inspect:
- "source:^github.*" # inspect of all arguments sourced from GitHub against this list
- "source:^(?!/etc/log10x/).*" # inspect of all arguments sourced from config files NOT contained in: /etc/log10x/
debugEnvVars
List environment variables to debug.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of env var names for which to log information relating to how they are resolved.
For example, the following call: L1Env.get("myVar", "myDefault") can be resolved from a number of sources
ranging from launch arguments, to OS/JVM properties and a default value (e.g., myDefault).
Setting this value to myVar will log INFO level information detailing how the value of the myVar was resolved.
This unit is defined in bootstrap/unit.yaml.
Config Files
To configure the Pipeline Bootstrapper unit, Edit these files:
Run
Run
Launch a run pipeline to report, receive and optimize log/trace events in edge and cloud environments.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.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: []
Compile
Compile
Launch a compile pipeline to scan source code and binary files to generate symbol unit and library files.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ compile bootstrap configuration
# This config file specifies bootstrap options for the compile pipeline.
# To learn more see https://doc.log10x.com/compile/bootstrap
# To learn more see https://doc.log10x.com/config/
tenx: compile
# =============================== 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).
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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.com/api/v1/write
# specifies a list of launch arguments that are disallowed from either command line or user config files.
disabledArgs: []
Options
Specify the options below to configure the Pipeline Bootstrapper:
| Name | Description |
|---|---|
| tenx | Name of pipeline to execute |
| licenseFile | Path to a file containing the 10x license JWT |
| licenseKey | 10x license JWT (inline) |
| airgapped | Run without contacting the 10x service |
| metricEndpoint | 10x service Prometheus metrics endpoint |
| runtimeName | Name to report to the 10x service endpoint for this runtime instance |
| runtimeAttributes | List of attributes to add to all metrics reporting |
| includePaths | Pipeline include folders |
| jarFiles | Jar files to load |
| quiet | Disable printing binary version information to the console |
| disabledArgs | Limit argument values that can be set by users |
| debugEnvVars | List environment variables to debug |
tenx
Name of pipeline to execute.
| Type | Required | Names |
|---|---|---|
| String | ✔ | [tenx, pipeline] |
Target pipeline to execute.
For example, to specify the run pipeline and a YAML config file containing launch arguments, use:
The YAML file may specify the pipeline name via a 'tenx' entry, allowing the 'pipeline' argument to be omitted from the command line.
For example (my.yaml):
Allows for launching the run pipeline via:
licenseFile
Path to a file containing the 10x license JWT.
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseFile, TENX_LICENSE_FILE] |
Path to a file containing the signed 10x license JWT.
Preferred over licenseKey for production: the token is not visible in ps output and is easy to rotate by replacing the file.
Download a license from your account.
If both licenseFile and licenseKey are provided, the file wins.
licenseKey
10x license JWT (inline).
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseKey, TENX_LICENSE_KEY] |
The signed 10x license JWT, passed inline.
Discouraged on the command line because the value is visible in ps output; prefer licenseFile in production.
Download a license from your account.
airgapped
Run without contacting the 10x service.
| Type | Default | Names |
|---|---|---|
| Boolean | false | [airgapped, TENX_AIRGAPPED] |
When true, the license is verified locally (signature + claims) and no calls are made to the 10x service —
no startup validation, no metrics reporting, no user-attribute enrichment. Suitable for fully airgapped deployments
where the engine has no path to the vendor SaaS.
When false (default), the engine additionally validates the license against the 10x service at startup; a non-2xx response refuses to start.
demo and limited license types cannot run airgapped — if airgapped: true is set with one of these license types, a warning is logged and the engine runs in online mode anyway.
metricEndpoint
10x service Prometheus metrics endpoint.
| Type | Default |
|---|---|
| String | https://prometheus.log10x.com/api/v1/write |
Specifies the address of the Prometheus remote write endpoint to write pipeline usage and health metrics.
This argument is only settable in the 10x 'on-premises' build.
runtimeName
Name to report to the 10x service endpoint for this runtime instance.
| Type | Default |
|---|---|
| String | "" |
Specifies a logical name used as a tag value for pipeline metrics.
This value identifies instances of the 10x run/compile pipelines
when reporting to the 10x service. For example, for a 10x Receiver with optimization enabled for Fluent Bit forwarders collecting events from a broker user-app,
this value can be set to: receive_fluentbit_broker.
runtimeAttributes
List of attributes to add to all metrics reporting.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of key-value pairs in the format key:value to be added as tags to pipeline metrics reported to the 10x service.
These tags enable finer-grained filtering and analysis in monitoring systems like Prometheus.
Multiple attributes can be combined into a single string using a semicolon (;), e.g., key1:val1;key2:val2.
If a key does not start with tenx_, the prefix tenx_ is automatically prepended to ensure consistency in tag naming conventions. For example, a provided attribute app:my-app will be reported as tenx_app:my-app
includePaths
Pipeline include folders.
| Type | Default |
|---|---|
| List | [working directory of current process] |
Specifies folders on disk for resoling relative references within include directives.
jarFiles
Jar files to load.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of .jar files to load into the host JVM for use by compile, input and output API extensions.
This argument is not supported in the edge runtime flavor.
quiet
Disable printing binary version information to the console.
| Type | Default |
|---|---|
| Boolean | false |
Disable printing build/version information to the console upon launch.
disabledArgs
Limit argument values that can be set by users.
| Type | Default |
|---|---|
| List | [] |
specifies a list of launch arguments that are disallowed from either command line or user config files. This argument provides a method of limiting the target pipeline, source and and command line settable by the user.
This mechanism enables pipeline launchers such as the Quarkus launcher to limit user input received via REST requests to a target subset of 'safe' arguments.
For example, adding procOutCommand to this list ensures that no external process outputs can be launched by the runtime.
An optional regex pattern can limit arguments to a certain subset of values in the form of: <arg-name>[:pattern] (e.g., specific process names).
Multiple patterns can be specified per argument.
Matching the source argument determines which source locations to inspect (e.g., folders, files, GitHub repos).
For example, an admin may place .yaml config files containing preset Fluent Bit outputs in /etc/log10x/,
excluding their enclosed arguments from limits set by this list, while disallowing users to directly set them via the command-line
or by sourcing them from their local/GitHub config files (see example below).
To limit:
The target pipeline (e.g., run, compile):
Target arguments (e.g., process outputs):
- "procOutCommand:^fluent-bit$" # limit to Fluent Bit only
# - procOutArgs: <specify-regex> # further limit args for Fluent Bit
Control which argument sources to inspect:
- "source:^github.*" # inspect of all arguments sourced from GitHub against this list
- "source:^(?!/etc/log10x/).*" # inspect of all arguments sourced from config files NOT contained in: /etc/log10x/
debugEnvVars
List environment variables to debug.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of env var names for which to log information relating to how they are resolved.
For example, the following call: L1Env.get("myVar", "myDefault") can be resolved from a number of sources
ranging from launch arguments, to OS/JVM properties and a default value (e.g., myDefault).
Setting this value to myVar will log INFO level information detailing how the value of the myVar was resolved.
This unit is defined in bootstrap/unit.yaml.
Config Files
To configure the Pipeline Bootstrapper unit, Edit these files:
Run
Run
Launch a run pipeline to report, receive and optimize log/trace events in edge and cloud environments.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ 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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.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: []
Compile
Compile
Launch a compile pipeline to scan source code and binary files to generate symbol unit and library files.
Below is the default configuration from: bootstrap/config.yaml.
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSBvZiBwaXBlbGluZSB0byBleGVjdXRlXG5cblRhcmdldCBbcGlwZWxpbmVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vZW5naW5lL3BpcGVsaW5lLykgdG8gZXhlY3V0ZS4gRm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgdGhlIFtydW5dKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuLykgcGlwZWxpbmUgYW5kIGEgW1lBTUxdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29uZmlnL3lhbWwvKSBjb25maWcgZmlsZSBjb250YWluaW5nIGxhdW5jaCBhcmd1bWVudHMsIHVzZTogIGBgYCBjb25zb2xlICQgdGVueCBydW4gQH4vbXkueWFtbCBgYGAgVGhlIFlBTUwgZmlsZSBtYXkgc3BlY2lmeSB0aGUgcGlwZWxpbmUgbmFtZSB2aWEgYSAndGVueCcgZW50cnksIGFsbG93aW5nIHRoZSAncGlwZWxpbmUnIGFyZ3VtZW50IHRvIGJlIG9taXR0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgRm9yIGV4YW1wbGUgKG15LnlhbWwpOiAgYGBgIHlhbWwgdGVueDogcnVuICMgc2V0IHRoZSBwaXBlbGluZSB0byAncnVuJyBhcGlLZXk6IDxteS1rZXk+IC4uLiBgYGAgIEFsbG93cyBmb3IgbGF1bmNoaW5nIHRoZSBydW4gcGlwZWxpbmUgdmlhOiBgYGAgY29uc29sZSAkIHRlbnggQH4vbXkueWFtbCBgYGAiCiAgICB9LAogICAgImxpY2Vuc2UiIDogewogICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAicHJvcGVydGllcyIgOiB7CiAgICAgICAgImZpbGUiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIDEweCBsaWNlbnNlIEpXVFxuXG5QYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIHRoZSBzaWduZWQgMTB4IGxpY2Vuc2UgSldULiBQcmVmZXJyZWQgb3ZlciBgbGljZW5zZUtleWAgZm9yIHByb2R1Y3Rpb246IHRoZSB0b2tlbiBpcyBub3QgdmlzaWJsZSBpbiBgcHNgIG91dHB1dCBhbmQgaXMgZWFzeSB0byByb3RhdGUgYnkgcmVwbGFjaW5nIHRoZSBmaWxlLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiAgSWYgYm90aCBgbGljZW5zZUZpbGVgIGFuZCBgbGljZW5zZUtleWAgYXJlIHByb3ZpZGVkLCB0aGUgZmlsZSB3aW5zLiIKICAgICAgICB9LAogICAgICAgICJrZXkiIDogewogICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIjEweCBsaWNlbnNlIEpXVCAoaW5saW5lKVxuXG5UaGUgc2lnbmVkIDEweCBsaWNlbnNlIEpXVCwgcGFzc2VkIGlubGluZS4gRGlzY291cmFnZWQgb24gdGhlIGNvbW1hbmQgbGluZSBiZWNhdXNlIHRoZSB2YWx1ZSBpcyB2aXNpYmxlIGluIGBwc2Agb3V0cHV0OyBwcmVmZXIgYGxpY2Vuc2VGaWxlYCBpbiBwcm9kdWN0aW9uLiAgRG93bmxvYWQgYSBsaWNlbnNlIGZyb20geW91ciBbYWNjb3VudF0oaHR0cHM6Ly9jb25zb2xlLmxvZzEweC5jb20pLiIKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiYWlyZ2FwcGVkIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlJ1biB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIDEweCBzZXJ2aWNlXG5cbldoZW4gYHRydWVgLCB0aGUgbGljZW5zZSBpcyB2ZXJpZmllZCBsb2NhbGx5IChzaWduYXR1cmUgKyBjbGFpbXMpIGFuZCBubyBjYWxscyBhcmUgbWFkZSB0byB0aGUgMTB4IHNlcnZpY2Ug4oCUIG5vIHN0YXJ0dXAgdmFsaWRhdGlvbiwgbm8gbWV0cmljcyByZXBvcnRpbmcsIG5vIHVzZXItYXR0cmlidXRlIGVucmljaG1lbnQuIFN1aXRhYmxlIGZvciBmdWxseSBhaXJnYXBwZWQgZGVwbG95bWVudHMgd2hlcmUgdGhlIGVuZ2luZSBoYXMgbm8gcGF0aCB0byB0aGUgdmVuZG9yIFNhYVMuICBXaGVuIGBmYWxzZWAgKGRlZmF1bHQpLCB0aGUgZW5naW5lIGFkZGl0aW9uYWxseSB2YWxpZGF0ZXMgdGhlIGxpY2Vuc2UgYWdhaW5zdCB0aGUgMTB4IHNlcnZpY2UgYXQgc3RhcnR1cDsgYSBub24tMnh4IHJlc3BvbnNlIHJlZnVzZXMgdG8gc3RhcnQuICBgZGVtb2AgYW5kIGBsaW1pdGVkYCBsaWNlbnNlIHR5cGVzIGNhbm5vdCBydW4gYWlyZ2FwcGVkIOKAlCBpZiBgYWlyZ2FwcGVkOiB0cnVlYCBpcyBzZXQgd2l0aCBvbmUgb2YgdGhlc2UgbGljZW5zZSB0eXBlcywgYSB3YXJuaW5nIGlzIGxvZ2dlZCBhbmQgdGhlIGVuZ2luZSBydW5zIGluIG9ubGluZSBtb2RlIGFueXdheS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICB9LAogICAgIm1ldHJpY0VuZHBvaW50IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiMTB4IHNlcnZpY2UgUHJvbWV0aGV1cyBtZXRyaWNzIGVuZHBvaW50XG5cblNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgUHJvbWV0aGV1cyByZW1vdGUgd3JpdGUgZW5kcG9pbnQgdG8gd3JpdGUgcGlwZWxpbmUgdXNhZ2UgYW5kIGhlYWx0aCBtZXRyaWNzLiAgISEhIG5vdGUgXCJcIiAgICAgIFRoaXMgYXJndW1lbnQgaXMgb25seSBzZXR0YWJsZSBpbiB0aGUgMTB4ICdvbi1wcmVtaXNlcycgYnVpbGQuIChEZWZhdWx0OiBodHRwczovL3Byb21ldGhldXMubG9nMTB4LmNvbS9hcGkvdjEvd3JpdGUpIiwKICAgICAgImRlZmF1bHQiIDogImh0dHBzOi8vcHJvbWV0aGV1cy5sb2cxMHguY29tL2FwaS92MS93cml0ZSIKICAgIH0sCiAgICAicnVudGltZSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAibmFtZSIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTmFtZSB0byByZXBvcnQgdG8gdGhlIDEweCBzZXJ2aWNlIGVuZHBvaW50IGZvciB0aGlzIHJ1bnRpbWUgaW5zdGFuY2VcblxuU3BlY2lmaWVzIGEgbG9naWNhbCBuYW1lIHVzZWQgYXMgYSBbdGFnIHZhbHVlXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciM0LW1ldGVycykgZm9yIHBpcGVsaW5lIG1ldHJpY3MuIFRoaXMgdmFsdWUgaWRlbnRpZmllcyBpbnN0YW5jZXMgb2YgdGhlIDEweCBydW4vY29tcGlsZSBwaXBlbGluZXMgd2hlbiByZXBvcnRpbmcgdG8gdGhlIDEweCBzZXJ2aWNlLiBGb3IgZXhhbXBsZSwgZm9yIGEgMTB4IFtSZWNlaXZlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcHBzL3JlY2VpdmVyLykgd2l0aCBvcHRpbWl6YXRpb24gZW5hYmxlZCBmb3IgRmx1ZW50IEJpdCBmb3J3YXJkZXJzIGNvbGxlY3RpbmcgZXZlbnRzIGZyb20gYSBgYnJva2VyYCB1c2VyLWFwcCwgdGhpcyB2YWx1ZSBjYW4gYmUgc2V0IHRvOiBgcmVjZWl2ZV9mbHVlbnRiaXRfYnJva2VyYCIKICAgICAgICB9LAogICAgICAgICJhdHRyaWJ1dGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gYWRkIHRvIGFsbCBtZXRyaWNzIHJlcG9ydGluZ1xuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZm9ybWF0IGBrZXk6dmFsdWVgIHRvIGJlIGFkZGVkIGFzIHRhZ3MgdG8gcGlwZWxpbmUgbWV0cmljcyByZXBvcnRlZCB0byB0aGUgMTB4IHNlcnZpY2UuIFRoZXNlIHRhZ3MgZW5hYmxlIGZpbmVyLWdyYWluZWQgZmlsdGVyaW5nIGFuZCBhbmFseXNpcyBpbiBtb25pdG9yaW5nIHN5c3RlbXMgbGlrZSBQcm9tZXRoZXVzLiBNdWx0aXBsZSBhdHRyaWJ1dGVzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyB1c2luZyBhIHNlbWljb2xvbiAoYDtgKSwgZS5nLiwgYGtleTE6dmFsMTtrZXkyOnZhbDJgLiAgSWYgYSBrZXkgZG9lcyBub3Qgc3RhcnQgd2l0aCB0ZW54XywgdGhlIHByZWZpeCB0ZW54XyBpcyBhdXRvbWF0aWNhbGx5IHByZXBlbmRlZCB0byBlbnN1cmUgY29uc2lzdGVuY3kgaW4gdGFnIG5hbWluZyBjb252ZW50aW9ucy4gRm9yIGV4YW1wbGUsIGEgcHJvdmlkZWQgYXR0cmlidXRlIGFwcDpteS1hcHAgd2lsbCBiZSByZXBvcnRlZCBhcyB0ZW54X2FwcDpteS1hcHAgIGBgYCB5YW1sICAgcnVudGltZUF0dHJpYnV0ZXM6ICAgICAtIGFwcDpyZXBvcnRlciAgICAgLSBlbnY6ZWRnZSBgYGAiLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAiaW5jbHVkZVBhdGhzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQaXBlbGluZSBpbmNsdWRlIGZvbGRlcnNcblxuU3BlY2lmaWVzIGZvbGRlcnMgb24gZGlzayBmb3IgcmVzb2xpbmcgcmVsYXRpdmUgcmVmZXJlbmNlcyB3aXRoaW4gW2luY2x1ZGUgZGlyZWN0aXZlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcveWFtbC8jaW5jbHVkZS1kaXJlY3RpdmVzKS4gKERlZmF1bHQ6IFtcIndvcmtpbmcgZGlyZWN0b3J5IG9mIGN1cnJlbnQgcHJvY2Vzc1wiXSkiLAogICAgICAiaXRlbXMiIDogewogICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgIH0sCiAgICAgICJkZWZhdWx0IiA6IFsKICAgICAgICAid29ya2luZyBkaXJlY3Rvcnkgb2YgY3VycmVudCBwcm9jZXNzIgogICAgICBdCiAgICB9LAogICAgImphckZpbGVzIiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJhcnJheSIsCiAgICAgICAgInN0cmluZyIsCiAgICAgICAgIm51bGwiCiAgICAgIF0sCiAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJKYXIgZmlsZXMgdG8gbG9hZFxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIC5qYXIgZmlsZXMgdG8gbG9hZCBpbnRvIHRoZSBob3N0IEpWTSBmb3IgdXNlIGJ5IFtjb21waWxlXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9jb21waWxlLyksIFtpbnB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvaW5wdXQvKSBhbmQgW291dHB1dF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvb3V0cHV0LykgQVBJIGV4dGVuc2lvbnMuICAhISEgbm90ZSBcIlwiICAgICAgVGhpcyBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBbZWRnZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9lbmdpbmUvZmxhdm9ycy8jZWRnZSkgcnVudGltZSBmbGF2b3IuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgInF1aWV0IiA6IHsKICAgICAgInR5cGUiIDogWwogICAgICAgICJib29sZWFuIiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRpc2FibGUgcHJpbnRpbmcgYmluYXJ5IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gdGhlIGNvbnNvbGVcblxuRGlzYWJsZSBwcmludGluZyBidWlsZC92ZXJzaW9uIGluZm9ybWF0aW9uIHRvIHRoZSBjb25zb2xlIHVwb24gbGF1bmNoIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgfSwKICAgICJkaXNhYmxlZEFyZ3MiIDogewogICAgICAidHlwZSIgOiBbCiAgICAgICAgImFycmF5IiwKICAgICAgICAic3RyaW5nIiwKICAgICAgICAibnVsbCIKICAgICAgXSwKICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpbWl0IGFyZ3VtZW50IHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdXNlcnNcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBsYXVuY2ggYXJndW1lbnRzIHRoYXQgYXJlIGRpc2FsbG93ZWQgZnJvbSBlaXRoZXIgY29tbWFuZCBsaW5lIG9yIHVzZXIgY29uZmlnIGZpbGVzLiBUaGlzIGFyZ3VtZW50IHByb3ZpZGVzIGEgbWV0aG9kIG9mIGxpbWl0aW5nIHRoZSB0YXJnZXQgW3BpcGVsaW5lXShodHRwczovL2RvYy5sb2cxMHguY29tL3NoYXJlZC9ib290c3RyYXAvI3BpcGVsaW5lKSwgW3NvdXJjZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIGFuZCBhbmQgW2NvbW1hbmQgbGluZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvY2xpLykgc2V0dGFibGUgYnkgdGhlIHVzZXIuICBUaGlzIG1lY2hhbmlzbSBlbmFibGVzIHBpcGVsaW5lIGxhdW5jaGVycyBzdWNoIGFzIHRoZSBbUXVhcmt1cyBsYXVuY2hlcl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvbGF1bmNoLyNxdWFya3VzKSB0byBsaW1pdCB1c2VyIGlucHV0IHJlY2VpdmVkIHZpYSBSRVNUIHJlcXVlc3RzIHRvIGEgdGFyZ2V0IHN1YnNldCBvZiAnc2FmZScgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGFkZGluZyBbcHJvY091dENvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL291dHB1dC9ldmVudC9wcm9jZXNzLyNwcm9jb3V0Y29tbWFuZCkgdG8gdGhpcyBsaXN0IGVuc3VyZXMgdGhhdCBubyBleHRlcm5hbCBwcm9jZXNzIG91dHB1dHMgY2FuIGJlIGxhdW5jaGVkIGJ5IHRoZSBydW50aW1lLiAgQW4gb3B0aW9uYWwgcmVnZXggcGF0dGVybiBjYW4gbGltaXQgYXJndW1lbnRzIHRvIGEgY2VydGFpbiBzdWJzZXQgb2YgdmFsdWVzIGluIHRoZSBmb3JtIG9mOiBgPGFyZy1uYW1lPls6cGF0dGVybl1gIChlLmcuLCBzcGVjaWZpYyBwcm9jZXNzIG5hbWVzKS4gTXVsdGlwbGUgcGF0dGVybnMgY2FuIGJlIHNwZWNpZmllZCBwZXIgYXJndW1lbnQuICBNYXRjaGluZyB0aGUgYHNvdXJjZWAgYXJndW1lbnQgZGV0ZXJtaW5lcyB3aGljaCBzb3VyY2UgbG9jYXRpb25zIHRvIGluc3BlY3QgKGUuZy4sIGZvbGRlcnMsIGZpbGVzLCBHaXRIdWIgcmVwb3MpLiBGb3IgZXhhbXBsZSwgYW4gYWRtaW4gbWF5IHBsYWNlIC55YW1sIGNvbmZpZyBmaWxlcyBjb250YWluaW5nIHByZXNldCBGbHVlbnQgQml0IG91dHB1dHMgaW4gYC9ldGMvbG9nMTB4L2AsIGV4Y2x1ZGluZyB0aGVpciBlbmNsb3NlZCBhcmd1bWVudHMgZnJvbSBsaW1pdHMgc2V0IGJ5IHRoaXMgbGlzdCwgd2hpbGUgZGlzYWxsb3dpbmcgdXNlcnMgdG8gZGlyZWN0bHkgc2V0IHRoZW0gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgYnkgc291cmNpbmcgdGhlbSBmcm9tIHRoZWlyIGxvY2FsL0dpdEh1YiBjb25maWcgZmlsZXMgKHNlZSBleGFtcGxlIGJlbG93KS4gIFRvIGxpbWl0OiAgVGhlIHRhcmdldCBwaXBlbGluZSAoZS5nLiwgW3J1bl0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vKSwgW2NvbXBpbGVdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS8pKTogIGBgYCB5YW1sICAgZGlzYWJsZWRBcmdzOiAgIC0gXCJwaXBlbGluZTpecnVuXCIgIyBkaXNhbGxvdyBjb21waWxlIGBgYCAgVGFyZ2V0IGFyZ3VtZW50cyAoZS5nLiwgW3Byb2Nlc3Mgb3V0cHV0c10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vb3V0cHV0L2V2ZW50L3Byb2Nlc3MvKSk6ICBgYGAgeWFtbCAgIC0gXCJwcm9jT3V0Q29tbWFuZDpeZmx1ZW50LWJpdCRcIiAgICMgbGltaXQgdG8gRmx1ZW50IEJpdCBvbmx5ICAgIyAtIHByb2NPdXRBcmdzOiA8c3BlY2lmeS1yZWdleD4gICMgZnVydGhlciBsaW1pdCBhcmdzIGZvciBGbHVlbnQgQml0IGBgYCAgQ29udHJvbCB3aGljaCBhcmd1bWVudCBbc291cmNlc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb25maWcvI3NvdXJjZXMpIHRvIGluc3BlY3Q6ICBgYGAgeWFtbCAgIC0gXCJzb3VyY2U6XmdpdGh1Yi4qXCIgICAgICAgICAgICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIEdpdEh1YiBhZ2FpbnN0IHRoaXMgbGlzdCAgIC0gXCJzb3VyY2U6Xig/IS9ldGMvbG9nMTB4LykuKlwiICAgIyBpbnNwZWN0IG9mIGFsbCBhcmd1bWVudHMgc291cmNlZCBmcm9tIGNvbmZpZyBmaWxlcyBOT1QgY29udGFpbmVkIGluOiAvZXRjL2xvZzEweC8gYGBgIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9LAogICAgImRlYnVnRW52VmFycyIgOiB7CiAgICAgICJ0eXBlIiA6IFsKICAgICAgICAiYXJyYXkiLAogICAgICAgICJzdHJpbmciLAogICAgICAgICJudWxsIgogICAgICBdLAogICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTGlzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gZGVidWdcblxuU3BlY2lmaWVzIGEgbGlzdCBvZiBlbnYgdmFyIG5hbWVzIGZvciB3aGljaCB0byBsb2cgaW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gaG93IHRoZXkgYXJlIHJlc29sdmVkLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjYWxsOiBgTDFFbnYuZ2V0KFwibXlWYXJcIiwgXCJteURlZmF1bHRcIilgIGNhbiBiZSByZXNvbHZlZCBmcm9tIGEgbnVtYmVyIG9mIFtzb3VyY2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWEVudi5nZXQpIHJhbmdpbmcgZnJvbSBsYXVuY2ggYXJndW1lbnRzLCB0byBPUy9KVk0gcHJvcGVydGllcyBhbmQgYSBkZWZhdWx0IHZhbHVlIChlLmcuLCBteURlZmF1bHQpLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBteVZhcmAgd2lsbCBsb2cgSU5GTyBsZXZlbCBpbmZvcm1hdGlvbiBkZXRhaWxpbmcgaG93IHRoZSB2YWx1ZSBvZiB0aGUgYG15VmFyYCB3YXMgcmVzb2x2ZWQuIiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICB9CiAgICB9CiAgfSwKICAicmVxdWlyZWQiIDogWwogICAgInRlbngiCiAgXSwKICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UKfQ==
# 🔟❎ compile bootstrap configuration
# This config file specifies bootstrap options for the compile pipeline.
# To learn more see https://doc.log10x.com/compile/bootstrap
# To learn more see https://doc.log10x.com/config/
tenx: compile
# =============================== 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).
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 the Prometheus endpoint to report usage/health metrics (enterprise version only).
# metricEndpoint: https://prometheus.log10x.com/api/v1/write
# specifies a list of launch arguments that are disallowed from either command line or user config files.
disabledArgs: []
Options
Specify the options below to configure the Pipeline Bootstrapper:
| Name | Description |
|---|---|
| tenx | Name of pipeline to execute |
| licenseFile | Path to a file containing the 10x license JWT |
| licenseKey | 10x license JWT (inline) |
| airgapped | Run without contacting the 10x service |
| metricEndpoint | 10x service Prometheus metrics endpoint |
| runtimeName | Name to report to the 10x service endpoint for this runtime instance |
| runtimeAttributes | List of attributes to add to all metrics reporting |
| includePaths | Pipeline include folders |
| jarFiles | Jar files to load |
| quiet | Disable printing binary version information to the console |
| disabledArgs | Limit argument values that can be set by users |
| debugEnvVars | List environment variables to debug |
tenx
Name of pipeline to execute.
| Type | Required | Names |
|---|---|---|
| String | ✔ | [tenx, pipeline] |
Target pipeline to execute.
For example, to specify the run pipeline and a YAML config file containing launch arguments, use:
The YAML file may specify the pipeline name via a 'tenx' entry, allowing the 'pipeline' argument to be omitted from the command line.
For example (my.yaml):
Allows for launching the run pipeline via:
licenseFile
Path to a file containing the 10x license JWT.
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseFile, TENX_LICENSE_FILE] |
Path to a file containing the signed 10x license JWT.
Preferred over licenseKey for production: the token is not visible in ps output and is easy to rotate by replacing the file.
Download a license from your account.
If both licenseFile and licenseKey are provided, the file wins.
licenseKey
10x license JWT (inline).
| Type | Default | Names |
|---|---|---|
| String | "" | [licenseKey, TENX_LICENSE_KEY] |
The signed 10x license JWT, passed inline.
Discouraged on the command line because the value is visible in ps output; prefer licenseFile in production.
Download a license from your account.
airgapped
Run without contacting the 10x service.
| Type | Default | Names |
|---|---|---|
| Boolean | false | [airgapped, TENX_AIRGAPPED] |
When true, the license is verified locally (signature + claims) and no calls are made to the 10x service —
no startup validation, no metrics reporting, no user-attribute enrichment. Suitable for fully airgapped deployments
where the engine has no path to the vendor SaaS.
When false (default), the engine additionally validates the license against the 10x service at startup; a non-2xx response refuses to start.
demo and limited license types cannot run airgapped — if airgapped: true is set with one of these license types, a warning is logged and the engine runs in online mode anyway.
metricEndpoint
10x service Prometheus metrics endpoint.
| Type | Default |
|---|---|
| String | https://prometheus.log10x.com/api/v1/write |
Specifies the address of the Prometheus remote write endpoint to write pipeline usage and health metrics.
This argument is only settable in the 10x 'on-premises' build.
runtimeName
Name to report to the 10x service endpoint for this runtime instance.
| Type | Default |
|---|---|
| String | "" |
Specifies a logical name used as a tag value for pipeline metrics.
This value identifies instances of the 10x run/compile pipelines
when reporting to the 10x service. For example, for a 10x Receiver with optimization enabled for Fluent Bit forwarders collecting events from a broker user-app,
this value can be set to: receive_fluentbit_broker.
runtimeAttributes
List of attributes to add to all metrics reporting.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of key-value pairs in the format key:value to be added as tags to pipeline metrics reported to the 10x service.
These tags enable finer-grained filtering and analysis in monitoring systems like Prometheus.
Multiple attributes can be combined into a single string using a semicolon (;), e.g., key1:val1;key2:val2.
If a key does not start with tenx_, the prefix tenx_ is automatically prepended to ensure consistency in tag naming conventions. For example, a provided attribute app:my-app will be reported as tenx_app:my-app
includePaths
Pipeline include folders.
| Type | Default |
|---|---|
| List | [working directory of current process] |
Specifies folders on disk for resoling relative references within include directives.
jarFiles
Jar files to load.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of .jar files to load into the host JVM for use by compile, input and output API extensions.
This argument is not supported in the edge runtime flavor.
quiet
Disable printing binary version information to the console.
| Type | Default |
|---|---|
| Boolean | false |
Disable printing build/version information to the console upon launch.
disabledArgs
Limit argument values that can be set by users.
| Type | Default |
|---|---|
| List | [] |
specifies a list of launch arguments that are disallowed from either command line or user config files. This argument provides a method of limiting the target pipeline, source and and command line settable by the user.
This mechanism enables pipeline launchers such as the Quarkus launcher to limit user input received via REST requests to a target subset of 'safe' arguments.
For example, adding procOutCommand to this list ensures that no external process outputs can be launched by the runtime.
An optional regex pattern can limit arguments to a certain subset of values in the form of: <arg-name>[:pattern] (e.g., specific process names).
Multiple patterns can be specified per argument.
Matching the source argument determines which source locations to inspect (e.g., folders, files, GitHub repos).
For example, an admin may place .yaml config files containing preset Fluent Bit outputs in /etc/log10x/,
excluding their enclosed arguments from limits set by this list, while disallowing users to directly set them via the command-line
or by sourcing them from their local/GitHub config files (see example below).
To limit:
The target pipeline (e.g., run, compile):
Target arguments (e.g., process outputs):
- "procOutCommand:^fluent-bit$" # limit to Fluent Bit only
# - procOutArgs: <specify-regex> # further limit args for Fluent Bit
Control which argument sources to inspect:
- "source:^github.*" # inspect of all arguments sourced from GitHub against this list
- "source:^(?!/etc/log10x/).*" # inspect of all arguments sourced from config files NOT contained in: /etc/log10x/
debugEnvVars
List environment variables to debug.
| Type | Default |
|---|---|
| List | [] |
Specifies a list of env var names for which to log information relating to how they are resolved.
For example, the following call: L1Env.get("myVar", "myDefault") can be resolved from a number of sources
ranging from launch arguments, to OS/JVM properties and a default value (e.g., myDefault).
Setting this value to myVar will log INFO level information detailing how the value of the myVar was resolved.
This unit is defined in bootstrap/unit.yaml.