[{"data":1,"prerenderedAt":3592},["ShallowReactive",2],{"doc:\u002Fdocs\u002Fengine-settings":3,"docs-nav":3368},{"id":4,"title":5,"body":6,"description":3359,"extension":3360,"meta":3361,"navigation":3363,"path":3364,"seo":3365,"stem":3366,"__hash__":3367},"docs\u002Fdocs\u002Fengine-settings.md","Settings from the administration panel",{"type":7,"value":8,"toc":3340},"minimark",[9,13,31,34,41,55,60,128,139,143,146,151,156,243,249,409,414,577,582,671,676,706,711,964,969,1027,1032,1062,1067,1113,1118,1148,1153,1199,1204,1235,1240,1301,1307,1337,1343,1417,1422,1497,1503,1618,1622,1627,1748,1753,1828,1833,1909,1914,2003,2008,2054,2059,2105,2110,2154,2159,2233,2238,2324,2329,2506,2511,2541,2550,2763,2768,2858,2863,2893,2896,2914,2972,2976,2979,3005,3012,3019,3023,3037,3051,3054,3057,3061,3067,3106,3111,3114,3117,3131,3163,3170,3173,3190,3194,3224,3228,3238,3242,3254,3258,3275],[10,11,5],"h1",{"id":12},"settings-from-the-administration-panel",[14,15,16,17,21,22,26,27,30],"p",{},"For whoever installs and runs Tabularia. ",[18,19,20],"strong",{},"Administration → Settings"," changes, while\neverything keeps running, the settings an administrator may own: limits, waits, retention,\nthe assistant's budget, the caps of the data sources. The environment (",[23,24,25],"code",{},".env",", the Helm\nvalues) stays the starting value of every setting; the panel overrides it, and ",[18,28,29],{},"Back to\nthe environment"," returns to it.",[14,32,33],{},"The settings are in boxes, one per component (Gateway, Kubernetes, Engine), with a search\nby name or variable. Each one shows a description in the reader's language, the value of\nthe environment and its variable, the allowed range, and who changed it and when.",[14,35,36],{},[37,38],"img",{"alt":39,"src":40},"Administration, Settings searched for EXPORT__MAX_ROWS: the box Export with Most rows in a CSV export, a new value 2000000 not yet saved, the environment's value 5,000,000, the allowed range, Undo the change, and the bar 1 change to save","\u002Fmedia\u002Fguide\u002Fadmin\u002Fsettings-export-limit.png",[14,42,43],{},[44,45,46,47,50,51,54],"em",{},"A change on its way: the setting found by its variable, the new value marked ",[18,48,49],{},"Unsaved"," next to the environment's, and ",[18,52,53],{},"Save"," in the bar at the bottom.",[56,57,59],"h2",{"id":58},"three-families","Three families",[61,62,63,70,82],"ul",{},[64,65,66,69],"li",{},[18,67,68],{},"Live"," (most of them): read by the code each time it is used. A change applies within\nten seconds on every process: every gateway and orchestrator replica, the engine API,\nevery worker process.",[64,71,72,75,76,81],{},[18,73,74],{},"Read when a process starts"," (marked with the restart icon ↻): saved at once, applied\nwhen the components that read them restart. The panel tells which components still run\na previous value and restarts them (see ",[77,78,80],"a",{"href":79},"#restarts","Restarts",").",[64,83,84,87,88,92,93,96,97,100,101,104,105,108,109,112,113,116,117,104,120,123,124,127],{},[18,85,86],{},"Never in the panel",": addresses, credentials, keys, identities, namespaces, buckets,\nwith one exception, the external ClickHouse's connection (see\n",[77,89,91],{"href":90},"#the-clickhouse-connection","The ClickHouse connection","); the rest:\nthe switches tied to resources the Helm chart creates (scripting, Container node,\ncluster view, scaling), the audit log's retention, and anything that, wrong, would stop\nTabularia from starting or anyone from signing in. They are the configuration of the\ninstallation and stay in the environment. Some that look harmless are left out on\npurpose: ",[23,94,95],{},"OIDC__SUPERUSER_GROUP"," (it makes administrators), ",[23,98,99],{},"OIDC__SCOPES",",\n",[23,102,103],{},"OIDC__VERIFY_TLS"," and ",[23,106,107],{},"SMTP__VERIFY_TLS"," (the security of a connection), the scripting\nbase images, builder image, PyPI and CRAN addresses (code that runs in the builds),\n",[23,110,111],{},"STORAGE__DIRECT_READ"," (it depends on the network between services),\n",[23,114,115],{},"KUBERNETES__*_MAX_REPLICAS"," (the ceiling the installer puts on the\npanel itself), ",[23,118,119],{},"AUDIT__RETENTION_MINUTES",[23,121,122],{},"AUDIT__IP_RETENTION_DAYS"," (an\nadministrator must not be able to shorten the trail of what administrators do),\n",[23,125,126],{},"ENGINE__SETTINGS_PANEL"," (it governs the panel).",[14,129,130,131,134,135,138],{},"Database backups (on, schedule, number kept) are in ",[18,132,133],{},"Administration → Backups",", and the\nprocesses per worker in ",[18,136,137],{},"Administration → Workers",": not repeated here.",[56,140,142],{"id":141},"what-can-be-changed","What can be changed",[14,144,145],{},"The panel accepts narrower ranges than the environment, so that a typing mistake cannot\ntake the system down; a value outside them goes in the environment. The boxes of a feature\nthe installation does not have are not shown (single sign-on, Kubernetes, scripting, the\nContainer node) or greyed out (an engine that is not configured).",[147,148,150],"h3",{"id":149},"gateway-and-kubernetes","Gateway and Kubernetes",[14,152,153],{},[18,154,155],{},"Sign-in and sessions",[157,158,159,178],"table",{},[160,161,162],"thead",{},[163,164,165,169,172,175],"tr",{},[166,167,168],"th",{},"Setting",[166,170,171],{},"Variable",[166,173,174],{},"Panel range",[166,176,177],{},"Applies",[179,180,181,198,213,228],"tbody",{},[163,182,183,187,192,195],{},[184,185,186],"td",{},"Longest a session lasts",[184,188,189],{},[23,190,191],{},"JWT__ACCESS_TTL_MINUTES",[184,193,194],{},"15 min – 7 d",[184,196,197],{},"live",[163,199,200,203,208,211],{},[184,201,202],{},"Session closed after inactivity",[184,204,205],{},[23,206,207],{},"AUTH__SESSION_IDLE_MINUTES",[184,209,210],{},"0 min – 1 d",[184,212,197],{},[163,214,215,218,223,226],{},[184,216,217],{},"Personal API tokens",[184,219,220],{},[23,221,222],{},"AUTH__PERSONAL_TOKENS",[184,224,225],{},"on \u002F off",[184,227,197],{},[163,229,230,233,238,241],{},[184,231,232],{},"Furthest expiry of an API token",[184,234,235],{},[23,236,237],{},"AUTH__API_TOKEN_MAX_DAYS",[184,239,240],{},"1 d – 3650 d",[184,242,197],{},[14,244,245,248],{},[18,246,247],{},"Single sign-on"," (when single sign-on is configured)",[157,250,251,263],{},[160,252,253],{},[163,254,255,257,259,261],{},[166,256,168],{},[166,258,171],{},[166,260,174],{},[166,262,177],{},[179,264,265,280,294,308,322,336,350,364,379,394],{},[163,266,267,270,275,278],{},[184,268,269],{},"Where the groups are in the token",[184,271,272],{},[23,273,274],{},"OIDC__GROUPS_CLAIM",[184,276,277],{},"text",[184,279,197],{},[163,281,282,285,290,292],{},[184,283,284],{},"Groups taken from the identity provider",[184,286,287],{},[23,288,289],{},"OIDC__GROUP_ALLOWLIST",[184,291,277],{},[184,293,197],{},[163,295,296,299,304,306],{},[184,297,298],{},"Create missing groups",[184,300,301],{},[23,302,303],{},"OIDC__AUTO_CREATE_GROUPS",[184,305,225],{},[184,307,197],{},[163,309,310,313,318,320],{},[184,311,312],{},"The identity provider owns the membership",[184,314,315],{},[23,316,317],{},"OIDC__AUTHORITATIVE",[184,319,225],{},[184,321,197],{},[163,323,324,327,332,334],{},[184,325,326],{},"E-mail domains allowed in",[184,328,329],{},[23,330,331],{},"OIDC__ALLOWED_EMAIL_DOMAINS",[184,333,277],{},[184,335,197],{},[163,337,338,341,346,348],{},[184,339,340],{},"Only members of the groups taken",[184,342,343],{},[23,344,345],{},"OIDC__REQUIRE_ALLOWLISTED_GROUP",[184,347,225],{},[184,349,197],{},[163,351,352,355,360,362],{},[184,353,354],{},"Text of the sign-in button",[184,356,357],{},[23,358,359],{},"OIDC__BUTTON_LABEL",[184,361,277],{},[184,363,197],{},[163,365,366,369,374,377],{},[184,367,368],{},"How long the provider's configuration is kept",[184,370,371],{},[23,372,373],{},"OIDC__DISCOVERY_TTL_SECONDS",[184,375,376],{},"1 min – 1 d",[184,378,197],{},[163,380,381,384,389,392],{},[184,382,383],{},"Wait for the identity provider",[184,385,386],{},[23,387,388],{},"OIDC__TIMEOUT_SECONDS",[184,390,391],{},"1 s – 1 min",[184,393,197],{},[163,395,396,399,404,407],{},[184,397,398],{},"Time to sign in at the provider",[184,400,401],{},[23,402,403],{},"OIDC__LOGIN_TX_TTL_SECONDS",[184,405,406],{},"2 min – 1 h",[184,408,197],{},[14,410,411],{},[18,412,413],{},"Orchestration and schedules",[157,415,416,428],{},[160,417,418],{},[163,419,420,422,424,426],{},[166,421,168],{},[166,423,171],{},[166,425,174],{},[166,427,177],{},[179,429,430,445,459,473,488,503,518,532,547,562],{},[163,431,432,435,440,443],{},[184,433,434],{},"Time zone of the schedules",[184,436,437],{},[23,438,439],{},"APP__TIMEZONE",[184,441,442],{},"IANA name",[184,444,197],{},[163,446,447,450,455,457],{},[184,448,449],{},"Run declared lost after",[184,451,452],{},[23,453,454],{},"ENGINE__RUN_STALE_TIMEOUT_SECONDS",[184,456,194],{},[184,458,197],{},[163,460,461,464,469,471],{},[184,462,463],{},"Longest wait for a Refresh node",[184,465,466],{},[23,467,468],{},"ORCHESTRATOR__REFRESH_WAIT_SECONDS",[184,470,376],{},[184,472,197],{},[163,474,475,478,483,486],{},[184,476,477],{},"How often a running flow checks its steps",[184,479,480],{},[23,481,482],{},"ORCHESTRATOR__POLL_INTERVAL_SECONDS",[184,484,485],{},"0.5 s – 1 min",[184,487,197],{},[163,489,490,493,498,501],{},[184,491,492],{},"How often the queue is read",[184,494,495],{},[23,496,497],{},"ORCHESTRATOR__QUEUE_POLL_SECONDS",[184,499,500],{},"0.2 s – 30 s",[184,502,197],{},[163,504,505,508,513,516],{},[184,506,507],{},"Executions at once per orchestrator",[184,509,510],{},[23,511,512],{},"ORCHESTRATOR__MAX_CONCURRENT",[184,514,515],{},"1 – 200",[184,517,197],{},[163,519,520,523,528,530],{},[184,521,522],{},"Longest stay in the queue",[184,524,525],{},[23,526,527],{},"ORCHESTRATOR__QUEUE_TIMEOUT_SECONDS",[184,529,376],{},[184,531,197],{},[163,533,534,537,542,545],{},[184,535,536],{},"Heartbeat of the executions",[184,538,539],{},[23,540,541],{},"ORCHESTRATOR__HEARTBEAT_SECONDS",[184,543,544],{},"2 s – 2 min",[184,546,197],{},[163,548,549,552,557,560],{},[184,550,551],{},"Execution declared lost after silence",[184,553,554],{},[23,555,556],{},"ORCHESTRATOR__DEAD_AFTER_SECONDS",[184,558,559],{},"15 s – 1 h",[184,561,197],{},[163,563,564,567,572,575],{},[184,565,566],{},"Runs at once in the schedules' map",[184,568,569],{},[23,570,571],{},"SCHEDULING__WORKER_CAPACITY",[184,573,574],{},"1 – 256",[184,576,197],{},[14,578,579],{},[18,580,581],{},"History kept",[157,583,584,596],{},[160,585,586],{},[163,587,588,590,592,594],{},[166,589,168],{},[166,591,171],{},[166,593,174],{},[166,595,177],{},[179,597,598,613,628,643,657],{},[163,599,600,603,608,611],{},[184,601,602],{},"Run logs kept for",[184,604,605],{},[23,606,607],{},"ORCHESTRATOR__LOG_RETENTION_DAYS",[184,609,610],{},"0 d – 3650 d",[184,612,197],{},[163,614,615,618,623,626],{},[184,616,617],{},"Data contract reports kept",[184,619,620],{},[23,621,622],{},"ORCHESTRATOR__CONTRACT_RESULTS_KEPT",[184,624,625],{},"0 – 100,000",[184,627,197],{},[163,629,630,633,638,641],{},[184,631,632],{},"Versions kept",[184,634,635],{},[23,636,637],{},"ORCHESTRATOR__VERSIONS_KEPT",[184,639,640],{},"0 – 10,000",[184,642,197],{},[163,644,645,648,653,655],{},[184,646,647],{},"Assistant conversations kept for",[184,649,650],{},[23,651,652],{},"ORCHESTRATOR__AI_CHAT_RETENTION_DAYS",[184,654,610],{},[184,656,197],{},[163,658,659,662,667,669],{},[184,660,661],{},"Webhook deliveries kept for",[184,663,664],{},[23,665,666],{},"WEBHOOKS__RETENTION_DAYS",[184,668,240],{},[184,670,197],{},[14,672,673],{},[18,674,675],{},"Webhooks and SIEM",[157,677,678,690],{},[160,679,680],{},[163,681,682,684,686,688],{},[166,683,168],{},[166,685,171],{},[166,687,174],{},[166,689,177],{},[179,691,692],{},[163,693,694,697,702,704],{},[184,695,696],{},"Wait for the receiver",[184,698,699],{},[23,700,701],{},"WEBHOOKS__TIMEOUT_SECONDS",[184,703,391],{},[184,705,197],{},[14,707,708],{},[18,709,710],{},"AI assistant",[157,712,713,725],{},[160,714,715],{},[163,716,717,719,721,723],{},[166,718,168],{},[166,720,171],{},[166,722,174],{},[166,724,177],{},[179,726,727,741,755,770,785,800,815,830,845,860,875,890,905,919,934,949],{},[163,728,729,732,737,739],{},[184,730,731],{},"Metadata-only mode",[184,733,734],{},[23,735,736],{},"AI__METADATA_ONLY",[184,738,225],{},[184,740,197],{},[163,742,743,746,751,753],{},[184,744,745],{},"Model proposed first",[184,747,748],{},[23,749,750],{},"AI__DEFAULT_MODEL",[184,752,277],{},[184,754,197],{},[163,756,757,760,765,768],{},[184,758,759],{},"Rows of an assistant's query",[184,761,762],{},[23,763,764],{},"AI__MAX_RESULT_ROWS",[184,766,767],{},"1 – 2,000",[184,769,197],{},[163,771,772,775,780,783],{},[184,773,774],{},"Model rounds per message",[184,776,777],{},[23,778,779],{},"AI__MAX_REQUESTS",[184,781,782],{},"1 – 50",[184,784,197],{},[163,786,787,790,795,798],{},[184,788,789],{},"Model rounds when an assistant builds",[184,791,792],{},[23,793,794],{},"AI__MAX_FLOW_REQUESTS",[184,796,797],{},"1 – 80",[184,799,197],{},[163,801,802,805,810,813],{},[184,803,804],{},"Messages of history sent back",[184,806,807],{},[23,808,809],{},"AI__MAX_HISTORY_MESSAGES",[184,811,812],{},"0 – 400",[184,814,197],{},[163,816,817,820,825,828],{},[184,818,819],{},"Most spent per answer",[184,821,822],{},[23,823,824],{},"AI__MAX_COST_PER_TURN_USD",[184,826,827],{},"0 USD – 100 USD",[184,829,197],{},[163,831,832,835,840,843],{},[184,833,834],{},"Most spent per user per day",[184,836,837],{},[23,838,839],{},"AI__MAX_COST_PER_DAY_USD",[184,841,842],{},"0 USD – 10000 USD",[184,844,197],{},[163,846,847,850,855,858],{},[184,848,849],{},"Most spent per day, everyone together",[184,851,852],{},[23,853,854],{},"AI__MAX_COST_PER_DAY_TOTAL_USD",[184,856,857],{},"0 USD – 100000 USD",[184,859,197],{},[163,861,862,865,870,873],{},[184,863,864],{},"Most tokens read per answer",[184,866,867],{},[23,868,869],{},"AI__MAX_INPUT_TOKENS_PER_TURN",[184,871,872],{},"1,000 – 2,000,000",[184,874,197],{},[163,876,877,880,885,888],{},[184,878,879],{},"Conversations listed per user",[184,881,882],{},[23,883,884],{},"AI__MAX_CHATS_LISTED",[184,886,887],{},"1 – 500",[184,889,197],{},[163,891,892,895,900,903],{},[184,893,894],{},"AI time of a dbt export",[184,896,897],{},[23,898,899],{},"AI__DBT_EXPORT_TIMEOUT_SECONDS",[184,901,902],{},"10 s – 1 h",[184,904,197],{},[163,906,907,910,915,917],{},[184,908,909],{},"Model of the AI comments",[184,911,912],{},[23,913,914],{},"AI__COMMENT_MODEL",[184,916,277],{},[184,918,197],{},[163,920,921,924,929,932],{},[184,922,923],{},"How long an AI comment is kept",[184,925,926],{},[23,927,928],{},"AI__COMMENT_KEEP_SECONDS",[184,930,931],{},"1 min – 30 days",[184,933,197],{},[163,935,936,939,944,947],{},[184,937,938],{},"Least time between AI comments on a refresh",[184,940,941],{},[23,942,943],{},"AI__COMMENT_MIN_SECONDS",[184,945,946],{},"1 min – 1 day",[184,948,197],{},[163,950,951,954,959,962],{},[184,952,953],{},"Wait for an AI comment",[184,955,956],{},[23,957,958],{},"AI__COMMENT_WAIT_SECONDS",[184,960,961],{},"1 s – 4 min",[184,963,197],{},[14,965,966],{},[18,967,968],{},"Agents over MCP",[157,970,971,983],{},[160,972,973],{},[163,974,975,977,979,981],{},[166,976,168],{},[166,978,171],{},[166,980,174],{},[166,982,177],{},[179,984,985,999,1013],{},[163,986,987,990,995,997],{},[184,988,989],{},"MCP server",[184,991,992],{},[23,993,994],{},"MCP__ENABLED",[184,996,225],{},[184,998,197],{},[163,1000,1001,1004,1009,1011],{},[184,1002,1003],{},"Plans confirmed only in Tabularia",[184,1005,1006],{},[23,1007,1008],{},"MCP__CONFIRM_IN_TABULARIA_ONLY",[184,1010,225],{},[184,1012,197],{},[163,1014,1015,1018,1023,1025],{},[184,1016,1017],{},"Metadata-only mode for MCP",[184,1019,1020],{},[23,1021,1022],{},"MCP__METADATA_ONLY",[184,1024,225],{},[184,1026,197],{},[14,1028,1029],{},[18,1030,1031],{},"dbt export",[157,1033,1034,1046],{},[160,1035,1036],{},[163,1037,1038,1040,1042,1044],{},[166,1039,168],{},[166,1041,171],{},[166,1043,174],{},[166,1045,177],{},[179,1047,1048],{},[163,1049,1050,1053,1058,1060],{},[184,1051,1052],{},"Wait for the engine to build a dbt export",[184,1054,1055],{},[23,1056,1057],{},"ENGINE__DBT_EXPORT_TIMEOUT_SECONDS",[184,1059,902],{},[184,1061,197],{},[14,1063,1064],{},[18,1065,1066],{},"Previews and uploads",[157,1068,1069,1081],{},[160,1070,1071],{},[163,1072,1073,1075,1077,1079],{},[166,1074,168],{},[166,1076,171],{},[166,1078,174],{},[166,1080,177],{},[179,1082,1083,1098],{},[163,1084,1085,1088,1093,1096],{},[184,1086,1087],{},"Automatic sample of the editor",[184,1089,1090],{},[23,1091,1092],{},"PREVIEW__DEFAULT_SAMPLE_ROWS",[184,1094,1095],{},"0 – 10,000,000",[184,1097,197],{},[163,1099,1100,1103,1108,1111],{},[184,1101,1102],{},"Largest file uploaded",[184,1104,1105],{},[23,1106,1107],{},"UPLOAD__MAX_BYTES",[184,1109,1110],{},"1 MiB – 1 TiB (0, no limit, only from the environment)",[184,1112,197],{},[14,1114,1115],{},[18,1116,1117],{},"Database backups",[157,1119,1120,1132],{},[160,1121,1122],{},[163,1123,1124,1126,1128,1130],{},[166,1125,168],{},[166,1127,171],{},[166,1129,174],{},[166,1131,177],{},[179,1133,1134],{},[163,1135,1136,1139,1144,1146],{},[184,1137,1138],{},"Longest a backup may take",[184,1140,1141],{},[23,1142,1143],{},"BACKUP__TIMEOUT_SECONDS",[184,1145,376],{},[184,1147,197],{},[14,1149,1150],{},[18,1151,1152],{},"Monitoring",[157,1154,1155,1167],{},[160,1156,1157],{},[163,1158,1159,1161,1163,1165],{},[166,1160,168],{},[166,1162,171],{},[166,1164,174],{},[166,1166,177],{},[179,1168,1169,1184],{},[163,1170,1171,1174,1179,1182],{},[184,1172,1173],{},"Wait for the metrics",[184,1175,1176],{},[23,1177,1178],{},"MONITORING__TIMEOUT_SECONDS",[184,1180,1181],{},"0.5 s – 30 s",[184,1183,197],{},[163,1185,1186,1189,1194,1197],{},[184,1187,1188],{},"Metrics shared for",[184,1190,1191],{},[23,1192,1193],{},"MONITORING__CACHE_SECONDS",[184,1195,1196],{},"0 s – 5 min",[184,1198,197],{},[14,1200,1201],{},[18,1202,1203],{},"OpenLineage",[157,1205,1206,1218],{},[160,1207,1208],{},[163,1209,1210,1212,1214,1216],{},[166,1211,168],{},[166,1213,171],{},[166,1215,174],{},[166,1217,177],{},[179,1219,1220],{},[163,1221,1222,1225,1230,1233],{},[184,1223,1224],{},"Wait for the lineage collector",[184,1226,1227],{},[23,1228,1229],{},"OPENLINEAGE__TIMEOUT_SECONDS",[184,1231,1232],{},"1 s – 2 min",[184,1234,197],{},[14,1236,1237],{},[18,1238,1239],{},"Gateway processes",[157,1241,1242,1254],{},[160,1243,1244],{},[163,1245,1246,1248,1250,1252],{},[166,1247,168],{},[166,1249,171],{},[166,1251,174],{},[166,1253,177],{},[179,1255,1256,1272,1286],{},[163,1257,1258,1261,1266,1269],{},[184,1259,1260],{},"Requests served at once",[184,1262,1263],{},[23,1264,1265],{},"APP__GATEWAY_THREADS",[184,1267,1268],{},"4 – 200",[184,1270,1271],{},"↻ gateway, orchestrator",[163,1273,1274,1277,1282,1284],{},[184,1275,1276],{},"Database connections kept open",[184,1278,1279],{},[23,1280,1281],{},"DB__POOL_SIZE",[184,1283,515],{},[184,1285,1271],{},[163,1287,1288,1291,1296,1299],{},[184,1289,1290],{},"Extra connections at peaks",[184,1292,1293],{},[23,1294,1295],{},"DB__MAX_OVERFLOW",[184,1297,1298],{},"0 – 200",[184,1300,1271],{},[14,1302,1303,1306],{},[18,1304,1305],{},"Kubernetes API"," (on Kubernetes)",[157,1308,1309,1321],{},[160,1310,1311],{},[163,1312,1313,1315,1317,1319],{},[166,1314,168],{},[166,1316,171],{},[166,1318,174],{},[166,1320,177],{},[179,1322,1323],{},[163,1324,1325,1328,1333,1335],{},[184,1326,1327],{},"Wait for the Kubernetes API",[184,1329,1330],{},[23,1331,1332],{},"KUBERNETES__TIMEOUT_SECONDS",[184,1334,1232],{},[184,1336,197],{},[14,1338,1339,1342],{},[18,1340,1341],{},"Python and R scripts"," (when scripting is on)",[157,1344,1345,1357],{},[160,1346,1347],{},[163,1348,1349,1351,1353,1355],{},[166,1350,168],{},[166,1352,171],{},[166,1354,174],{},[166,1356,177],{},[179,1358,1359,1373,1388,1403],{},[163,1360,1361,1364,1369,1371],{},[184,1362,1363],{},"How often a script's Job is checked",[184,1365,1366],{},[23,1367,1368],{},"SCRIPTS__POLL_SECONDS",[184,1370,391],{},[184,1372,197],{},[163,1374,1375,1378,1383,1386],{},[184,1376,1377],{},"Finished script Jobs kept for",[184,1379,1380],{},[23,1381,1382],{},"SCRIPTS__JOB_TTL_SECONDS",[184,1384,1385],{},"1 min – 7 d",[184,1387,197],{},[163,1389,1390,1393,1398,1401],{},[184,1391,1392],{},"Script output kept",[184,1394,1395],{},[23,1396,1397],{},"SCRIPTS__LOG_MAX_BYTES",[184,1399,1400],{},"4 KiB – 16 MiB",[184,1402,197],{},[163,1404,1405,1408,1413,1415],{},[184,1406,1407],{},"Check Python while typing",[184,1409,1410],{},[23,1411,1412],{},"SCRIPTS__LINT",[184,1414,225],{},[184,1416,197],{},[14,1418,1419,1342],{},[18,1420,1421],{},"Image builds",[157,1423,1424,1436],{},[160,1425,1426],{},[163,1427,1428,1430,1432,1434],{},[166,1429,168],{},[166,1431,171],{},[166,1433,174],{},[166,1435,177],{},[179,1437,1438,1453,1468,1482],{},[163,1439,1440,1443,1448,1451],{},[184,1441,1442],{},"Longest an image build may take",[184,1444,1445],{},[23,1446,1447],{},"SCRIPTS__BUILD_TIMEOUT_SECONDS",[184,1449,1450],{},"1 min – 6 h",[184,1452,197],{},[163,1454,1455,1458,1463,1466],{},[184,1456,1457],{},"CPU of an image build",[184,1459,1460],{},[23,1461,1462],{},"SCRIPTS__BUILD_CPU",[184,1464,1465],{},"Kubernetes quantity",[184,1467,197],{},[163,1469,1470,1473,1478,1480],{},[184,1471,1472],{},"Memory of an image build",[184,1474,1475],{},[23,1476,1477],{},"SCRIPTS__BUILD_MEMORY",[184,1479,1465],{},[184,1481,197],{},[163,1483,1484,1487,1492,1495],{},[184,1485,1486],{},"Longest the check of an image may take",[184,1488,1489],{},[23,1490,1491],{},"SCRIPTS__CHECK_TIMEOUT_SECONDS",[184,1493,1494],{},"30 s – 1 h",[184,1496,197],{},[14,1498,1499,1502],{},[18,1500,1501],{},"Container nodes"," (when the Container node is on)",[157,1504,1505,1517],{},[160,1506,1507],{},[163,1508,1509,1511,1513,1515],{},[166,1510,168],{},[166,1512,171],{},[166,1514,174],{},[166,1516,177],{},[179,1518,1519,1533,1547,1561,1575,1589,1604],{},[163,1520,1521,1524,1529,1531],{},[184,1522,1523],{},"Time to download an image",[184,1525,1526],{},[23,1527,1528],{},"CONTAINERS__PULL_CHECK_SECONDS",[184,1530,1494],{},[184,1532,197],{},[163,1534,1535,1538,1543,1545],{},[184,1536,1537],{},"How often a container's Job is checked",[184,1539,1540],{},[23,1541,1542],{},"CONTAINERS__POLL_SECONDS",[184,1544,391],{},[184,1546,197],{},[163,1548,1549,1552,1557,1559],{},[184,1550,1551],{},"Finished container Jobs kept for",[184,1553,1554],{},[23,1555,1556],{},"CONTAINERS__JOB_TTL_SECONDS",[184,1558,1385],{},[184,1560,197],{},[163,1562,1563,1566,1571,1573],{},[184,1564,1565],{},"Most CPU a Container node may ask for",[184,1567,1568],{},[23,1569,1570],{},"CONTAINERS__MAX_CPU",[184,1572,1465],{},[184,1574,197],{},[163,1576,1577,1580,1585,1587],{},[184,1578,1579],{},"Most memory a Container node may ask for",[184,1581,1582],{},[23,1583,1584],{},"CONTAINERS__MAX_MEMORY",[184,1586,1465],{},[184,1588,197],{},[163,1590,1591,1594,1599,1602],{},[184,1592,1593],{},"Longest timeout of a Container node",[184,1595,1596],{},[23,1597,1598],{},"CONTAINERS__MAX_TIMEOUT_SECONDS",[184,1600,1601],{},"1 min – 30 d",[184,1603,197],{},[163,1605,1606,1609,1614,1616],{},[184,1607,1608],{},"Container output kept",[184,1610,1611],{},[23,1612,1613],{},"CONTAINERS__LOG_MAX_BYTES",[184,1615,1400],{},[184,1617,197],{},[147,1619,1621],{"id":1620},"engine","Engine",[14,1623,1624],{},[18,1625,1626],{},"Workers and runs",[157,1628,1629,1641],{},[160,1630,1631],{},[163,1632,1633,1635,1637,1639],{},[166,1634,168],{},[166,1636,171],{},[166,1638,174],{},[166,1640,177],{},[179,1642,1643,1658,1673,1689,1704,1719,1733],{},[163,1644,1645,1648,1653,1656],{},[184,1646,1647],{},"Longest a task can run (hard limit)",[184,1649,1650],{},[23,1651,1652],{},"CELERY__TASK_TIME_LIMIT",[184,1654,1655],{},"1 min – stale timeout − 5 min",[184,1657,197],{},[163,1659,1660,1663,1668,1671],{},[184,1661,1662],{},"Shutdown notice (soft limit)",[184,1664,1665],{},[23,1666,1667],{},"CELERY__TASK_SOFT_TIME_LIMIT",[184,1669,1670],{},"30 s – 7 d",[184,1672,197],{},[163,1674,1675,1678,1683,1686],{},[184,1676,1677],{},"Tasks before a process is renewed",[184,1679,1680],{},[23,1681,1682],{},"CELERY__MAX_TASKS_PER_CHILD",[184,1684,1685],{},"1 – 100,000",[184,1687,1688],{},"↻ worker, preview-worker",[163,1690,1691,1694,1699,1702],{},[184,1692,1693],{},"Memory of a process before it is renewed",[184,1695,1696],{},[23,1697,1698],{},"CELERY__MAX_MEMORY_PER_CHILD_KB",[184,1700,1701],{},"100 MiB – 256 GiB",[184,1703,1688],{},[163,1705,1706,1709,1714,1717],{},[184,1707,1708],{},"Share of the container's memory",[184,1710,1711],{},[23,1712,1713],{},"CELERY__MAX_MEMORY_HEADROOM_FRAC",[184,1715,1716],{},"0.1 – 0.95",[184,1718,1688],{},[163,1720,1721,1724,1729,1731],{},[184,1722,1723],{},"Memory per process without a limit",[184,1725,1726],{},[23,1727,1728],{},"CELERY__MAX_MEMORY_PER_CHILD_FALLBACK_KB",[184,1730,1701],{},[184,1732,1688],{},[163,1734,1735,1738,1743,1746],{},[184,1736,1737],{},"Least memory per process",[184,1739,1740],{},[23,1741,1742],{},"CELERY__MAX_MEMORY_PER_CHILD_FLOOR_KB",[184,1744,1745],{},"50 MiB – 256 GiB",[184,1747,1688],{},[14,1749,1750],{},[18,1751,1752],{},"Step cache",[157,1754,1755,1767],{},[160,1756,1757],{},[163,1758,1759,1761,1763,1765],{},[166,1760,168],{},[166,1762,171],{},[166,1764,174],{},[166,1766,177],{},[179,1768,1769,1784,1799,1814],{},[163,1770,1771,1774,1779,1782],{},[184,1772,1773],{},"How long the step cache lasts",[184,1775,1776],{},[23,1777,1778],{},"CACHE__TTL_SECONDS",[184,1780,1781],{},"5 min – 30 d",[184,1783,197],{},[163,1785,1786,1789,1794,1797],{},[184,1787,1788],{},"Most rows in a cached step",[184,1790,1791],{},[23,1792,1793],{},"CACHE__MAX_STEP_ROWS",[184,1795,1796],{},"0 – 100,000,000",[184,1798,197],{},[163,1800,1801,1804,1809,1811],{},[184,1802,1803],{},"How often expired steps are cleared",[184,1805,1806],{},[23,1807,1808],{},"CACHE__SWEEP_INTERVAL_SECONDS",[184,1810,1385],{},[184,1812,1813],{},"↻ beat",[163,1815,1816,1819,1824,1826],{},[184,1817,1818],{},"How often storage is measured",[184,1820,1821],{},[23,1822,1823],{},"METRICS__STORAGE_STATS_INTERVAL_SECONDS",[184,1825,902],{},[184,1827,1813],{},[14,1829,1830],{},[18,1831,1832],{},"Dashboards",[157,1834,1835,1847],{},[160,1836,1837],{},[163,1838,1839,1841,1843,1845],{},[166,1840,168],{},[166,1842,171],{},[166,1844,174],{},[166,1846,177],{},[179,1848,1849,1864,1879,1894],{},[163,1850,1851,1854,1859,1862],{},[184,1852,1853],{},"How long a dashboard's data is shared",[184,1855,1856],{},[23,1857,1858],{},"DASHBOARDS__CACHE_SECONDS",[184,1860,1861],{},"10 s – 7 d",[184,1863,197],{},[163,1865,1866,1869,1874,1877],{},[184,1867,1868],{},"Largest numbers of a tile kept",[184,1870,1871],{},[23,1872,1873],{},"DASHBOARDS__CACHE_TILE_BYTES",[184,1875,1876],{},"1 KiB – 100 MiB",[184,1878,197],{},[163,1880,1881,1884,1889,1892],{},[184,1882,1883],{},"Valkey memory the cache stops at",[184,1885,1886],{},[23,1887,1888],{},"DASHBOARDS__CACHE_VALKEY_BYTES",[184,1890,1891],{},"1 MiB – 1 TiB",[184,1893,197],{},[163,1895,1896,1899,1904,1907],{},[184,1897,1898],{},"Room of the rows on the bucket",[184,1900,1901],{},[23,1902,1903],{},"DASHBOARDS__CACHE_BUCKET_BYTES",[184,1905,1906],{},"0 – 100 TiB",[184,1908,197],{},[14,1910,1911],{},[18,1912,1913],{},"Embedded engines",[157,1915,1916,1928],{},[160,1917,1918],{},[163,1919,1920,1922,1924,1926],{},[166,1921,168],{},[166,1923,171],{},[166,1925,174],{},[166,1927,177],{},[179,1929,1930,1945,1960,1974,1988],{},[163,1931,1932,1935,1940,1943],{},[184,1933,1934],{},"Memory of a chDB query",[184,1936,1937],{},[23,1938,1939],{},"CHDB_MAX_MEMORY_USAGE",[184,1941,1942],{},"128 MiB – 1 TiB",[184,1944,1688],{},[163,1946,1947,1950,1955,1958],{},[184,1948,1949],{},"Aggregations to disk above",[184,1951,1952],{},[23,1953,1954],{},"CHDB_MAX_BYTES_BEFORE_EXTERNAL_GROUP_BY",[184,1956,1957],{},"0 – 1 TiB",[184,1959,1688],{},[163,1961,1962,1965,1970,1972],{},[184,1963,1964],{},"Sorts to disk above",[184,1966,1967],{},[23,1968,1969],{},"CHDB_MAX_BYTES_BEFORE_EXTERNAL_SORT",[184,1971,1957],{},[184,1973,1688],{},[163,1975,1976,1979,1984,1986],{},[184,1977,1978],{},"Memory of a chDB join",[184,1980,1981],{},[23,1982,1983],{},"CHDB_MAX_BYTES_IN_JOIN",[184,1985,1957],{},[184,1987,1688],{},[163,1989,1990,1993,1998,2001],{},[184,1991,1992],{},"Most rows of a cross join",[184,1994,1995],{},[23,1996,1997],{},"ENGINE_MAX_CROSS_JOIN_ROWS",[184,1999,2000],{},"1,000 – 1e+10",[184,2002,1688],{},[14,2004,2005],{},[18,2006,2007],{},"Engine API",[157,2009,2010,2022],{},[160,2011,2012],{},[163,2013,2014,2016,2018,2020],{},[166,2015,168],{},[166,2017,171],{},[166,2019,174],{},[166,2021,177],{},[179,2023,2024,2039],{},[163,2025,2026,2028,2033,2036],{},[184,2027,1260],{},[184,2029,2030],{},[23,2031,2032],{},"APP__ENGINE_API_THREADS",[184,2034,2035],{},"40 – 2,000",[184,2037,2038],{},"↻ engine",[163,2040,2041,2044,2049,2052],{},[184,2042,2043],{},"Longest wait for a preview",[184,2045,2046],{},[23,2047,2048],{},"PREVIEW_TIMEOUT_SECONDS",[184,2050,2051],{},"10 s – 290 s",[184,2053,2038],{},[14,2055,2056],{},[18,2057,2058],{},"Import",[157,2060,2061,2073],{},[160,2062,2063],{},[163,2064,2065,2067,2069,2071],{},[166,2066,168],{},[166,2068,171],{},[166,2070,174],{},[166,2072,177],{},[179,2074,2075,2090],{},[163,2076,2077,2080,2085,2088],{},[184,2078,2079],{},"Rows per row group",[184,2081,2082],{},[23,2083,2084],{},"INGEST__PARQUET_ROW_GROUP_ROWS",[184,2086,2087],{},"10,000 – 5,000,000",[184,2089,197],{},[163,2091,2092,2095,2100,2103],{},[184,2093,2094],{},"Longest wait for an answer during an import",[184,2096,2097],{},[23,2098,2099],{},"INGEST__DB_READ_TIMEOUT_SECONDS",[184,2101,2102],{},"30 s – 1 d",[184,2104,197],{},[14,2106,2107],{},[18,2108,2109],{},"Export",[157,2111,2112,2124],{},[160,2113,2114],{},[163,2115,2116,2118,2120,2122],{},[166,2117,168],{},[166,2119,171],{},[166,2121,174],{},[166,2123,177],{},[179,2125,2126,2140],{},[163,2127,2128,2131,2136,2138],{},[184,2129,2130],{},"Most rows in a CSV export",[184,2132,2133],{},[23,2134,2135],{},"EXPORT__MAX_ROWS",[184,2137,1796],{},[184,2139,197],{},[163,2141,2142,2145,2150,2152],{},[184,2143,2144],{},"Exports at once per person",[184,2146,2147],{},[23,2148,2149],{},"EXPORT__MAX_RUNNING_PER_PERSON",[184,2151,782],{},[184,2153,197],{},[14,2155,2156],{},[18,2157,2158],{},"SFTP",[157,2160,2161,2173],{},[160,2162,2163],{},[163,2164,2165,2167,2169,2171],{},[166,2166,168],{},[166,2168,171],{},[166,2170,174],{},[166,2172,177],{},[179,2174,2175,2190,2204,2218],{},[163,2176,2177,2180,2185,2188],{},[184,2178,2179],{},"Largest file",[184,2181,2182],{},[23,2183,2184],{},"SFTP__MAX_FILE_BYTES",[184,2186,2187],{},"1 MiB – 100 GiB",[184,2189,197],{},[163,2191,2192,2195,2200,2202],{},[184,2193,2194],{},"Most files per refresh",[184,2196,2197],{},[23,2198,2199],{},"SFTP__MAX_FILES",[184,2201,1685],{},[184,2203,197],{},[163,2205,2206,2209,2214,2216],{},[184,2207,2208],{},"Most bytes per refresh",[184,2210,2211],{},[23,2212,2213],{},"SFTP__MAX_TOTAL_BYTES",[184,2215,1891],{},[184,2217,197],{},[163,2219,2220,2223,2228,2231],{},[184,2221,2222],{},"Wait for the server",[184,2224,2225],{},[23,2226,2227],{},"SFTP__TIMEOUT_SECONDS",[184,2229,2230],{},"1 s – 10 min",[184,2232,197],{},[14,2234,2235],{},[18,2236,2237],{},"S3 folders",[157,2239,2240,2252],{},[160,2241,2242],{},[163,2243,2244,2246,2248,2250],{},[166,2245,168],{},[166,2247,171],{},[166,2249,174],{},[166,2251,177],{},[179,2253,2254,2268,2281,2294,2309],{},[163,2255,2256,2259,2264,2266],{},[184,2257,2258],{},"Largest object",[184,2260,2261],{},[23,2262,2263],{},"S3_SOURCE__MAX_FILE_BYTES",[184,2265,2187],{},[184,2267,197],{},[163,2269,2270,2272,2277,2279],{},[184,2271,2194],{},[184,2273,2274],{},[23,2275,2276],{},"S3_SOURCE__MAX_FILES",[184,2278,1685],{},[184,2280,197],{},[163,2282,2283,2285,2290,2292],{},[184,2284,2208],{},[184,2286,2287],{},[23,2288,2289],{},"S3_SOURCE__MAX_TOTAL_BYTES",[184,2291,1891],{},[184,2293,197],{},[163,2295,2296,2299,2304,2307],{},[184,2297,2298],{},"Most keys scanned",[184,2300,2301],{},[23,2302,2303],{},"S3_SOURCE__MAX_LISTED",[184,2305,2306],{},"100 – 10,000,000",[184,2308,197],{},[163,2310,2311,2314,2319,2322],{},[184,2312,2313],{},"Longest download of an object",[184,2315,2316],{},[23,2317,2318],{},"S3_SOURCE__MAX_REQUEST_SECONDS",[184,2320,2321],{},"10 s – 1 d",[184,2323,197],{},[14,2325,2326],{},[18,2327,2328],{},"HTTP APIs",[157,2330,2331,2343],{},[160,2332,2333],{},[163,2334,2335,2337,2339,2341],{},[166,2336,168],{},[166,2338,171],{},[166,2340,174],{},[166,2342,177],{},[179,2344,2345,2359,2374,2388,2403,2418,2432,2447,2462,2477,2492],{},[163,2346,2347,2350,2355,2357],{},[184,2348,2349],{},"Wait for each request",[184,2351,2352],{},[23,2353,2354],{},"API__TIMEOUT_SECONDS",[184,2356,2230],{},[184,2358,197],{},[163,2360,2361,2364,2369,2372],{},[184,2362,2363],{},"Most pages per call",[184,2365,2366],{},[23,2367,2368],{},"API__MAX_PAGES",[184,2370,2371],{},"1 – 1,000,000",[184,2373,197],{},[163,2375,2376,2379,2384,2386],{},[184,2377,2378],{},"Most calls per refresh",[184,2380,2381],{},[23,2382,2383],{},"API__MAX_CALLS",[184,2385,1685],{},[184,2387,197],{},[163,2389,2390,2393,2398,2401],{},[184,2391,2392],{},"Most rows per refresh",[184,2394,2395],{},[23,2396,2397],{},"API__MAX_ROWS",[184,2399,2400],{},"1 – 1,000,000,000",[184,2402,197],{},[163,2404,2405,2408,2413,2416],{},[184,2406,2407],{},"Largest response",[184,2409,2410],{},[23,2411,2412],{},"API__MAX_RESPONSE_BYTES",[184,2414,2415],{},"1 KiB – 10 GiB",[184,2417,197],{},[163,2419,2420,2422,2427,2430],{},[184,2421,2208],{},[184,2423,2424],{},[23,2425,2426],{},"API__MAX_TOTAL_BYTES",[184,2428,2429],{},"1 KiB – 1 TiB",[184,2431,197],{},[163,2433,2434,2437,2442,2445],{},[184,2435,2436],{},"Retries of a failed request",[184,2438,2439],{},[23,2440,2441],{},"API__MAX_RETRIES",[184,2443,2444],{},"0 – 20",[184,2446,197],{},[163,2448,2449,2452,2457,2460],{},[184,2450,2451],{},"Longest Retry-After accepted",[184,2453,2454],{},[23,2455,2456],{},"API__MAX_RETRY_WAIT_SECONDS",[184,2458,2459],{},"0 s – 1 h",[184,2461,197],{},[163,2463,2464,2467,2472,2475],{},[184,2465,2466],{},"Most redirects",[184,2468,2469],{},[23,2470,2471],{},"API__MAX_REDIRECTS",[184,2473,2474],{},"0 – 30",[184,2476,197],{},[163,2478,2479,2482,2487,2490],{},[184,2480,2481],{},"Longest a request may take",[184,2483,2484],{},[23,2485,2486],{},"API__MAX_REQUEST_SECONDS",[184,2488,2489],{},"1 s – 1 d",[184,2491,197],{},[163,2493,2494,2497,2502,2504],{},[184,2495,2496],{},"Least pause between requests",[184,2498,2499],{},[23,2500,2501],{},"API__MIN_INTERVAL_SECONDS",[184,2503,2459],{},[184,2505,197],{},[14,2507,2508],{},[18,2509,2510],{},"Placeholders",[157,2512,2513,2525],{},[160,2514,2515],{},[163,2516,2517,2519,2521,2523],{},[166,2518,168],{},[166,2520,171],{},[166,2522,174],{},[166,2524,177],{},[179,2526,2527],{},[163,2528,2529,2532,2537,2539],{},[184,2530,2531],{},"Most values of a variable",[184,2533,2534],{},[23,2535,2536],{},"PLACEHOLDERS__MAX_VALUES",[184,2538,1685],{},[184,2540,197],{},[14,2542,2543,2546,2547,2549],{},[18,2544,2545],{},"ClickHouse connection"," (see ",[77,2548,91],{"href":90},")",[157,2551,2552,2565],{},[160,2553,2554],{},[163,2555,2556,2558,2560,2563],{},[166,2557,168],{},[166,2559,171],{},[166,2561,2562],{},"Panel values",[166,2564,177],{},[179,2566,2567,2583,2599,2613,2635,2650,2665,2680,2694,2715,2733,2748],{},[163,2568,2569,2572,2577,2580],{},[184,2570,2571],{},"Server",[184,2573,2574],{},[23,2575,2576],{},"CLICKHOUSE_EXTERNAL__HOST",[184,2578,2579],{},"a host name or address, without scheme, path or port",[184,2581,2582],{},"↻ engine, worker, preview-worker, beat",[163,2584,2585,2588,2593,2596],{},[184,2586,2587],{},"Port",[184,2589,2590],{},[23,2591,2592],{},"CLICKHOUSE_EXTERNAL__PORT",[184,2594,2595],{},"1 – 65535",[184,2597,2598],{},"↻ same",[163,2600,2601,2604,2609,2611],{},[184,2602,2603],{},"TLS",[184,2605,2606],{},[23,2607,2608],{},"CLICKHOUSE_EXTERNAL__SECURE",[184,2610,225],{},[184,2612,2598],{},[163,2614,2615,2618,2623,2633],{},[184,2616,2617],{},"Working database",[184,2619,2620],{},[23,2621,2622],{},"CLICKHOUSE_EXTERNAL__DATABASE",[184,2624,2625,2626,2629,2630],{},"letters, digits, ",[23,2627,2628],{},"_",", ",[23,2631,2632],{},"-",[184,2634,2598],{},[163,2636,2637,2640,2645,2648],{},[184,2638,2639],{},"User",[184,2641,2642],{},[23,2643,2644],{},"CLICKHOUSE_EXTERNAL__USERNAME",[184,2646,2647],{},"no spaces",[184,2649,2598],{},[163,2651,2652,2655,2660,2663],{},[184,2653,2654],{},"Password",[184,2656,2657],{},[23,2658,2659],{},"CLICKHOUSE_EXTERNAL__PASSWORD",[184,2661,2662],{},"write-only, encrypted",[184,2664,2598],{},[163,2666,2667,2670,2675,2678],{},[184,2668,2669],{},"AI assistant's user",[184,2671,2672],{},[23,2673,2674],{},"CLICKHOUSE_EXTERNAL__AI_USERNAME",[184,2676,2677],{},"no spaces; empty = the main user",[184,2679,2598],{},[163,2681,2682,2685,2690,2692],{},[184,2683,2684],{},"AI user's password",[184,2686,2687],{},[23,2688,2689],{},"CLICKHOUSE_EXTERNAL__AI_PASSWORD",[184,2691,2662],{},[184,2693,2598],{},[163,2695,2696,2699,2704,2713],{},[184,2697,2698],{},"Transport",[184,2700,2701],{},[23,2702,2703],{},"CLICKHOUSE_EXTERNAL__TRANSPORT",[184,2705,2706,2709,2710],{},[23,2707,2708],{},"s3"," or ",[23,2711,2712],{},"push",[184,2714,2598],{},[163,2716,2717,2720,2725,2731],{},[184,2718,2719],{},"Storage address as ClickHouse sees it",[184,2721,2722],{},[23,2723,2724],{},"CLICKHOUSE_EXTERNAL__S3_ENDPOINT",[184,2726,2727,2730],{},[23,2728,2729],{},"http(s):\u002F\u002F…","; empty = the engine's",[184,2732,2598],{},[163,2734,2735,2738,2743,2746],{},[184,2736,2737],{},"S3 named collection",[184,2739,2740],{},[23,2741,2742],{},"CLICKHOUSE_EXTERNAL__S3_NAMED_COLLECTION",[184,2744,2745],{},"a name; empty = keys in the queries",[184,2747,2598],{},[163,2749,2750,2753,2758,2761],{},[184,2751,2752],{},"Database of the viewer's copies",[184,2754,2755],{},[23,2756,2757],{},"CLICKHOUSE_EXTERNAL__MATERIALIZE_DATABASE",[184,2759,2760],{},"a name; empty = the working database",[184,2762,2598],{},[14,2764,2765],{},[18,2766,2767],{},"ClickHouse",[157,2769,2770,2782],{},[160,2771,2772],{},[163,2773,2774,2776,2778,2780],{},[166,2775,168],{},[166,2777,171],{},[166,2779,174],{},[166,2781,177],{},[179,2783,2784,2799,2814,2829,2843],{},[163,2785,2786,2789,2794,2797],{},[184,2787,2788],{},"Threads for scans",[184,2790,2791],{},[23,2792,2793],{},"CLICKHOUSE_EXTERNAL__PARQUET_SCAN_MAX_THREADS",[184,2795,2796],{},"0 – 64",[184,2798,197],{},[163,2800,2801,2804,2809,2812],{},[184,2802,2803],{},"Longest a query can run",[184,2805,2806],{},[23,2807,2808],{},"CLICKHOUSE_EXTERNAL__MAX_EXECUTION_TIME",[184,2810,2811],{},"0 s – 1 d",[184,2813,197],{},[163,2815,2816,2819,2824,2827],{},[184,2817,2818],{},"Copy for the viewer above (rows)",[184,2820,2821],{},[23,2822,2823],{},"CLICKHOUSE_EXTERNAL__MATERIALIZE_MIN_ROWS",[184,2825,2826],{},"0 – 1,000,000,000",[184,2828,197],{},[163,2830,2831,2834,2839,2841],{},[184,2832,2833],{},"How long the viewer copies last",[184,2835,2836],{},[23,2837,2838],{},"CLICKHOUSE_EXTERNAL__MATERIALIZE_TTL_SECONDS",[184,2840,1385],{},[184,2842,197],{},[163,2844,2845,2848,2853,2856],{},[184,2846,2847],{},"Wait to connect to ClickHouse",[184,2849,2850],{},[23,2851,2852],{},"CLICKHOUSE_EXTERNAL__CONNECT_TIMEOUT",[184,2854,2855],{},"1 s – 5 min",[184,2857,197],{},[14,2859,2860],{},[18,2861,2862],{},"BigQuery",[157,2864,2865,2877],{},[160,2866,2867],{},[163,2868,2869,2871,2873,2875],{},[166,2870,168],{},[166,2872,171],{},[166,2874,174],{},[166,2876,177],{},[179,2878,2879],{},[163,2880,2881,2884,2889,2891],{},[184,2882,2883],{},"Most bytes billed per query",[184,2885,2886],{},[23,2887,2888],{},"BIGQUERY__MAXIMUM_BYTES_BILLED",[184,2890,1906],{},[184,2892,197],{},[56,2894,91],{"id":2895},"the-clickhouse-connection",[14,2897,2898,2899,2902,2903,2906,2907,2909,2910,2913],{},"The external ClickHouse can be configured, or moved to another server, from the panel\ninstead of the environment. ",[18,2900,2901],{},"Administration → Settings → Engine → ClickHouse\nconnection"," holds the server, its port and TLS, the working database, the user and its\npassword, the AI assistant's user, the transport and how the server reaches the storage.\nThe environment's ",[23,2904,2905],{},"CLICKHOUSE_EXTERNAL__*"," stay the starting values, as for every\nsetting: an installation configured in its ",[23,2908,25],{}," or Helm values keeps working unchanged,\nand ",[18,2911,2912],{},"Back to the environment"," returns to them.",[61,2915,2916,2928,2938,2949,2955],{},[64,2917,2918,2921,2922,2924,2925,2927],{},[18,2919,2920],{},"Test connection",", at the bottom of the box, tries the values in the fields, even\nbefore they are saved: signing in, the working database, the AI user when it is set,\nand reading a small file from the storage (transport ",[23,2923,2708],{},") or creating and dropping a\ntable (transport ",[23,2926,2712],{},"). Each step says what failed with the server's own words; the\ntest saves nothing and leaves nothing on the server or in the bucket.",[64,2929,2930,2933,2934,2937],{},[18,2931,2932],{},"The password"," is write-only. It is encrypted in the gateway as soon as it arrives,\nwith the key gateway and engine already share (",[23,2935,2936],{},"SECURITY__FERNET_KEY","), and it stays\nencrypted in the gateway's database and in Valkey; only the engine's processes decrypt\nit, when they apply it. The panel shows only whether one is set, the audit only that\nit changed. An empty field keeps the current password.",[64,2939,2940,2943,2944,2946,2947,81],{},[18,2941,2942],{},"Applies after a restart"," of the engine API, the workers, the preview workers and the\nscheduler: a process keeps its connection for its life. After ",[18,2945,53],{},", the restart\nbanner offers the rollout (see ",[77,2948,80],{"href":79},[64,2950,2951,2954],{},[18,2952,2953],{},"The ClickHouse engine appears"," in the flows' engine picker once a server is set, and\nthe ClickHouse box of tuning settings stops being greyed out.",[64,2956,2957,2960,2961,2709,2964,2967,2968,2971],{},[18,2958,2959],{},"The network",": the panel cannot change what the installation allows. On Kubernetes, if\nthe Helm values set ",[23,2962,2963],{},"networkPolicy.egressCIDRs",[23,2965,2966],{},"networkPolicy.egressNamespaces",", the\nengine's processes reach only those ranges and namespaces (plus the server named in\n",[23,2969,2970],{},"externalServices.clickhouse.host","): a server elsewhere must be added there first, and\nthe test fails at the first step until it is.",[56,2973,2975],{"id":2974},"rules-between-settings","Rules between settings",[14,2977,2978],{},"A change that breaks one of these is refused, and the error names the setting just\nchanged:",[61,2980,2981,2984,2990,2993,2996,3002],{},[64,2982,2983],{},"the tasks' soft time limit stays below the hard one, and the import read timeout below\nthe soft one;",[64,2985,2986,2987,2989],{},"the engine's hard time limit stays at least five minutes below\n",[23,2988,454],{},", the age after which the gateway declares a run lost\n(both directions: lowering the threshold below the engine's limit plus five minutes is\nrefused too, and checked against the engine, so it is refused while the engine does not\nanswer);",[64,2991,2992],{},"an orchestration's heartbeat fits at least three times in the silence after which it is\ndeclared lost;",[64,2994,2995],{},"the executions an orchestrator carries at once fit in its database pool (pool size, or\nthe threads when it is automatic, plus the overflow), because each holds a connection\nwhile it asks the engine. The pool is sized when a process starts: raised together, the\nexecutions follow the pool only after the restart (each orchestrator caps them at the\npool it has);",[64,2997,2998,2999,3001],{},"single sign-on admitting only the members of the groups taken needs a list of them (or\n",[23,3000,95],{},"), and the claim with the groups cannot be empty: either would\nshut everyone out, or take every group away at the next sign-in;",[64,3003,3004],{},"going back to the installation's value is checked like a new value: back to the\nenvironment's, the lost-run threshold must still stay above the engine's hard limit, and\nthe engine's hard limit under the threshold; a change that would drop another saved\nvalue (the pool back to automatic under 90 saved executions) is refused, naming it.",[14,3006,3007,3008,3011],{},"One rule the panel cannot check is between a setting and the Helm chart: a worker that\nstops (an upgrade, a restart from this panel, a drain, a scale-in, KEDA going down to its\nminimum) waits for its tasks for ",[23,3009,3010],{},"worker.terminationGracePeriodSeconds"," (3600 s by default),\nthen Kubernetes kills it, tasks and all. Raising the tasks' hard limit above it lets those\nevents cut the longer runs: raise the chart's value first. A cluster autoscaler may also cap\nthe wait it gives a node's pods (ten minutes by default).",[14,3013,3014,3015,3018],{},"A saved value can stop being valid later, for instance after the environment changed under\nit. It is then dropped at every reading (the environment's applies, and the log says why);\nit does not block changes to other settings, and the panel marks it ",[18,3016,3017],{},"Not applied"," until\nit is changed or reset.",[56,3020,3022],{"id":3021},"how-a-change-travels","How a change travels",[14,3024,3025,3028,3029,3032,3033,3036],{},[18,3026,3027],{},"The gateway's settings."," Saved in the gateway's database (table ",[23,3030,3031],{},"gateway_settings","),\nwith an audit entry ",[23,3034,3035],{},"settings.update"," (old and new value of each). Every gateway and\norchestrator process reads the table again every ten seconds and lays the values on top of\nthe environment; the process that saved applies them at once.",[14,3038,3039,3042,3043,3046,3047,3050],{},[18,3040,3041],{},"The engine's settings."," Checked by the engine and saved in the gateway's database\n(table ",[23,3044,3045],{},"engine_settings",") only once the engine accepted them, all or none, with an audit\nentry ",[23,3048,3049],{},"engine_settings.update",". The engine keeps them in Valkey, every engine process reads\nthem again every ten seconds, and the gateway sends them again every minute: a flushed\nValkey gets them back. The upload limit is set once, in the Gateway box, and reaches the\nengine's own barrier the same way.",[14,3052,3053],{},"Saves go one at a time, across gateway replicas too (a lock in the database).",[14,3055,3056],{},"«Live» means from the next use: an orchestrator waiting for a step keeps the pause it\nstarted with until the next check, a script's or container's Job is followed at the pace\nit was started with, and a new connect timeout for ClickHouse applies to the connections\nopened from then on. A new time zone for the schedules computes again the next slot of\nevery schedule at once.",[56,3058,3060],{"id":3059},"example-a-smaller-cap-on-csv-exports","Example: a smaller cap on CSV exports",[14,3062,3063,3064,3066],{},"The Viewer's and the editor's CSV downloads stop at 5,000,000 rows by default\n(",[23,3065,2135],{},"). To bring that down to 2,000,000 without touching the deployment:",[3068,3069,3070,3084,3098],"ol",{},[64,3071,3072,3074,3075,3077,3078,3080,3081,3083],{},[18,3073,20],{},", type ",[23,3076,2135],{}," in the search: the box\n",[18,3079,2109],{}," (Engine) opens on ",[18,3082,2130],{},", with the environment's\nvalue, its variable and the allowed range (0 to 100,000,000 rows).",[64,3085,3086,3087,3090,3091,3093,3094,3097],{},"Type ",[23,3088,3089],{},"2000000",". The field is marked ",[18,3092,49],{},", with ",[18,3095,3096],{},"Undo the change",", and the\nbar at the bottom counts «1 change to save».",[64,3099,3100,3102,3103,3105],{},[18,3101,53],{},". The engine checks the value and keeps it; within ten seconds every worker\nuses it, and the audit log has an ",[23,3104,3049],{}," with the old and the new\nvalue. A larger export now stops and says so.",[14,3107,3108,3110],{},[18,3109,2912],{},", on the setting, returns to 5,000,000.",[56,3112,80],{"id":3113},"restarts",[14,3115,3116],{},"A setting marked ↻ is read only when a process starts: the gateway's threads and database\npool, the workers' recycling and memory, the embedded engines' memory, the engine API's\nthreads and preview wait, the scheduler's intervals. Saving it records, for each component\nthat reads it, when it changed; the pods of that component started before then still run\nthe previous value, and a banner on top of the page lists those components.",[14,3118,3119,3122,3123,3126,3127,3130],{},[18,3120,3121],{},"On Kubernetes"," (Helm ",[23,3124,3125],{},"settingsRollout.enabled",", on by default) ",[18,3128,3129],{},"Restart them"," restarts\nthose components, one pod at a time: the orchestrator evicts the oldest pod started before\nthe request through the Kubernetes eviction API, waits until all the component's pods are\nready again, evicts the next, and goes on component after component: run workers, preview\nworkers, scheduler, engine API, gateway, orchestrator. The new pods read the panel's values\nwhen they start; nothing in the Deployments changes. The banner follows the restart and\ncan stop it.",[61,3132,3133,3136,3142,3145,3148,3151,3154,3157,3160],{},[64,3134,3135],{},"A component with a single pod is unavailable for the few seconds its new pod takes to\nstart. The restart waits for each component's last new pod to be ready before it moves\nto the next component.",[64,3137,3138,3139,3141],{},"A worker pod finishes the run it has in hand before it stops (up to its grace period,\n",[23,3140,3010],{},", an hour by default). Worker pods go one at a\ntime, and the pods not yet restarted keep taking new runs: with many workers and long\nruns the restart of the workers can take hours, and the components after them in the\norder wait. Restart the workers on their own, at a quiet hour, when runs are long.",[64,3143,3144],{},"The scheduler (beat) is a single pod: for a second or two, while the evicted one stops\nand the new one starts, both are up. A periodic task due in that instant may be queued\ntwice (the housekeeping tasks are harmless twice); a node drain does the same.",[64,3146,3147],{},"Restarting the orchestrator stops the executions running on it: they are closed as\nfailed (with the reason) and can be started again. The orchestrator restarts itself\nlast; the next one finds nothing left and closes the request.",[64,3149,3150],{},"The chart's PodDisruptionBudgets are honoured: when one says «not now» (a node being\ndrained at the same time), the restart waits.",[64,3152,3153],{},"A new pod that never becomes ready (a value that stops it from starting, such as a pool\nlarger than Postgres accepts) stops the restart there, with the old pods still serving;\nthe banner names the pod it waits for. Put the value back and restart again: the broken\npod goes first.",[64,3155,3156],{},"Pods that start for other reasons (a crash, the autoscaler) read the new values too.",[64,3158,3159],{},"A pod stuck on its way out for more than 15 minutes (its node lost) no longer holds the\nrestart.",[64,3161,3162],{},"If the pods cannot be read (the Kubernetes API down, a missing right), the banner says\nso and offers no restart for those components.",[14,3164,3165,3166,3169],{},"Why eviction and not ",[23,3167,3168],{},"kubectl rollout restart",": that command patches the Deployment, and\nthe right to patch a Deployment is the right to change its image or its service account,\nwhich the gateway, facing the internet, must not hold. The chart grants the gateway and the\norchestrator only to read the pods of the release's namespace, and the orchestrator alone,\nwhich runs the restart and answers nobody from outside, to evict them.",[14,3171,3172],{},"A worker or the scheduler that starts while Valkey holds no values yet (a new cluster, a\nValkey restarted without persistence) waits up to 45 seconds for the gateway to send them\nbefore it fixes its start values; past that it starts with the environment's and says so\nin its log. The engine API cannot wait (the values come through it): one started on an\nempty Valkey keeps the environment's threads and preview wait until it restarts.",[14,3174,3175,3181,3182,3185,3186,3189],{},[18,3176,3177,3178],{},"With ",[23,3179,3180],{},"settingsRollout.enabled: false",", or ",[18,3183,3184],{},"on Docker Compose",", the banner names what\nto restart (",[23,3187,3188],{},"docker compose restart worker preview-worker",", or the Deployments by label)\nand the administrator says when it is done.",[56,3191,3193],{"id":3192},"who","Who",[61,3195,3196,3202,3208,3218],{},[64,3197,3198,3201],{},[18,3199,3200],{},"Administrators"," change the values and start restarts.",[64,3203,3204,3207],{},[18,3205,3206],{},"Observers"," see them, with masked names.",[64,3209,3210,3213,3214,3217],{},[18,3211,3212],{},"Everyone else"," gets ",[23,3215,3216],{},"403",".",[64,3219,3220,3223],{},[18,3221,3222],{},"API tokens"," cannot change them nor restart anything, whatever their owner.",[56,3225,3227],{"id":3226},"turning-it-off","Turning it off",[14,3229,3230,3233,3234,3237],{},[23,3231,3232],{},"ENGINE__SETTINGS_PANEL=false"," (Helm: ",[23,3235,3236],{},"engine.settingsPanel: false",") keeps the environment\nthe only source, for installations that manage configuration in Git: the panel shows the\nvalues without changing them, and values saved earlier stop applying within a minute (they\nstay in the database, and come back if the switch is turned on again).",[56,3239,3241],{"id":3240},"upgrading","Upgrading",[14,3243,3244,3245,2629,3247,3250,3251,3253],{},"Schema revision 0022 only adds two empty tables (",[23,3246,3031],{},[23,3248,3249],{},"settings_rollouts",")\nand a nullable column to ",[23,3252,3045],{}," (the values that are not whole numbers, in\nJSON). Until someone saves a value, every setting keeps its environment value. During a\nrolling update the previous gateway keeps reading and writing whole numbers: for up to a\nminute it may send the engine a decimal setting rounded, until its pods are gone.",[56,3255,3257],{"id":3256},"edge-cases-tried","Edge cases tried",[14,3259,3260,3261,100,3264,2629,3267,3270,3271,3274],{},"Each of these has a test (gateway ",[23,3262,3263],{},"tests\u002Ftest_panel_overrides.py",[23,3265,3266],{},"tests\u002Ftest_gateway_settings_api.py",[23,3268,3269],{},"tests\u002Ftest_settings_rollout.py","; engine\n",[23,3272,3273],{},"tests\u002Ftest_panel_settings.py","):",[61,3276,3277,3299,3302,3315,3318,3321,3324,3327,3330,3333],{},[64,3278,3279,3280,3283,3284,3287,3288,3291,3292,2709,3295,3298],{},"a value of the wrong type is refused, not converted: ",[23,3281,3282],{},"true"," for a number, ",[23,3285,3286],{},"\"5\""," for a\nnumber, ",[23,3289,3290],{},"1"," for on\u002Foff, ",[23,3293,3294],{},"NaN",[23,3296,3297],{},"Infinity"," for a decimal;",[64,3300,3301],{},"a text with spaces around is saved trimmed; a time zone that does not exist, a CPU or\nmemory quantity Kubernetes would not accept, a text over its length are refused;",[64,3303,3304,3305,2629,3308,100,3311,3314],{},"a key outside the catalogue is refused (",[23,3306,3307],{},"db.url",[23,3309,3310],{},"audit.retention_minutes",[23,3312,3313],{},"oidc.superuser_group","), and so is one of a feature the installation does not have;",[64,3316,3317],{},"a value written by hand in the database that is not JSON, out of range or outside the\ncatalogue is dropped at reading, the others apply;",[64,3319,3320],{},"the database unreachable: the values in force stay; at start, the environment's apply\nand the gateway starts anyway;",[64,3322,3323],{},"the same value saved again changes nothing and writes no audit entry;",[64,3325,3326],{},"a constraint the environment already breaks does not block unrelated changes;",[64,3328,3329],{},"an engine older than the panel's decimal settings or the upload limit: the gateway sends\nit what it knows;",[64,3331,3332],{},"a restart: one pod at a time, oldest first, the orchestrator itself last; a pod on its\nway out or a new one not ready is waited for; a disruption budget's «not now» is waited\nfor; a new pod that never gets ready stops the restart; a stopped restart evicts nothing\nmore; a component with no old pod closes the request.",[64,3334,3335,3336,3339],{},"found in the bug hunt of 2026-10-23 and fixed, each with a test: NaN, Infinity and an\ninteger beyond any decimal (",[23,3337,3338],{},"10**400",") for a decimal setting; a reset that broke the\nlost-run threshold against the engine's hard limit (both directions); a value saved\nwhile another thread laid the previous ones over the settings (kept the old ones for\ngood); a heartbeat made shorter waiting out the longer one; executions raised with the\npool beyond the pool the process has; settings read before the database answered at\nstart (the first housekeeping would have used the environment's retention); a\nsingle-pod component closed before its replacement was ready; Kubernetes taken for\nDocker Compose when no service account token is mounted; the workers' pool resized from\nAdministration → Workers going back to the environment's memory ceiling; a worker\nstarted on an empty Valkey freezing the environment's values; an engine refusal or a\ngateway refusal throwing away the other changes made with it in the page;\n«10.000» read as ten in French.",{"title":3341,"searchDepth":3342,"depth":3343,"links":3344},"",2,3,[3345,3346,3350,3351,3352,3353,3354,3355,3356,3357,3358],{"id":58,"depth":3342,"text":59},{"id":141,"depth":3342,"text":142,"children":3347},[3348,3349],{"id":149,"depth":3343,"text":150},{"id":1620,"depth":3343,"text":1621},{"id":2895,"depth":3342,"text":91},{"id":2974,"depth":3342,"text":2975},{"id":3021,"depth":3342,"text":3022},{"id":3059,"depth":3342,"text":3060},{"id":3113,"depth":3342,"text":80},{"id":3192,"depth":3342,"text":3193},{"id":3226,"depth":3342,"text":3227},{"id":3240,"depth":3342,"text":3241},{"id":3256,"depth":3342,"text":3257},"For whoever installs and runs Tabularia. Administration → Settings changes, while\neverything keeps running, the settings an administrator may own: limits, waits, retention,\nthe assistant's budget, the caps of the data sources. The environment (.env, the Helm\nvalues) stays the starting value of every setting; the panel overrides it, and Back to\nthe environment returns to it.","md",{"source":3362},"docs\u002Fengine-settings.md",true,"\u002Fdocs\u002Fengine-settings",{"title":5,"description":3359},"docs\u002Fengine-settings","7tse_CwmOhdG12ouIN_6UHCnBslrecFZuoN8t5gfFMQ",[3369,3388,3443,3474,3506,3533,3559,3584],{"title":3370,"icon":3371,"intro":3372,"items":3373},"Getting started","start","Install it on one machine, learn the few ideas everything else is built on, and run a first flow.",[3374,3376,3379,3382,3385],{"path":3375,"title":3370},"\u002Fdocs\u002Fgetting-started",{"path":3377,"title":3378},"\u002Fdocs\u002Fgetting-started-docker-compose","Walkthrough with Docker Compose",{"path":3380,"title":3381},"\u002Fdocs\u002Fdeploy\u002Fminikube","Try it on your computer (minikube)",{"path":3383,"title":3384},"\u002Fdocs\u002Fconcepts","Concepts",{"path":3386,"title":3387},"\u002Fdocs\u002Foverview","Overview (README)",{"title":3389,"icon":3390,"intro":3391,"items":3392},"Capabilities","capabilities","What you can build: visual flows, analysis on any step, AI questions, pixel-perfect reports, dashboards, Python, R and SQL scripts, containers and the orchestration that ties them together.",[3393,3396,3399,3402,3405,3408,3411,3413,3416,3419,3422,3425,3428,3431,3434,3437,3440],{"path":3394,"title":3395},"\u002Fdocs\u002Fcapabilities","All capabilities",{"path":3397,"title":3398},"\u002Fdocs\u002Fcapabilities\u002Fflows","Low-code flows",{"path":3400,"title":3401},"\u002Fdocs\u002Fcapabilities\u002Fpreview-and-analysis","Preview and analysis",{"path":3403,"title":3404},"\u002Fdocs\u002Fcapabilities\u002Fask-your-data","Ask your data with AI",{"path":3406,"title":3407},"\u002Fdocs\u002Fcapabilities\u002Freports","Pixel-perfect reports",{"path":3409,"title":3410},"\u002Fdocs\u002Fcapabilities\u002Freport-functions","Report functions",{"path":3412,"title":1832},"\u002Fdocs\u002Fcapabilities\u002Fdashboards",{"path":3414,"title":3415},"\u002Fdocs\u002Fscripting","Python and R",{"path":3417,"title":3418},"\u002Fdocs\u002Fsql-scripts","SQL scripts",{"path":3420,"title":3421},"\u002Fdocs\u002Fcapabilities\u002Fnotebooks","marimo notebooks as apps",{"path":3423,"title":3424},"\u002Fdocs\u002Fcontainer-node","Docker images in flows",{"path":3426,"title":3427},"\u002Fdocs\u002Fcapabilities\u002Fflow-groups","Flow groups: orchestration",{"path":3429,"title":3430},"\u002Fdocs\u002Fcapabilities\u002Fscheduling","Scheduling",{"path":3432,"title":3433},"\u002Fdocs\u002Fpushmail","Pushmail: datasources, reports and dashboards by email",{"path":3435,"title":3436},"\u002Fdocs\u002Fplaceholders","Dynamic dates",{"path":3438,"title":3439},"\u002Fdocs\u002Fcapabilities\u002Fengines","Engines",{"path":3441,"title":3442},"\u002Fdocs\u002Fengines\u002Fengine-differences","Engine differences",{"title":3444,"icon":3445,"intro":3446,"items":3447},"Sources","sources","Every way data comes in: files, databases, buckets, SFTP folders, HTTP APIs, SharePoint, Google Sheets, and the results of your own flows.",[3448,3451,3454,3457,3460,3463,3465,3468,3471],{"path":3449,"title":3450},"\u002Fdocs\u002Fsources","All sources",{"path":3452,"title":3453},"\u002Fdocs\u002Fsources\u002Ffiles","Uploaded files",{"path":3455,"title":3456},"\u002Fdocs\u002Fsources\u002Fdatabases","Database tables and queries",{"path":3458,"title":3459},"\u002Fdocs\u002Fs3-datasource","S3 buckets",{"path":3461,"title":3462},"\u002Fdocs\u002Fsftp","SFTP folders",{"path":3464,"title":2328},"\u002Fdocs\u002Fapi-datasource",{"path":3466,"title":3467},"\u002Fdocs\u002Fsources\u002Fsharepoint","Excel on SharePoint",{"path":3469,"title":3470},"\u002Fdocs\u002Fsources\u002Fgoogle-sheets","Google Sheets",{"path":3472,"title":3473},"\u002Fdocs\u002Fsources\u002Fflow-outputs","Results of flows and scripts",{"title":3475,"icon":3476,"intro":3477,"items":3478},"Connections","connections","The systems Tabularia reads from and writes to, how each connection is set up, and who may use it.",[3479,3482,3485,3488,3491,3493,3494,3496,3497,3500,3503],{"path":3480,"title":3481},"\u002Fdocs\u002Fconnections","All connections",{"path":3483,"title":3484},"\u002Fdocs\u002Fconnections\u002Fdatabases","Databases",{"path":3486,"title":3487},"\u002Fdocs\u002Fsqlserver","Microsoft SQL Server driver",{"path":3489,"title":3490},"\u002Fdocs\u002Fconnections\u002Fs3","S3 and compatible storage",{"path":3461,"title":3492},"SFTP servers",{"path":3464,"title":2328},{"path":3466,"title":3495},"SharePoint",{"path":3469,"title":3470},{"path":3498,"title":3499},"\u002Fdocs\u002Fconnections\u002Fsmtp","SMTP email",{"path":3501,"title":3502},"\u002Fdocs\u002Fcontainer-registries","Container registries",{"path":3504,"title":3505},"\u002Fdocs\u002Fconnections\u002Fdestinations","Writing data out",{"title":3507,"icon":3508,"intro":3509,"items":3510},"Integrations","integrations","How Tabularia fits your stack: AI providers, the REST API and webhooks, dbt, OpenLineage, single sign-on, SIEM and monitoring.",[3511,3514,3517,3520,3523,3525,3528,3531],{"path":3512,"title":3513},"\u002Fdocs\u002Fintegrations","All integrations",{"path":3515,"title":3516},"\u002Fdocs\u002Fintegrations\u002Fai","AI: where it is used",{"path":3518,"title":3519},"\u002Fdocs\u002Fapi","API, tokens and webhooks",{"path":3521,"title":3522},"\u002Fdocs\u002Fdbt-export","Export to dbt",{"path":3524,"title":1203},"\u002Fdocs\u002Fopenlineage",{"path":3526,"title":3527},"\u002Fdocs\u002Fsso-keycloak","Single sign-on with Keycloak",{"path":3529,"title":3530},"\u002Fdocs\u002Fsiem-splunk","Audit log to Splunk",{"path":3532,"title":1152},"\u002Fdocs\u002Fintegrations\u002Fmonitoring",{"title":3534,"icon":3535,"intro":3536,"items":3537},"Security & governance","governance","Who may see and do what, what is recorded, and how data quality and personal data are kept in check.",[3538,3541,3544,3547,3550,3553,3556],{"path":3539,"title":3540},"\u002Fdocs\u002Fgovernance","Overview",{"path":3542,"title":3543},"\u002Fdocs\u002Fgovernance\u002Fpermissions","Permissions",{"path":3545,"title":3546},"\u002Fdocs\u002Fgovernance\u002Faudit-log","Audit log",{"path":3548,"title":3549},"\u002Fdocs\u002Fgovernance\u002Fdata-contracts","Data contracts",{"path":3551,"title":3552},"\u002Fdocs\u002Fdesign\u002Fsso-group-mapping","SSO and group mapping",{"path":3554,"title":3555},"\u002Fdocs\u002Fexamples\u002Fkeycloak","Keycloak example on a laptop",{"path":3557,"title":3558},"\u002Fdocs\u002Fengines\u002Fclickhouse-ai-user","A ClickHouse user for the AI assistant",{"title":3560,"icon":3561,"intro":3562,"items":3563},"Install & operate","operate","Run it in production on Kubernetes, configure it, upgrade it and keep it healthy.",[3564,3567,3570,3573,3576,3579,3581],{"path":3565,"title":3566},"\u002Fdocs\u002Fdeploy\u002Fkubernetes","Kubernetes and Helm",{"path":3568,"title":3569},"\u002Fdocs\u002Fdeploy\u002Fkind","A company-like cluster on one computer (kind)",{"path":3571,"title":3572},"\u002Fdocs\u002Fdeploy\u002Fupgrading","Upgrading, backups and restore",{"path":3574,"title":3575},"\u002Fdocs\u002Fdeploy\u002Frelease-checklist","Install and upgrade checklist",{"path":3577,"title":3578},"\u002Fdocs\u002Fconfiguration","Configuration reference",{"path":3364,"title":3580},"Settings from the panel",{"path":3582,"title":3583},"\u002Fdocs\u002Fdatabase-migrations","Database migrations",{"title":3585,"icon":3586,"intro":3587,"items":3588},"Reference","reference","Release process and the remaining reference pages.",[3589],{"path":3590,"title":3591},"\u002Fdocs\u002Frelease-process","Release process",1793656372320]