LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.
Platform & Security
Two changes here will stop a 2.0 server from behaving as expected with a 1.13 configuration: the LLM
and embedding configuration move, and the new session limits. Everything else — timeouts, logging,
object storage, distroless images — is lower-drama but still worth checking against your deployment.
LLM and embedding configuration moved
Breaking. Affects every deployment using semantic search, natural-language query, or any LLM
feature.Provider configuration is no longer nested inside elasticsearch.naturalLanguageSearch. It moves to
a new top-level llmConfiguration block, with embeddings as a sub-section reusing the same
provider credentials:
Key environment variable renames: AWS_BEDROCK_MODEL_ID → LLM_BEDROCK_MODEL_ID, OPENAI_API_KEY
→ LLM_OPENAI_API_KEY, OPENAI_API_ENDPOINT → LLM_OPENAI_ENDPOINT, GOOGLE_API_KEY →
LLM_GOOGLE_API_KEY; GOOGLE_API_ENDPOINT is removed outright. Embedding-specific variables keep
their names but move under llmConfiguration.embeddings.
LLM_ENABLED and LLM_PROVIDER gate the entire block — both must be set before embeddings or any
other LLM feature will run. Porting credentials across without enabling the block leaves semantic
search and NLQ switched off. BEDROCK_AWS_IAM_AUTH_ENABLED also flips from false to true:
deployments that relied on the old default and supplied static keys should confirm which credential
chain is used.
Natural-language query settings consolidate too: per-provider generation settings like
COLLATE_NLQ_BEDROCK_MAX_TOKENS/COLLATE_NLQ_OPENAI_MAX_TOKENS collapse into single
COLLATE_NLQ_* variables, and providerClass under naturalLanguageSearch now defaults to
NoOpNLQService — NLQ filter extraction stays off until llmConfiguration is enabled.
Port your configuration into llmConfigurationbefore upgrading. Semantic search silently
degrades to a no-op provider rather than failing loudly if the block is missing. This applies to
self-managed and BYOC deployments; fully managed instances have it applied by Collate.
Sessions are database-backed and capped per user
Behavioural. Users will be logged out.Collate 2.0 adds a user_session table so sessions survive pod restarts and are shared across pods
— previously each pod held its own in-memory session state, causing spurious logouts behind a load
balancer without sticky sessions. Concurrent sessions are now capped:
When the limit is exceeded, the least recently used active sessions are revoked. sessionExpiry
now applies to all auth providers with a minimum of 3600 seconds;
oidcConfiguration.sessionExpiry becomes a deprecated fallback.
Users who work across several browsers or devices, and service accounts driving many concurrent
sessions, will start being silently signed out of the oldest sessions. Raise
AUTHENTICATION_MAX_ACTIVE_SESSIONS_PER_USER if that’s your pattern, but prefer bot tokens for
automation.
Separately, the Chrome plugin’s redirect URI must now be explicitly allow-listed
(additionalTrustedRedirectUris, matched exactly — scheme, host, port, path, and query) or login
won’t complete (breaking).
Behavioural. Long-running queries will now be cut off.
Setting
1.13
2.0
database.queryTimeoutSeconds
N/A
300 (new)
Postgres postgresqlSocketTimeout (s)
30000 (≈8.3 h)
300 (5 min)
MySQL mysqlSocketTimeout (ms)
30000000 (≈8.3 h)
300000 (5 min)
Postgres loginTimeout / postgresqlConnectTimeout (s)
300 / 60
30 / 30
Any statement that previously ran for more than five minutes — a large reindex batch, a heavy Data
Insights aggregation, an oversized CSV import — now aborts. Raise DB_QUERY_TIMEOUT_SECONDS,
DB_POSTGRESQL_SOCKET_TIMEOUT or DB_MYSQL_SOCKET_TIMEOUT if you have legitimately long
statements, and check upgrade logs for statement-timeout errors.
Logging hardening removes secrets from DEBUG output
Behavioural and security-relevant. At DEBUG, the HTTP parser used to print every request
header verbatim — including Authorization: Bearer <jwt> and session cookies. Since DEBUG is
exactly what support asks customers to enable, and those logs get attached to tickets, the Jetty
logger is now pinned independently via JETTY_LOG_LEVEL, separate from the root LOG_LEVEL. Audit
entries move to logs/audit.log with an audit marker, filtered out of the console appender.
If you parsed audit entries out of stdout, read logs/audit.log instead. If you need Jetty debug
output, set JETTY_LOG_LEVEL=DEBUG explicitly, and be aware of what it prints.
Response compression is also enabled by default in 2.0 (server.gzip.enabled: true, responses above
~256 bytes) — clients that mishandle Content-Encoding: gzip need Accept-Encoding: identity. The
objectStorage block’s default provider changes from NOOP to s3, but enabled still defaults
to false, so nothing activates until you turn it on; this backs the new /v1/attachments API.
Both HTTP/2 modes stay backwards compatible — HTTP/1.1 clients keep working on the same port. It’s
worth enabling when browsers hit the server directly, but not worth it behind an HTTP/2-terminating
load balancer, which already gets you the benefit.
Hybrid Runner and AI Platform images are distroless
Breaking for anything that shells into these pods. The images now ship distroless — only the
runtime and its dependencies, with no shell, package manager, or standard Unix tooling.
kubectl exec ... -- /bin/sh no longer works.
Move debugging to logs, metrics, and ephemeral debug containers (kubectl debug). Init containers or
sidecars that assumed a shell in the main image need reworking.
SCIM provisioning moves in Settings
Behavioural. SCIM provisioning configuration moves to Team and Users > Provisioning in
admin settings. The capability itself is unchanged — only its location moved, so update any internal
runbooks or onboarding docs that reference the old path.
The 2.0.0 database migration is a maintenance-window event
Plan a maintenance window. New tables include task_entity, announcement_entity,
activity_stream (partitioned), user_session, user_preferences, and the Context Center and AI
Governance Studio entity tables. thread_entity is renamed to thread_entity_legacy.
On clusters with tens of millions of rows, composite index creation on service and entity tables
((deleted, name) and (deleted, serviceType) on all 13 service tables, for the new
/v1/services/overview endpoint) is the long pole of the migration. Size your maintenance window
accordingly, and take a full backup first — there is no automated downgrade path.
Dependency and CVE updates
Additive. Not breaking, but relevant to hardened deployments. Backend versions verified
directly against the 2.0.0pom.xml: Jetty 12.1.10, jackson-databind 2.18.9, log4j
2.25.5, plus Netty 4.1.137.Final (pinned via BOM), BouncyCastle 1.85, thrift 0.24.0,
reactor-netty-http 1.2.18, tomcat-jdbc/juli 11.0.11, httpcore5 5.4.3, Redshift JDBC 2.2.2, and
Kubernetes client-java 25.0.1.Frontend: ws 8.21.0, handlebars 4.5.2, js-yaml 5.2.2, fast-uri 3.1.5, nanoid 3.3.17 and
brace-expansion 1.1.18 / 5.0.9. Other operationally relevant security fixes: test-connection
workflow triggers are authorized, CSRF failures fail secure and retry on the next request,
testDestination redacts destination configuration, and SCIM displayName synchronization is
fixed.
Full detail
For the full narrative walkthrough of Platform & Security in Collate 2.0 — including screenshots and step-by-step context — see Release 2.0: Platform & Security.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Collate Documentation","colors":{"primary":"#1570EF","light":"#1570EF","dark":"#1570EF"},"logo":"https://mintcdn.com/collatedocs/yvgGxaeRR5RwtQo6/public/images/icons/collate-logo.svg?fit=max\u0026auto=format\u0026n=yvgGxaeRR5RwtQo6\u0026q=85\u0026s=59d7983952a91cd53138369f2e21a5ac","favicon":"https://mintcdn.com/collatedocs/yvgGxaeRR5RwtQo6/public/images/icons/collate-monogram.svg?fit=max\u0026auto=format\u0026n=yvgGxaeRR5RwtQo6\u0026q=85\u0026s=a8507d257fb5cbd5ac2366790c55d8f7","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://sandbox.open-metadata.org/api"}},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"icon":"Headphones","href":"mailto:support@getcollate.io","label":"Support"},{"icon":"Book","href":"https://www.getcollate.io/blog","label":"Blogs"},{"href":"https://cloud.getcollate.io/","label":"Free Trial"}]},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/collateinc","x":"https://twitter.com/collatedata","youtube":"https://www.youtube.com/@CollateData"},"links":[{"items":[{"label":"Terms of Service","href":"https://www.getcollate.io/terms"},{"label":"Privacy Policy","href":"https://www.getcollate.io/privacypolicy"},{"label":"Trust Center","href":"https://trustcenter.getcollate.io/"},{"label":"Contact Us","href":"https://www.getcollate.io/contact-sales"}]}]},"seo":{"metatags":{"robots":"index,follow"}},"styling":{"eyebrows":"breadcrumbs","latex":true},"integrations":{"ga4":{"measurementId":"GTM-554C968W"}},"interaction":{"drilldown":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"collatedocs","hasAudioNarration":false,"actualSubdomain":"collatedocs","customDomains":["docs.getcollate.io"],"gitSource":{"type":"github","owner":"open-metadata","repo":"docs-collate","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af722c8e0e07683278151af","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"Connectors","count":1744},{"language":"default","tag":"SDKs \u0026 APIs","count":626},{"language":"default","tag":"Database","count":414},{"language":"default","tag":"Data Governance","count":329},{"language":"default","tag":"Data Assets","count":316},{"language":"default","tag":"SDKs and APIs","count":313},{"language":"default","tag":"Collate APIs","count":285},{"language":"default","tag":"Data Quality \u0026 Observability","count":237},{"language":"default","tag":"Pipeline","count":164},{"language":"default","tag":"Guide for Data Users","count":160}]},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":true,"enableAskAiSearchBar":false,"deflection":{"enabled":true,"email":"support@getcollate.io","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"694587850a00f222af972838","deploymentId":"694583b20a00f222af96d417","questionText":"How to set up SSO?","status":"active","generatedBy":"manual","createdAt":"2025-12-19T17:12:37.423Z","updatedAt":"2025-12-19T17:12:37.423Z","__v":0},{"_id":"6945876e0a00f222af97266a","deploymentId":"694583b20a00f222af96d417","questionText":"How to use AskCollate?","status":"active","generatedBy":"manual","createdAt":"2025-12-19T17:12:14.884Z","updatedAt":"2025-12-19T17:12:14.884Z","__v":0},{"_id":"694587660a00f222af9725a6","deploymentId":"694583b20a00f222af96d417","questionText":"How to set up Snowflake?","status":"active","generatedBy":"manual","createdAt":"2025-12-19T17:12:06.575Z","updatedAt":"2025-12-19T17:12:06.575Z","__v":0}],"googleFontsInlined":false},"customCss":[{"filePath":"public/globals.css","content":"/* latin-ext */\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Fp2ywxg089UriCZa4ET-DNl0.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Fp2ywxg089UriCZa4Hz-D.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Hp2ywxg089UriCZ2IHSeH.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 100 1000;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/dmsans/v17/rP2Hp2ywxg089UriCZOIHQ.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@tailwind base;@tailwind components;@tailwind utilities;:root{--top-nav-height: 70px;--main-nav-height: 42px;--side-nav-width: 288px;--side-nav-collapsed-width: 42px;--select-dropdown-default-height: 28px;--select-dropdown-default-width: 165px;--side-nav-width: min(20%, 300px);--api-side-nav-width: max(14%, 220px);--content-div-width: min(17%, 250px);--default-border-color: #dce3ec;--primary-color: #5469d4;--primary-shadow-color: #5469d433;--primary-background-color: rgba(84, 105, 212, 0.05);--select-background-color: #f4f7ff;--icon-background-color: #f1f3fe;--select-border-color: #e9eefc;--homepage-container-px: 130px;--default-text-color: rgb(60, 66, 87);--gray-text-color: rgba(60, 66, 87, 0.7);--white-color: #fff;--top-nav-color: #f7fafc;--code-background-color: #212d63;--code-gray-background-color: rgb(79, 86, 107);--code-light-background-color: #f7fafc;--code-toolbar-color: #212d63;--code-gray-toolbar-color: #3c4257;--code-light-toolbar-color: #ffffff;--code-light-border-color: #e3e8ee;--code-filename-color: #a4cdfe;--code-gray-filename-color: #dadce1;--code-light-filename-color: #f7fafc;--code-block-text-color: #f5fbff;--purple-bg-color: #7147e81a;--green-bg-color: #0084761a;--pink-bg-color: #b02aac1a;--purple-icon-color: #7147e8;--green-icon-color: #008376;--pink-icon-color: #b02aac;--beta-label-color: #0950C5;--beta-label-bg-color: #E4EEFF;--prod-label-color: #81C562;--prod-label-bg-color: #EEFBE7;--stable-label-color: #1890ff;--stable-label-bg-color: #e6f7ff;--connector-icon-bg-color: #F8F8F8;--green-tag-color: #43A047;--green-tag-bg-color: #43A0471A;--orange-tag-color: #FF7C50;--orange-tag-bg-color: #FF7C501A}body{font-family:\"DM Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica,\n Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:var(--default-text-color);margin:0;font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-weight:600;font-family:\"DM Sans\"}b,strong{font-weight:600}p{line-height:1.5em;margin:8px 0px 0px 0px;color:#414651}h1{font-size:36px;line-height:44px;color:#222244!important;margin-bottom:10px!important}h2{font-size:30px;line-height:38px}h3{font-size:24px;line-height:32px}h4{font-size:20px;line-height:30px}h5{font-size:18px;line-height:28px}h6{font-size:16px;line-height:24px}a{color:var(--primary-color);font-weight:500}li::marker{color:var(--primary-color)}ol{list-style:decimal;margin-top:16px;margin-left:16px}ol li::marker{color:var(--default-text-color)}li>ul{margin-top:0px;margin-left:16px}pre{border-radius:6px;background-color:var(--code-background-color)}pre,code{-ms-overflow-style:none;scrollbar-width:none}*::-webkit-scrollbar{display:none}*{scrollbar-width:none}pre::-webkit-scrollbar,code::-webkit-scrollbar{display:none}a.link{color:#004CD3;font-weight:600;text-decoration:none;border:none}a.link:hover{text-decoration:underline}.connector-tab{display:block;width:100%;text-align:start;padding:8px;cursor:pointer;border-radius:4px}.connector-tab:hover{background-color:var(--primary-background-color)}.active-connector{border:0.5px solid var(--select-border-color);background-color:var(--primary-background-color);color:var(--primary-color);font-weight:600}.divider{color:var(--default-border-color)}.icons{height:2rem;width:2rem}.cloud-button{border-radius:1rem;border:1px solid rgb(194, 128, 255);background-color:rgb(194, 128, 255)}.search-box{height:2.25rem;width:550px;border:1px solid #f4f4f4;border-radius:0.5rem;background-color:#f4f4f4;padding:4px 20px;color:#9e9d9d;display:flex;align-items:center}.search{width:90%;height:90%;border:none;background-color:#f4f4f4;outline:none}.overview-container{width:100vw;display:flex;flex-direction:column;justify-content:center;padding:50px 10%;background:#f4f7ff}.overview-heading{font-weight:700;font-size:22px;line-height:42px;margin-bottom:12px}.container-heading{font-weight:700;font-size:22px;line-height:42px;margin-bottom:40px}.cards-container{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px}.blogs-container{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px}.homepage-containers{padding:0px 10%;margin:80px 0px 0px 0px}#myUL{list-style-type:none;margin:0;padding:0}.nested{display:none}.active{display:block;color:var(--primary-color)}.DownArrow{display:none}.RightArrow{display:block}.highlightedCode{background-color:#1a2652}.page-404{height:calc(100vh - var(--top-nav-height) - var(--main-nav-height))}.content{flex-grow:0;flex-shrink:1}.non-collapsed-content{width:calc(100vw - var(--side-nav-width))}.collapsed-content{width:calc(100vw - var(--side-nav-collapsed-width))}.card-icon-container{padding:8px;width:fit-content;border-radius:10px}.card-purple-icon{background-color:var(--purple-bg-color);border:1px solid #7147e8}.card-green-icon{background-color:var(--green-bg-color);border:1px solid #008376}.card-pink-icon{background-color:var(--pink-bg-color);border:1px solid #b02aac}.nav-bar-container{position:sticky;top:0px;z-index:100}.min-width-600{min-width:600px}@media (max-width: 1240px){.blogs-container{grid-template-columns:1fr 1fr}}@media (max-width: 900px){.cards-container{grid-template-columns:1fr 1fr}.blogs-container{grid-template-columns:1fr}.overview-container{padding:20px 60px;width:100%}.homepage-containers{padding:20px 60px;margin:32px 0px 0px 0px}}@media (max-width: 600px){.cards-container{grid-template-columns:1fr}.non-collapsed-content{display:none}.collapsed-content{width:calc(100% - 41px)}}#header h1,#header p{display:none!important}.mdx-content{margin-top:0px!important}.api-page-container{display:grid;grid-template-columns:var(--api-side-nav-width) calc(100vw - var(--api-side-nav-width))}.hash-link{overflow:hidden;width:0px;height:0px;display:block;visibility:hidden;text-decoration:none;pointer-events:none;margin-top:-300px!important;padding-top:300px}.cookie-modal{position:fixed;bottom:0;background-color:#F8FBFC;z-index:20;padding:1rem;box-shadow:var(--shadow-card);transform:translateY(100%);transition:transform 1.2s ease-in-out, visibility 1.2s ease-in-out;visibility:hidden;border:1px solid rgb(201, 196, 196);border-radius:10px}.cookie-modal p{color:#292929;font-weight:300}.cookie-modal-buttons{margin-top:2rem;display:flex;gap:0.75rem;justify-content:flex-end}.button{border-radius:1.5rem;padding:0.5rem 2rem;font-size:0.875rem;cursor:pointer;border:none}.button-accept{background-color:#7147E8;color:white}.button-reject{background-color:white;color:#7147E8;border:1px solid #7147E8}@media (min-width: 640px){.cookie-modal{margin:1.25rem;max-width:36rem}}@media (min-width: 1024px){.cookie-modal{max-width:48rem}}.cookie-modal.visible{transform:translateY(0);visibility:visible}.brand-docs-banner{font-weight:500;padding:0px 8px;border-radius:12px;margin-top:16px;width:fit-content}.breadcrumb-item:first-child{display:none}.breadcrumb-item:last-of-type a{color:#414651;pointer-events:none;cursor:text;text-decoration:none}#page-loader{position:fixed;top:0;left:0;width:0%;height:3px;background:linear-gradient(90deg, #3b82f6, #8b5cf6);z-index:9999;transition:width 0.3s ease}[data-component-part=\"version-select-trigger\"]{background:#EFF8FF!important;border:1.5px solid #B2DDFF!important;border-radius:100px!important;overflow:visible!important;padding:4px 14px!important;height:32px!important;font-weight:600!important;font-size:13px!important}[data-component-part=\"version-select-trigger\"]:hover{background:#E0F2FE!important;border-color:#7DD3FC!important}[data-component-part=\"version-select-trigger\"][data-state=\"open\"],[data-component-part=\"version-select-trigger\"][aria-expanded=\"true\"]{background:#DBEAFE!important;border-color:#93C5FD!important}[data-component-part=\"version-select-trigger\"] span{color:#026AA2!important;font-weight:600!important;max-width:none!important}[data-component-part=\"version-select-item\"]{border-radius:8px!important;font-size:13px!important;font-weight:500!important;padding:6px 12px!important;cursor:pointer!important}[data-component-part=\"version-select-item\"][data-state=\"checked\"],[data-component-part=\"version-select-item\"][aria-checked=\"true\"]{color:#1570EF!important;background:#EFF8FF!important;font-weight:600!important}#navbar .border-b{border:none}#navbar .nav-tabs{background-color:#FAFAFA;width:max-content;border:1px solid #EAECF5;border-radius:100px;margin:24px auto 4px;column-gap:16px;max-width:100%;overflow-x:auto;display:flex;flex-wrap:nowrap;justify-content:flex-start}#navbar .nav-tabs .nav-tabs-item{padding:12px 24px;font-size:16px;white-space:nowrap;flex-shrink:0;color:#414651;font-weight:500}@media (max-width: 1440px){#navbar .nav-tabs{column-gap:4px}#navbar .nav-tabs .nav-tabs-item{padding:10px 16px;font-size:15px}}#navbar .nav-tabs a[href^=\"/how-to-guides/\"]{display:none!important}#navbar .nav-tabs a[href^=\"/ai-2-0/how-to-guides/\"]{display:none!important}#navbar .nav-tabs .nav-tabs-item:hover{color:#181D27;text-decoration:none}#navbar .nav-tabs .nav-tabs-item .absolute{display:none!important}#navbar .nav-tabs .nav-tabs-item[data-active=\"true\"]{color:#1570EF;background-color:#EFF8FF;border:1.5px solid #B2DDFF;border-radius:100px;font-weight:600}#navbar .nav-tabs:has(a[href^=\"/how-to-guides/\"][data-active=\"true\"]) a.nav-tabs-item[href=\"/how-to-guides\"]{color:#1570EF;background-color:#EFF8FF;border:1.5px solid #B2DDFF;border-radius:100px;font-weight:600}body:has(.homepage-container) #navbar .nav-tabs .nav-tabs-item[data-active=\"true\"]:not([href=\"/\"]):not([href=\"/ai-2-0\"]){color:#414651;background-color:transparent;border:1.5px solid transparent;border-radius:0;font-weight:500;text-shadow:none}body:has(.homepage-container) #navbar .nav-tabs .nav-tabs-item[href=\"/\"],body:has(.homepage-container) #navbar .nav-tabs .nav-tabs-item[href=\"/ai-2-0\"]{color:#1570EF;background-color:#EFF8FF;border:1.5px solid #B2DDFF;border-radius:100px;font-weight:600;text-shadow:-0.2px 0 0 currentColor, 0.2px 0 0 currentColor}#navbar .h-10{height:auto!important}.navbar-link a{background-color:transparent;color:#535862;font-weight:600}.nav-logo{height:36px}.navbar-link a:hover{color:#181D27;background-color:transparent}.products-container h2{color:#222244;font-size:22px;font-weight:600}.card{border:none;box-shadow:0px 4px 12px -1px rgba(10, 13, 18, 0.08);transition:all 0.3s ease}.card>*{padding:20px;transition:all 0.3s ease}.card h2{color:#181D27;font-size:18px;line-height:20px}.card:hover{box-shadow:0px 3px 3px -1.5px #0A0D120A,\n 0px 8px 8px -4px #0A0D1208,\n 0px 20px 24px -4px #0A0D1214;transform:translateY(-2px)}.card:hover>*{padding:24px;margin:-4px}.connector-page .card [data-component-part=\"card-content-container\"]{position:relative}.card [data-component-part=\"card-icon\"]:has(>svg){background-color:#e6f1ff;padding:24px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}body:not(:has(.homepage-container)) .card [data-component-part=\"card-icon\"]{width:auto!important;height:auto!important;min-width:32px!important;min-height:32px!important;align-self:flex-start!important}body:not(:has(.homepage-container)) .card [data-component-part=\"card-icon\"] img{width:32px!important;height:32px!important;object-fit:contain;flex-shrink:0}.connector-page div[data-component-part=\"card-icon\"]{background-color:#F8F9FC;padding:16px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center;width:auto!important;height:auto!important}.connector-page div[data-component-part=\"card-icon\"] svg,.connector-page div[data-component-part=\"card-icon\"] img{width:32px!important;height:32px!important;object-fit:contain;flex-shrink:0;position:relative;z-index:1}.prod-beta-chip{display:flex;gap:4px;font-size:10px;width:max-content;border-radius:100px;padding:0px 6px;font-weight:500;position:absolute;top:12px;right:12px}.prod-beta-chip.prod{color:#067647;background-color:#ECFDF3;border:1px solid #ABEFC6}.prod-beta-chip.beta{color:#175CD3;background-color:#EFF8FF;border:1px solid #B2DDFF}.prod-beta-chip img{margin:0px}.prod-beta-chip span{margin-top:-7px}#sidebar-content{border:none;top:132px!important;height:calc(100vh - 132px)!important}.sidebar-group-header{display:none}.my-2:has(ul.sidebar-group a[href^=\"/api-reference\"])>.sidebar-group-header,.my-2:has(ul.sidebar-group a[href*=\"/developer-guide/\"])>.sidebar-group-header{display:flex}.sidebar-group-header h5{color:#222244;font-size:14px;font-weight:600}#table-of-contents-content .toc-item a{color:#414651}#table-of-contents-content .toc-item a:hover{color:#414651;border-color:#D5D9EB}#table-of-contents-content .toc-item a.text-primary{color:#004CD3;border-color:#004CD3;font-weight:600}body:not(:has(.homepage-container)) .mdx-content h1,.products-container h1,.collate-ai-container h1{display:flex;flex-direction:column;align-items:flex-start;margin-top:0!important}body:not(:has(.homepage-container)) .mdx-content h1::before,.products-container h1::before,.collate-ai-container h1::before{content:\"Collate Documentation\";display:block;background-color:#F0F9FF;color:#0BA5EC;padding:4px 12px;border-radius:100px;font-size:14px;font-weight:600;line-height:1.5;margin-bottom:16px;width:fit-content;flex-shrink:0}h1.ConnectorName::before{position:absolute;top:-2px;left:0px}body:has(.homepage-container) #search-bar-entry,body:has(.homepage-container) #assistant-entry{display:none!important}.search-container{position:relative;margin-top:64px;display:flex;align-items:center;justify-content:center;width:100%;max-width:800px;margin-left:auto;margin-right:auto;padding:0px 6px}.homepage-search-input{width:100%;padding:18px 58px 18px 70px;border:2px solid #EAECF5;border-radius:100px;font-size:16px;color:#3C4257;cursor:pointer;transition:all 0.2s ease;box-sizing:border-box}.homepage-search-input::placeholder{color:#CECFD2;font-size:18px}.homepage-search-input:hover{background-color:#FFFFFF}.homepage-search-input:focus{outline:none;background-color:#FFFFFF;box-shadow:0 0 0 3px rgba(84, 105, 212, 0.1)}.ask-ai-icon-button{position:absolute;left:26px;top:12px;background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:20;pointer-events:auto}.ask-ai-icon{color:#9CA3AF;pointer-events:auto;width:40px!important;height:40px!important}.search-shortcut{position:absolute;right:20px;top:50%;transform:translateY(-50%);color:#9CA3AF;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;pointer-events:none;white-space:nowrap}.navbar-link:last-of-type a{background-color:#1570EF;color:white;border-radius:100px;display:flex;justify-content:center}.navbar-link:last-of-type a:hover{background-color:#0257cd}body:has(.how-to-guides-container) #sidebar-content,body:has(.sdk-container) #sidebar-content,body:has(.connector-page) #sidebar-content,body:has(.getting-started-container) #sidebar-content,body:has(.collate-ai-container) #sidebar-content{display:none}body:has(.how-to-guides-container) #content-container,body:has(.sdk-container) #content-container,body:has(.connector-page) #content-container,body:has(.getting-started-container) #content-container,body:has(.collate-ai-container) #content-container{max-width:1300px!important}.collate-ai-container{margin-top:10px}article iframe,.prose iframe{max-width:600px!important;width:100%!important;margin:0 auto!important;display:block!important;height:auto!important;aspect-ratio:16 / 9!important;border:none!important}@media (max-width: 1024px){.navbar-link:first-of-type{margin-top:20px}article iframe,.prose iframe{max-width:100%!important;width:100%!important;height:auto!important;aspect-ratio:16 / 9!important}}@media (max-width: 768px){article iframe,.prose iframe{max-width:100%!important;width:100%!important;margin:0!important;height:auto!important;aspect-ratio:16 / 9!important}}.card:not(:has([data-component-part=\"card-icon\"])){border:1px solid #EAECF5!important;background-color:#F8F9FC!important;box-shadow:none!important}.card.card:not(:has([data-component-part=\"card-icon\"])) h2{color:#004CD3;font-weight:500;font-size:20px;margin-bottom:12px;line-height:30px}.card.card:not(:has([data-component-part=\"card-icon\"])):hover h2{text-decoration:underline}.how-to-guides-container ul{list-style:none;padding-left:0}.how-to-guides-container ul li{padding-left:28px;position:relative;margin-bottom:8px}.how-to-guides-container ul li::before,.sdk-container ul li::before,.python-container ul li::before{content:'';position:absolute;left:0;top:6px;width:16px;height:16px;background-color:transparent;background-image:url(\"/public/images/icons/check-circle.svg\");background-size:contain;background-repeat:no-repeat}.sdk-container .card img{min-width:40px!important;width:40px!important;height:40px!important}.code-block,.code-block [data-component-part=\"code-block-root\"]{border:none!important;background-color:#3E444F!important;border-radius:16px!important;backdrop-filter:blur(40px)}.code-block pre,.code-block code,.code-block span{color:#E5E7EB!important;background-color:transparent!important}.code-block pre{background-color:transparent!important}.python-container{background-color:#FAFAFA;border-radius:12px;padding:6px 20px}.callout [data-component-part=\"callout-content\"]{color:#414651!important}@layer utilities{.callout [data-component-part=\"callout-content\"] a{color:var(--primary-color)!important}}.chat-assistant-floating-input{max-width:370px!important;margin-left:auto!important;margin-right:auto!important}div:has(>#chat-assistant-sheet){border:none}div:has(>#chat-assistant-sheet) .cursor-col-resize{display:none!important}#chat-assistant-sheet{margin-top:0.4rem!important;min-height:90%!important;border:1px solid #EAECF5;border-top-left-radius:24px;border-top-right-radius:24px;box-shadow:0px 2px 2px -1px #0A0D120A,\n 0px 4px 6px -2px #0A0D1208,\n 0px 12px 16px -4px #0A0D1214;background:#0A0D12;color:rgba(255, 255, 255, 0.9)}.chat-assistant-sheet-header span{color:rgba(255, 255, 255, 0.9)!important}.chat-assistant-sheet-header span.font-medium{font-size:0}.chat-assistant-sheet-header span.font-medium::before{content:\"Ask AI\";font-size:0.875rem;font-weight:600}.chat-assistant-sheet-header svg{width:16px;height:16px;color:rgba(255, 255, 255, 0.8)}#chat-assistant-textarea{background-color:#373A41;border-radius:100px;color:rgba(255, 255, 255, 0.9);padding:14px 48px 14px 16px;max-height:52px!important;overflow-y:auto}#chat-assistant-textarea::placeholder{color:rgba(255, 255, 255, 0.6)}.chat-assistant-send-button{width:32px!important;height:32px!important;top:50%!important;bottom:auto!important;transform:translateY(-50%);background-color:#2970FF}#chat-assistant-textarea~span{top:50%!important;bottom:auto!important;transform:translateY(-50%)}.chat-assistant-send-button:hover{background-color:#004EEB}.chat-assistant-send-button svg{width:16px;height:16px}div:has(>div>#chat-assistant-textarea){border:none!important;background-color:#373A41}#chat-content{margin-top:12px}#chat-content .rounded-2xl.bg-gray-100{background:#22262F!important}#chat-content button{color:rgba(255, 255, 255, 0.6)}#chat-content button[aria-label*=\"Vote\"]:hover,#chat-content button[aria-label=\"Copy chat response\"]:hover{color:#22262F}#chat-content .whitespace-pre-line,#chat-content li{color:rgba(255, 255, 255, 0.7)}#chat-content .rounded-2xl.bg-gray-100 .text-gray-800,#chat-content .rounded-2xl.bg-gray-100 div{color:#FFFFFFE5!important}#assistant-entry{margin-left:auto;border:2px solid #1570EF;background-color:transparent}#assistant-entry svg,#assistant-entry span{background:none;-webkit-text-fill-color:#1570EF;font-weight:600;color:#1570EF}#assistant-entry:hover{background:linear-gradient(45deg, #175CD3 0%, #1570EF 100%)}#assistant-entry:hover svg,#assistant-entry:hover span{background:none;-webkit-background-clip:unset;-webkit-text-fill-color:white;background-clip:unset;color:white}div:has(>#search-bar-entry):has(>#assistant-entry){flex-direction:row-reverse!important}div[data-component-part=\"code-group-tab-bar\"] p{margin-top:0px}table{width:100%;border-collapse:collapse;margin:16px 0;border:1px solid #EAECF5;border-radius:12px}table thead{background-color:#F8F9FC}table th{padding:12px 24px!important;text-align:left;font-weight:600;color:#181D27;border-bottom:2px solid #EAECF5}table td{padding:12px 24px!important;color:#414651;border-bottom:1px solid #EAECF5}table tr:last-child td{border-bottom:none}table tr:hover{background-color:#F8F9FC}.space-x-2>:not([hidden])~:not([hidden]){margin:0px}.header-logo{max-width:max-content;border-radius:32px 80px 0 0;background:#224;padding:9px 44px 10px 45px;display:flex;gap:20px;align-items:center}.header-logo .collate-logo{width:84px;height:14px}.header-logo .x-icon{width:18px;height:18px}.header-logo .om-logo{width:64px;height:25px}.collate-summit{margin:0px auto 72px;max-width:1200px;padding:20px}.summit-content{background-image:url('/public/images/banner-bg.png');background-size:100% 100%;background-position:center;background-repeat:no-repeat;border-radius:0px 20px 20px 20px;padding:28px 44px;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative;z-index:24}.summit-content .summit-header{font-size:48px;font-weight:400;color:#224;line-height:52px}.summit-content p{color:#5816DC;margin-top:0px;margin-left:4px;font-size:28px;font-weight:600}.summit-content .explore-collate{background-color:#FBE200;color:black;font-size:18px;white-space:nowrap;padding:11px 20px;border-radius:6px;font-weight:600}.summit-content .explore-collate:hover{background-color:#dec908}.summit-content .explore-collate a{color:black;font-weight:600}@media (max-width: 768px){.summit-content{flex-direction:column;align-items:center;text-align:center;padding:48px 24px}}@media (max-width: 640px){.header-logo{padding:9px 36px 10px 24px}}"},{"filePath":"public/modal.css","content":".modal{position:fixed;left:0;top:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;opacity:0;transition:all 0.3s ease-in-out;pointer-events:none;z-index:999}.modal.enter-done{opacity:1;pointer-events:visible}.modal.exit{opacity:0}.modal-content{margin:0 10px;width:600px;height:300px;background-color:var(--white-color);transition:all 0.3s ease-in-out;transform:translateY(-200px)}.modal.enter-done .modal-content{transform:translateY(0)}.modal.exit .modal-content{transform:translateY(-200px)}"},{"filePath":"snippets/components/CodePreview.css","content":".split-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start}@media (max-width: 768px){.split-layout{grid-template-columns:1fr;gap:1rem}}.code-content .code-block [data-component-part=\"code-block-root\"]{background-color:#0b1e3d!important}.content-panel{display:flex;flex-direction:column;gap:1.5rem;padding-right:1rem}.content-section{padding:0.5rem 1rem;border-left:2px solid transparent;border-radius:6px;cursor:pointer;position:relative;box-sizing:border-box;transition:background 0.25s ease,\n border-color 0.25s ease,\n box-shadow 0.25s ease}.content-section:hover{background:linear-gradient(\n 90deg,\n rgba(176, 176, 176, 0.08) 0%,\n rgba(176, 176, 176, 0.03) 100%\n );border-left-color:rgba(176, 176, 176, 0.5)}.content-section.active{background:linear-gradient(\n 90deg,\n rgba(176, 176, 176, 0.15) 0%,\n rgba(176, 176, 176, 0.05) 100%\n );border-left-color:#b0b0b0;box-shadow:0 2px 8px rgba(176, 176, 176, 0.1),\n inset 0 0 20px rgba(176, 176, 176, 0.05);color:rgb(63, 65, 69)}.content-section.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(\n 180deg,\n #c0c0c0 0%,\n #b0b0b0 50%,\n #a0a0a0 100%\n )}.content-section h4{margin:0 0 0.75rem 0;font-size:1rem;font-weight:600;color:#1a1a1a}.content-section p{margin:0.5rem 0;line-height:1.6;color:#4a4a4a}.content-section code{background:rgba(0, 0, 0, 0.05);padding:0.2em 0.4em;border-radius:3px;font-size:0.9em}.code-panel{position:sticky;top:calc(var(--navbar-height, 64px) + 6rem);height:calc(\n 100vh - var(--navbar-height, 64px) - 6rem\n );display:flex;flex-direction:column;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#1e1e1e;box-shadow:0 4px 6px rgba(0, 0, 0, 0.1)}.code-panel [data-component-part=\"code-block-root\"]{padding:0rem 1rem}.code-panel .code-block{margin:0}.code-header{display:flex;justify-content:space-between;align-items:center;padding:0.4rem 1rem;background:#0b1e3d;border-bottom:1px solid #404040;color:white;font-size:0.875rem;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace}.copy-btn{display:flex;align-items:center;gap:0.5rem;padding:0.375rem 0.75rem;background:transparent;border:1px solid #404040;border-radius:4px;color:#a0a0a0;cursor:pointer;transition:all 0.2s ease;font-size:0.875rem}.copy-btn:hover{background:#404040;border-color:#606060;color:#fff}.copy-btn svg{width:16px;height:16px}.copy-btn .icon-check{display:none}.copy-btn[data-copied=\"true\"] .icon-copy{display:none}.copy-btn[data-copied=\"true\"] .icon-check{display:block;color:#10b981}.code-content{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:auto;background:#0b1e3d;scroll-behavior:smooth;padding:14px 0px}.code-content::-webkit-scrollbar{width:8px;height:8px}.code-content::-webkit-scrollbar-track{background:#2d2d2d}.code-content::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.code-content::-webkit-scrollbar-thumb:hover{background:#606060}.code-content pre{margin:0;padding:0rem 1rem;background:transparent;color:#d4d4d4;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace;font-size:0.875rem;line-height:1.6;white-space:pre;word-wrap:normal;overflow-wrap:normal;position:relative}.code-content pre code{background:transparent;padding:0;color:inherit;font-size:inherit;border-radius:0;display:block;white-space:pre}.code-line{display:block;padding-left:1rem;padding-right:1rem;margin-left:-1rem;margin-right:-1rem;transition:all 0.2s ease;position:relative;white-space:pre;line-height:inherit;border-left:2px solid transparent}.code-line::after{content:'\\a';white-space:pre}.code-line.highlighted{background:rgba(200, 200, 200, 0.15)!important;border-left:2px solid #d0d0d0;padding-left:calc(1rem - 2px);min-height:1.5em}.code-line.highlighted::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:#d0d0d0;z-index:1}.code-line.highlighted+.code-line.highlighted{border-top:none}.code-line.highlighted:not(.code-line.highlighted+.code-line.highlighted){border-top-left-radius:4px}.code-line.highlighted:not(:has(+.code-line.highlighted)){border-bottom-left-radius:4px}.line-number{display:inline-block;min-width:2.5em;padding-right:1em;margin-right:0.5em;text-align:right;color:#858585;user-select:none;border-right:1px solid #404040}@media (prefers-color-scheme: dark){.content-section p{color:#c0c0c0}.content-section code{background:rgba(255, 255, 255, 0.1)}.code-panel{border-color:#404040}}@media (max-width: 768px){.code-panel{position:relative;top:0;max-height:400px}.split-layout{grid-template-columns:1fr}}.code-content [data-testid=\"copy-code-button\"]{display:none!important}.code-content #ask-ai-code-block-button{display:none!important}div[data-fade-overlay=\"true\"]{--fade-color-light: transparent !important;--fade-color-dark: transparent !important;display:none!important}:has([data-floating-buttons])>[data-component-part=code-block-root] pre>code{padding-right:0px!important}@media (max-width: 768px){.code-panel{position:relative;top:0;height:400px}}"},{"filePath":"snippets/components/ConnectorDetailsHeader/ConnectorDetailsHeader.css","content":".container{margin:48px 0px!important;display:flex;flex-direction:column;gap:6px}.Heading{display:flex;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--default-border-color)}.ConnectorName{font-size:32px;font-weight:700;margin-bottom:0px}.PlatformDetails{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--gray-text-color)}.PlatformIcon{padding:4px;background-color:var(--connector-icon-bg-color);border:1px solid var(--default-border-color);border-radius:12px}.ImageContainer{background-color:var(--connector-icon-bg-color);padding:12px;border:1px solid var(--default-border-color);border-radius:28px}.IconContainer{background-color:#F8F9FC;padding:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;flex-shrink:0}.ConnectorIcon{width:32px!important;height:32px!important;object-fit:contain;display:block;margin:0}.FeaturesHeading{font-size:14px;color:var(--gray-text-color)}.SubHeading{display:flex;flex-direction:column;gap:8px}.FeaturesList{display:flex;flex-wrap:wrap;gap:12px}.FeatureTag{padding:4px 10px;font-size:12px;border-radius:14px;width:fit-content;display:flex;align-items:center;gap:4px}.AvailableFeature{color:var(--green-tag-color);border:1px solid var(--green-tag-color);background-color:var(--green-tag-bg-color)}.UnavailableFeature{color:var(--orange-tag-color);border:1px solid var(--orange-tag-color);background-color:var(--orange-tag-bg-color)}.StageBadge{font-size:10px;height:auto;color:var(--green-tag-color)}"},{"filePath":"snippets/components/ConnectorGrid/Integrations.css","content":".no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.integrations-section{padding:3rem 1rem 9rem;max-width:1300px;margin:0 auto}.integrations-card{background:#FAFAFA;border-radius:12px;border:1px solid #EAECF5;display:flex;height:660px;overflow:hidden;position:relative;padding:40px 40px 40px 0px}.integrations-mobile-header{display:none;width:100%;background:#ffffff;border-bottom:1px solid #d9daee;padding:32px;font-size:20px;justify-content:center;align-items:center;gap:12px;position:sticky;top:0;z-index:15;cursor:pointer}.arrow{transition:transform 0.3s ease}.arrow.open{transform:rotate(180deg)}.arrow-down{width:10px;height:10px}.integrations-sidebar{width:220px;border-right:1px solid #EAECF5;display:flex;flex-direction:column;position:sticky;top:0;z-index:5}.sidebar-item{display:block;width:100%;padding:12px 22px;font-size:16px;color:#535862;cursor:pointer;white-space:nowrap;flex-shrink:0;text-align:right;font-weight:500;border-right:2px solid transparent}.sidebar-item:hover{color:#414651;border-right:2px solid #D5D9EB}.sidebar-item.active{border-right:2px solid #004CD3;font-weight:600;color:#004CD3}.integrations-grid{flex:1;padding:20px 32px;overflow-y:auto;display:grid;gap:20px;align-content:flex-start}.integrations-grid.desktop{grid-template-columns:repeat(auto-fill, minmax(200px, 1fr))}.integrations-grid.mobile{display:none}.integration-card{max-height:110px;text-decoration:none;display:flex;align-items:center;gap:12px;background-color:white;box-shadow:0px 4px 12px -1px #0A0D1214;border-radius:12px;padding:12px 20px;box-sizing:border-box;transition:all 0.3s ease}.integration-card span{color:#181D27;font-weight:500;font-size:16px;line-height:120%}a.integration-card span:hover{text-decoration:none}a.integration-card:hover{box-shadow:0px 3px 3px -1.5px #0A0D120A,\n 0px 8px 8px -4px #0A0D1208,\n 0px 20px 24px -4px #0A0D1214;padding:16px 24px;margin:-4px;text-decoration:none;transform:translateY(-2px)}.integration-card img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.load-more{grid-column:span 2;padding:24px;font-size:20px;background:#ffffff;border:none;cursor:pointer}@media (max-width: 1024px){.integrations-card{flex-direction:column;height:auto;padding:0px;overflow:auto}.integrations-mobile-header{display:flex}.integrations-sidebar{display:none;width:100%;position:absolute;top:98px;left:0;right:0;border-right:none;border-bottom:1px solid #d9daee;background:#ffffff;overflow-y:scroll}.integrations-sidebar.open{display:block}.sidebar-item{text-align:center}.sidebar-item.active{border-right:none}.integrations-grid.desktop{display:none}.integrations-grid.mobile{display:grid;grid-template-columns:repeat(2, 1fr);padding:24px}}"},{"filePath":"style.css","content":".homepage-container,.sdk-api-container{max-width:1440px;margin:0 auto;padding:0px 10px 40px}.collate-ai-iframe{margin:32px 0px 40px}.banner-content{padding:96px 0;background:radial-gradient(46.63% 44.4% at 50% 50%, rgba(201, 207, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%)}.page-header{color:#181D27!important;font-weight:600;font-size:56px;text-align:center;margin-top:24px}#header-highlight{background:linear-gradient(to top, #016AFB 0%, #00E0EE 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.page-description{text-align:center;color:#717680;font-size:20px;margin-top:20px}.header-description{font-size:18px;margin-top:16px}.chips{display:flex;justify-content:center;gap:24px;margin-top:24px}.chip{padding:8px 12px;border-radius:100px;box-shadow:0px 4px 12px -1px rgba(10, 13, 18, 0.08);display:flex;gap:12px;align-items:center;font-weight:500;width:max-content}.chip.blue{background:linear-gradient(93.13deg, #EBF9FF 0%, #ECF4FF 189.43%);color:#194185}.chip.blue:hover{background:linear-gradient(93.13deg, #E5F7FF 0%, #DDECFF 189.43%);color:#175CD3}.chip.purple{background-color:#F0F9FF;color:#0BA5EC;margin:0 auto;padding:8px 20px;box-shadow:none;font-size:14px}.release-banner{max-width:1300px;margin:0 auto;background:linear-gradient(135deg, rgba(195, 201, 252, 0.5) 0%, rgba(142, 234, 252, 0.5) 100%);padding:48px 100px;border-radius:24px}.banner-image{width:1200px;border:3px solid #BED2FB;border-radius:16px;box-shadow:0px 2px 2px -1px #0A0D120A,\n 0px 4px 6px -2px #0A0D1208,\n 0px 12px 16px -4px #0A0D1214}.release-banner-content{display:grid;grid-template-columns:repeat(2, 1fr);gap:50px;align-items:center}.release-banner-content h2{color:#181D27;font-weight:500;font-size:32px;margin-bottom:16px}.release-banner-content p{color:#414651;font-size:18px;margin-bottom:40px}.release-banner-content a{background-color:white;box-shadow:0px 2px 2px -1px #0A0D120A,\n 0px 4px 6px -2px #0A0D1208,\n 0px 12px 16px -4px #0A0D1214;padding:12px 24px;border-radius:99px;font-size:18px;font-weight:500;color:#131313}.release-banner-content a:hover{text-decoration:underline}.guides,.highlights,.quick-links{padding:48px 48px 96px}.guide-header{font-weight:500;font-size:40px;color:#181D27;text-align:center;margin-top:24px}.guide-list{display:grid;grid-template-columns:repeat(7, 1fr);gap:24px;margin:0 auto;margin-top:52px;max-width:100%}.guide-card{box-shadow:0px 4px 12px -1px rgba(10, 13, 18, 0.08);padding:20px;border-radius:20px;display:flex;flex-direction:column;align-items:center;color:#252B37;font-weight:500;font-size:18px;gap:16px;width:100%;transition:all 0.3s ease;text-align:center}.guide-card:hover{box-shadow:0px 20px 24px -4px #0A0D1214;transform:translateY(-4px);padding:24px;margin:-4px}a.guide-card img{width:80px!important;height:80px!important}.see-all{text-align:center;margin:64px auto 0px;color:#004CD3;font-size:18px;font-weight:500;box-shadow:0px 2px 2px -1px rgba(10, 13, 18, 0.04),\n 0px 4px 6px -2px rgba(10, 13, 18, 0.03),\n 0px 12px 16px -4px rgba(10, 13, 18, 0.08);width:max-content;padding:12px 24px;background-color:#EAF4FF;border-radius:100px}.see-all:hover{background-color:#CDE4FE;color:#1849A9}.highlight-cards{max-width:850px;display:grid;grid-template-columns:repeat(2, 1fr);gap:32px;margin:60px auto 0px}.highlight-card{box-shadow:0px 4px 12px -1px rgba(10, 13, 18, 0.08);padding:20px;border-radius:12px;transition:all 0.3s ease}.highlight-card p{font-size:18px;color:#717680}.highlight-card:hover{box-shadow:0px 3px 3px -1.5px rgba(10, 13, 18, 0.04),\n 0px 8px 8px -4px rgba(10, 13, 18, 0.03),\n 0px 20px 24px -4px rgba(10, 13, 18, 0.08);padding:24px;margin:-4px;transform:translateY(-2px)}.highlight-card .icon{width:48px!important;height:48px!important}.highlight-header{font-size:20px;font-weight:500;color:#181D27;margin-top:12px}.read-more{margin-top:20px;display:flex;gap:10px;align-items:center;color:#175CD3;font-weight:600}.highlight-card:hover .read-more{color:#1849A9}.read-more img{margin-top:2px}.links{margin:0 auto;margin-top:40px;max-width:80%;display:grid;grid-template-columns:repeat(3, 1fr);justify-items:center}.link-header{color:#181D27;display:flex;gap:10px;align-items:center;margin-bottom:16px}.link-header h3{font-size:20px;font-weight:500}.link-list{color:#175CD3;font-weight:500;display:flex;flex-direction:column;gap:12px}.link-list a:hover{text-decoration:underline;color:#1849A9}.collate-video{background:linear-gradient(135deg, rgba(195, 201, 252, 0.5) 0%, rgba(142, 234, 252, 0.5) 100%);border-radius:24px;max-width:90%;margin:32px auto 64px;padding:36px 80px}.video-content{display:grid;grid-template-columns:repeat(2, 1fr);align-items:center;gap:16px}.video-container{width:100%;max-width:600px;margin:20px auto;padding:0 16px;box-sizing:border-box}.video-container iframe{width:100%;height:auto;aspect-ratio:16 / 9;display:block;border-radius:20px;border:3px solid #BED2FB}.video{border-radius:20px;border:3px solid #BED2FB;max-width:100%;height:auto;box-shadow:0px 2px 2px -1px rgba(10, 13, 18, 0.04),\n 0px 4px 6px -2px rgba(10, 13, 18, 0.03),\n 0px 12px 16px -4px rgba(10, 13, 18, 0.08)}.video-chip{background-color:rgba(255, 255, 255, 0.4);width:max-content;padding:12px 8px;border-radius:24px;color:#0086C9;font-size:12px}.video-description{color:#414651;font-size:18px;max-width:90%}.product-demo{background-color:#0BA5EC;padding:8px 14px;color:white;border-radius:24px;margin-right:8px;font-size:12px}.video-header{text-align:left;margin-bottom:16px}.external-links{padding:36px 80px}.explore-container{display:grid;grid-template-columns:repeat(3, 1fr)}.explore-items{display:flex;gap:20px;width:100%}.explore-header{color:#252B37;font-size:24px;font-weight:600;letter-spacing:-2%}.explore-desc{font-size:18px;color:#717680;margin-top:4px}.explore-card{background-color:#F4F9FF;box-shadow:0px 4px 12px -8px #0026543D;padding:12px 20px;border-radius:12px;color:#535862;font-size:14px;font-weight:400;transition:all 0.3s ease}.explore-card:hover{box-shadow:0px 3px 3px -1.5px rgba(10, 13, 18, 0.04),\n 0px 8px 8px -4px rgba(10, 13, 18, 0.03),\n 0px 20px 24px -4px rgba(10, 13, 18, 0.08);padding:16px 24px;margin:-4px;transform:translateY(-2px)}.explore-card-header{display:flex;gap:10px}.explore-card-header div{color:#252B37;font-weight:500;font-size:18px}.home-footer{display:flex;justify-content:space-between;padding:36px 80px 0px;color:#717680}.home-footer-links{display:flex;gap:20px}.footer-link-name{color:#252B37;font-weight:400}.footer-link-name:hover{color:#181D27;text-decoration:underline}.home-footer-social{display:flex;gap:8px}.social-link{padding:4px 8px;border-radius:4px}.social-link:hover{background-color:#F8F9FC}.connector-page div[data-component-part=\"card-icon\"]{background-color:#F8F9FC;padding:21px 20px;border-radius:100%;display:inline-flex;align-items:center;justify-content:center}.connector-page div[data-component-part=\"card-icon\"]>*{position:relative;z-index:1}.connector-page .card [data-component-part=\"card-content-container\"]{padding:16px}.card-details{display:flex;gap:6px;align-items:center}.card-logo{width:20px;height:20px;margin:0px}.products-container{max-width:1150px;margin:0 auto;padding:60px 14px 40px}.products-container h1{font-size:30px!important}.products-container [data-as=\"p\"]:first-of-type{display:block;margin-bottom:40px}.product-cards{margin-top:16px;padding-bottom:48px}.product-cards .card [data-component-part=\"card-content\"]{margin-top:4px}.products-container .external-links{padding:64px 0px 36px}.products-container .home-footer{padding:36px 0px 0px}.sdk-api-container{padding:72px 0px;max-width:1300px}.sdk-api-container span[data-as=\"p\"]{display:block;margin-bottom:8px;color:#414651}.sdk-api-container a.link{color:#004CD3!important}.sdk-api-container h3{color:#222244;font-size:20px}.api-header{display:grid;grid-template-columns:repeat(2, 1fr);gap:40px;margin-top:16px;padding-bottom:56px;border-bottom:1px solid #EAECF5}.sdk-api-container .code-group{background-color:#515865}.sdk-api-container .code-group button{color:white!important;font-weight:600;font-size:14px}.sdk-api-container .code-group button .absolute{display:none}.sdk-api-container [data-component-part=\"code-block-root\"]{background-color:#3E444F!important}.sdk-api-container [data-component-part=\"code-block-root\"] pre,.sdk-api-container [data-component-part=\"code-block-root\"] pre .line span{color:white!important}.client-sdks{border:1px solid #E9EAEB;border-radius:8px}.client-header{color:#414651;font-weight:600;padding:24px 24px 0px;background-color:#FAFAFA;border-top-left-radius:8px;border-top-right-radius:8px}.client-sdks [role=\"tablist\"]{margin-bottom:0px!important;display:flex;justify-content:center;gap:100px}.client-sdks [data-component-part=\"tabs-list\"]{padding:10px 24px 0px;background-color:#FAFAFA}.client-sdks [data-active=\"true\"]{border-bottom:3px solid #1570EF}.client-sdks [data-active=\"false\"]{border-bottom:none}.client-sdks [data-component-part=\"tab-button\"]{display:flex;flex-direction:column;color:#181D27!important}.client-sdks [data-component-part=\"tab-button\"] img{width:40px;height:40px}.client-sdks [data-component-part=\"tab-content\"]{background-color:#F5F5F5;padding:10px 24px}.api-header-auth{display:grid;grid-template-columns:repeat(2, 1fr);gap:40px;padding-top:48px;padding-bottom:56px;border-bottom:1px solid #EAECF5}.api-header-auth h2{color:#222244;font-size:20px;font-weight:600;margin-bottom:12px}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] div:first-child span{color:white!important;font-size:14px;font-weight:600;margin-left:8px}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] [data-testid=\"copy-code-button\"] svg{color:white}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] .group{background-color:#252B37;border:1px solid #5B626F;padding:4px;border-radius:4px;color:white}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] .group div svg:first-of-type{display:none!important}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] .group div p{color:white;margin:0px}.sdk-api-container [data-component-part=\"code-group-tab-bar\"] .group div:hover{background-color:transparent}@media (max-width: 1280px){.guide-list{grid-template-columns:repeat(3, 1fr)}.links{max-width:100%}.collate-video,.external-links,.home-footer{padding:32px 56px}.release-banner{padding:40px 52px}}@media (max-width: 1220px){.chips{display:grid;grid-template-columns:repeat(4, 1fr);max-width:auto;justify-items:center}}@media (max-width: 1024px){.release-banner-content{grid-template-columns:repeat(1, 1fr)}.release-banner h2{font-size:28px}.video-content{grid-template-columns:repeat(1, 1fr);gap:28px}.explore-container{grid-template-columns:repeat(1, 1fr);gap:32px}.home-footer{display:grid;grid-template-columns:repeat(3, 1fr);row-gap:20px}.collate-tm{grid-column:span 3/span 3}.home-footer-links{grid-column:span 2/span 2}.home-footer-social{justify-self:flex-end}}@media (max-width: 768px){.page-header{font-size:48px}.chips{grid-template-columns:repeat(2, 1fr);max-width:400px;margin:40px auto 0}.guide-list{grid-template-columns:repeat(2, 1fr)}.links{grid-template-columns:repeat(2, 1fr);justify-items:start;row-gap:40px}.video-container{padding:0 12px;margin:16px auto}.external-links,.home-footer{padding:24px}.home-footer-links{flex-direction:column}}@media (max-width: 640px){.chips{grid-template-columns:repeat(1, 1fr);max-width:auto;justify-items:center}.release-banner{padding:40px 20px}.guide-list{grid-template-columns:repeat(1, 1fr)}.highlight-cards{grid-template-columns:repeat(1, 1fr)}.links{grid-template-columns:repeat(1, 1fr)}.collate-video{padding:24px}.explore-items{flex-direction:column}}.chat-assistant-floating-input::before{display:none!important}"},{"filePath":"snippets/components/CodeLayout/CodeLayout.css","content":".code-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start;width:100%}.code-layout h2{margin-top:0px}.code-layout-sticky{position:-webkit-sticky;position:sticky;top:132px;align-self:flex-start;max-height:calc(100vh - 132px);overflow-y:auto;z-index:10}"},{"filePath":"ai-2-0/snippets/components/CodeLayout/CodeLayout.css","content":".code-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start;width:100%}.code-layout h2{margin-top:0px}.code-layout-sticky{position:-webkit-sticky;position:sticky;top:132px;align-self:flex-start;max-height:calc(100vh - 132px);overflow-y:auto;z-index:10}"},{"filePath":"ai-2-0/snippets/components/CodePreview.css","content":".split-layout{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin:2rem 0;align-items:start}@media (max-width: 768px){.split-layout{grid-template-columns:1fr;gap:1rem}}.code-content .code-block [data-component-part=\"code-block-root\"]{background-color:#0b1e3d!important}.content-panel{display:flex;flex-direction:column;gap:1.5rem;padding-right:1rem}.content-section{padding:0.5rem 1rem;border-left:2px solid transparent;border-radius:6px;cursor:pointer;position:relative;box-sizing:border-box;transition:background 0.25s ease,\n border-color 0.25s ease,\n box-shadow 0.25s ease}.content-section:hover{background:linear-gradient(\n 90deg,\n rgba(176, 176, 176, 0.08) 0%,\n rgba(176, 176, 176, 0.03) 100%\n );border-left-color:rgba(176, 176, 176, 0.5)}.content-section.active{background:linear-gradient(\n 90deg,\n rgba(176, 176, 176, 0.15) 0%,\n rgba(176, 176, 176, 0.05) 100%\n );border-left-color:#b0b0b0;box-shadow:0 2px 8px rgba(176, 176, 176, 0.1),\n inset 0 0 20px rgba(176, 176, 176, 0.05);color:rgb(63, 65, 69)}.content-section.active::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(\n 180deg,\n #c0c0c0 0%,\n #b0b0b0 50%,\n #a0a0a0 100%\n )}.content-section h4{margin:0 0 0.75rem 0;font-size:1rem;font-weight:600;color:#1a1a1a}.content-section p{margin:0.5rem 0;line-height:1.6;color:#4a4a4a}.content-section code{background:rgba(0, 0, 0, 0.05);padding:0.2em 0.4em;border-radius:3px;font-size:0.9em}.code-panel{position:sticky;top:calc(var(--navbar-height, 64px) + 6rem);height:calc(\n 100vh - var(--navbar-height, 64px) - 6rem\n );display:flex;flex-direction:column;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#1e1e1e;box-shadow:0 4px 6px rgba(0, 0, 0, 0.1)}.code-panel [data-component-part=\"code-block-root\"]{padding:0rem 1rem}.code-panel .code-block{margin:0}.code-header{display:flex;justify-content:space-between;align-items:center;padding:0.4rem 1rem;background:#0b1e3d;border-bottom:1px solid #404040;color:white;font-size:0.875rem;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace}.copy-btn{display:flex;align-items:center;gap:0.5rem;padding:0.375rem 0.75rem;background:transparent;border:1px solid #404040;border-radius:4px;color:#a0a0a0;cursor:pointer;transition:all 0.2s ease;font-size:0.875rem}.copy-btn:hover{background:#404040;border-color:#606060;color:#fff}.copy-btn svg{width:16px;height:16px}.copy-btn .icon-check{display:none}.copy-btn[data-copied=\"true\"] .icon-copy{display:none}.copy-btn[data-copied=\"true\"] .icon-check{display:block;color:#10b981}.code-content{position:relative;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:auto;background:#0b1e3d;scroll-behavior:smooth;padding:14px 0px}.code-content::-webkit-scrollbar{width:8px;height:8px}.code-content::-webkit-scrollbar-track{background:#2d2d2d}.code-content::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.code-content::-webkit-scrollbar-thumb:hover{background:#606060}.code-content pre{margin:0;padding:0rem 1rem;background:transparent;color:#d4d4d4;font-family:'Monaco', 'Menlo', 'Ubuntu Mono', monospace;font-size:0.875rem;line-height:1.6;white-space:pre;word-wrap:normal;overflow-wrap:normal;position:relative}.code-content pre code{background:transparent;padding:0;color:inherit;font-size:inherit;border-radius:0;display:block;white-space:pre}.code-line{display:block;padding-left:1rem;padding-right:1rem;margin-left:-1rem;margin-right:-1rem;transition:all 0.2s ease;position:relative;white-space:pre;line-height:inherit;border-left:2px solid transparent}.code-line::after{content:'\\a';white-space:pre}.code-line.highlighted{background:rgba(200, 200, 200, 0.15)!important;border-left:2px solid #d0d0d0;padding-left:calc(1rem - 2px);min-height:1.5em}.code-line.highlighted::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:#d0d0d0;z-index:1}.code-line.highlighted+.code-line.highlighted{border-top:none}.code-line.highlighted:not(.code-line.highlighted+.code-line.highlighted){border-top-left-radius:4px}.code-line.highlighted:not(:has(+.code-line.highlighted)){border-bottom-left-radius:4px}.line-number{display:inline-block;min-width:2.5em;padding-right:1em;margin-right:0.5em;text-align:right;color:#858585;user-select:none;border-right:1px solid #404040}@media (prefers-color-scheme: dark){.content-section p{color:#c0c0c0}.content-section code{background:rgba(255, 255, 255, 0.1)}.code-panel{border-color:#404040}}@media (max-width: 768px){.code-panel{position:relative;top:0;max-height:400px}.split-layout{grid-template-columns:1fr}}.code-content [data-testid=\"copy-code-button\"]{display:none!important}.code-content #ask-ai-code-block-button{display:none!important}div[data-fade-overlay=\"true\"]{--fade-color-light: transparent !important;--fade-color-dark: transparent !important;display:none!important}:has([data-floating-buttons])>[data-component-part=code-block-root] pre>code{padding-right:0px!important}@media (max-width: 768px){.code-panel{position:relative;top:0;height:400px}}"},{"filePath":"ai-2-0/snippets/components/ConnectorDetailsHeader/ConnectorDetailsHeader.css","content":".container{margin:48px 0px!important;display:flex;flex-direction:column;gap:6px}.Heading{display:flex;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid var(--default-border-color)}.ConnectorName{font-size:32px;font-weight:700;margin-bottom:0px}.PlatformDetails{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--gray-text-color)}.PlatformIcon{padding:4px;background-color:var(--connector-icon-bg-color);border:1px solid var(--default-border-color);border-radius:12px}.ImageContainer{background-color:var(--connector-icon-bg-color);padding:12px;border:1px solid var(--default-border-color);border-radius:28px}.IconContainer{background-color:#F8F9FC;padding:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;flex-shrink:0}.ConnectorIcon{width:32px!important;height:32px!important;object-fit:contain;display:block;margin:0}.FeaturesHeading{font-size:14px;color:var(--gray-text-color)}.SubHeading{display:flex;flex-direction:column;gap:8px}.FeaturesList{display:flex;flex-wrap:wrap;gap:12px}.FeatureTag{padding:4px 10px;font-size:12px;border-radius:14px;width:fit-content;display:flex;align-items:center;gap:4px}.AvailableFeature{color:var(--green-tag-color);border:1px solid var(--green-tag-color);background-color:var(--green-tag-bg-color)}.UnavailableFeature{color:var(--orange-tag-color);border:1px solid var(--orange-tag-color);background-color:var(--orange-tag-bg-color)}.StageBadge{font-size:10px;height:auto;color:var(--green-tag-color)}"},{"filePath":"ai-2-0/snippets/components/ConnectorFilter/ConnectorFilter.css","content":".connector-filter{--connector-filter-accent: #1570ef;position:sticky;top:0;z-index:20;margin:20px 0 28px;padding:16px;border:1px solid var(--default-border-color, #e5e7eb);border-radius:8px;background-color:var(--background-color, #fff);box-shadow:0 2px 8px rgba(15, 23, 42, 0.06)}.connector-filter-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}.connector-filter-field{display:flex;flex-direction:column;gap:6px;flex:1 1 160px;min-width:140px}.connector-filter-search-field{flex:1 1 170px;min-width:140px}.connector-filter-field label{font-size:14px;font-weight:600;color:var(--default-text-color, #374151)}.connector-filter-search{display:flex;align-items:center;gap:8px;height:36px;padding:0 10px;border:1px solid var(--select-border-color, #d1d5db);border-radius:6px;background-color:var(--background-color, #fff);color:var(--gray-text-color, #6b7280)}.connector-filter-search:focus-within{border-color:var(--connector-filter-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--connector-filter-accent) 20%, transparent)}.connector-filter-search svg{flex-shrink:0}.connector-filter-search input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:13px;color:var(--default-text-color, #111827)}.connector-filter-dropdown{position:relative}.connector-filter-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:36px;padding:0 10px;border:1px solid var(--select-border-color, #d1d5db);border-radius:6px;background-color:var(--background-color, #fff);color:var(--default-text-color, #111827);font-size:13px;cursor:pointer;text-align:left}.connector-filter-trigger:hover{border-color:var(--connector-filter-accent)}.connector-filter-trigger[aria-expanded=\"true\"]{border-color:var(--connector-filter-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--connector-filter-accent) 20%, transparent)}.connector-filter-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.connector-filter-chevron{flex-shrink:0;color:var(--gray-text-color, #6b7280);transition:transform 0.15s ease}.connector-filter-chevron-open{transform:rotate(180deg);color:var(--connector-filter-accent)}.connector-filter-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;max-height:320px;overflow-y:auto;margin:0;padding:6px;list-style:none;border:1px solid var(--default-border-color, #e5e7eb);border-radius:8px;background-color:var(--background-color, #fff);box-shadow:0 8px 24px rgba(15, 23, 42, 0.12)}.connector-filter-menu li{list-style:none}.connector-filter-menu li::marker,.connector-filter-menu li::before{content:none}.connector-filter-menu li[role=\"option\"]{padding:7px 10px;border-radius:5px;font-size:13px;color:var(--default-text-color, #111827);cursor:pointer}.connector-filter-menu li[role=\"option\"]:hover{background-color:var(--primary-background-color, rgba(21, 112, 239, 0.08))}.connector-filter-menu li[role=\"option\"].active{background-color:var(--primary-background-color, rgba(21, 112, 239, 0.1));color:var(--connector-filter-accent);font-weight:600}.connector-filter-group-label{padding:6px 10px 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--gray-text-color, #9ca3af)}.connector-filter-reset{flex-shrink:0;margin-left:auto;height:36px;padding:0 14px;border:1px solid var(--connector-filter-accent);border-radius:6px;background-color:transparent;color:var(--connector-filter-accent);font-size:13px;font-weight:600;cursor:pointer}.connector-filter-reset:hover{background-color:color-mix(in srgb, var(--connector-filter-accent) 10%, transparent)}"},{"filePath":"ai-2-0/snippets/components/ConnectorGrid/Integrations.css","content":".no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.integrations-section{padding:3rem 1rem 9rem;max-width:1300px;margin:0 auto}.integrations-card{background:#FAFAFA;border-radius:12px;border:1px solid #EAECF5;display:flex;height:660px;overflow:hidden;position:relative;padding:40px 40px 40px 0px}.integrations-mobile-header{display:none;width:100%;background:#ffffff;border-bottom:1px solid #d9daee;padding:32px;font-size:20px;justify-content:center;align-items:center;gap:12px;position:sticky;top:0;z-index:15;cursor:pointer}.arrow{transition:transform 0.3s ease}.arrow.open{transform:rotate(180deg)}.arrow-down{width:10px;height:10px}.integrations-sidebar{width:220px;border-right:1px solid #EAECF5;display:flex;flex-direction:column;position:sticky;top:0;z-index:5}.sidebar-item{display:block;width:100%;padding:12px 22px;font-size:16px;color:#535862;cursor:pointer;white-space:nowrap;flex-shrink:0;text-align:right;font-weight:500;border-right:2px solid transparent}.sidebar-item:hover{color:#414651;border-right:2px solid #D5D9EB}.sidebar-item.active{border-right:2px solid #004CD3;font-weight:600;color:#004CD3}.integrations-grid{flex:1;padding:20px 32px;overflow-y:auto;display:grid;gap:20px;align-content:flex-start}.integrations-grid.desktop{grid-template-columns:repeat(auto-fill, minmax(200px, 1fr))}.integrations-grid.mobile{display:none}.integration-card{max-height:110px;text-decoration:none;display:flex;align-items:center;gap:12px;background-color:white;box-shadow:0px 4px 12px -1px #0A0D1214;border-radius:12px;padding:12px 20px;box-sizing:border-box;transition:all 0.3s ease}.integration-card span{color:#181D27;font-weight:500;font-size:16px;line-height:120%}a.integration-card span:hover{text-decoration:none}a.integration-card:hover{box-shadow:0px 3px 3px -1.5px #0A0D120A,\n 0px 8px 8px -4px #0A0D1208,\n 0px 20px 24px -4px #0A0D1214;padding:16px 24px;margin:-4px;text-decoration:none;transform:translateY(-2px)}.integration-card img{width:32px;height:32px;object-fit:contain;flex-shrink:0}.load-more{grid-column:span 2;padding:24px;font-size:20px;background:#ffffff;border:none;cursor:pointer}@media (max-width: 1024px){.integrations-card{flex-direction:column;height:auto;padding:0px;overflow:auto}.integrations-mobile-header{display:flex}.integrations-sidebar{display:none;width:100%;position:absolute;top:98px;left:0;right:0;border-right:none;border-bottom:1px solid #d9daee;background:#ffffff;overflow-y:scroll}.integrations-sidebar.open{display:block}.sidebar-item{text-align:center}.sidebar-item.active{border-right:none}.integrations-grid.desktop{display:none}.integrations-grid.mobile{display:grid;grid-template-columns:repeat(2, 1fr);padding:24px}}"},{"filePath":"ai-2-0/snippets/components/ReleaseCarousel/ReleaseCarousel.css","content":".release-carousel{position:relative}.release-carousel-viewport{overflow:hidden}.release-carousel-content [data-as=\"p\"]{display:block;margin-bottom:24px;color:#344054;font-size:18px}.release-carousel-content [data-as=\"p\"] strong{color:#181D27;font-weight:700}.release-carousel-content a{display:inline-block}.release-carousel-title-row{display:flex;align-items:center;gap:12px;margin-bottom:16px}.release-carousel-content .release-carousel-title-row h2{margin:0}.release-carousel-eyebrow{display:inline-block;flex-shrink:0;background-color:#F0F9FF;color:#0BA5EC;padding:4px 14px;border-radius:100px;font-size:13px;font-weight:600;letter-spacing:0.02em;text-transform:uppercase}.release-carousel-content.slide-next{animation:release-carousel-slide-next 0.45s ease}.release-carousel-content.slide-prev{animation:release-carousel-slide-prev 0.45s ease}@keyframes release-carousel-slide-next{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}@keyframes release-carousel-slide-prev{from{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:translateX(0)}}.release-carousel-image{width:100%;max-width:1200px;display:block;border:3px solid #BED2FB;border-radius:16px;box-shadow:0px 2px 2px -1px #0A0D120A,\n 0px 4px 6px -2px #0A0D1208,\n 0px 12px 16px -4px #0A0D1214;cursor:zoom-in}.release-carousel-lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:40px;background-color:rgba(16, 24, 40, 0.85)}.release-carousel-lightbox-image{max-width:100%;max-height:100%;display:block;border-radius:12px;box-shadow:0px 12px 16px -4px #0A0D1214;cursor:default}.release-carousel-lightbox-close{position:absolute;top:24px;right:24px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255, 255, 255, 0.3);background-color:rgba(255, 255, 255, 0.1);color:white;cursor:pointer;transition:background-color 0.15s ease}.release-carousel-lightbox-close:hover{background-color:rgba(255, 255, 255, 0.2)}.release-carousel .carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1px solid #BED2FB;background-color:white;color:#181D27;box-shadow:0px 2px 2px -1px #0A0D120A,\n 0px 4px 6px -2px #0A0D1208,\n 0px 12px 16px -4px #0A0D1214;cursor:pointer;transition:background-color 0.15s ease}.release-carousel .carousel-arrow:hover{background-color:#EFF4FF}.release-carousel .carousel-arrow-prev{left:16px}.release-carousel .carousel-arrow-next{right:16px}.release-carousel .carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}.release-carousel .carousel-dot{width:8px;height:8px;border-radius:50%;border:none;background-color:#BED2FB;padding:0;cursor:pointer;transition:background-color 0.15s ease, transform 0.15s ease}.release-carousel .carousel-dot.active{background-color:#1570EF;transform:scale(1.2)}@media (max-width: 1024px){.release-carousel .carousel-arrow-prev{left:4px}.release-carousel .carousel-arrow-next{right:4px}}@media (max-width: 768px){.release-carousel .carousel-arrow{width:32px;height:32px}}"}],"page":{"pagePath":"ai-2-0/release-2.0/breaking-changes/platform-and-security","slug":"/ai-2-0/release-2.0/breaking-changes/platform-and-security","pageMetadata":{"title":"Breaking Changes - Platform \u0026 Security","description":"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.","slug":"/ai-2-0/release-2.0/breaking-changes/platform-and-security","sidebarTitle":"Platform \u0026 Security","href":"/ai-2-0/release-2.0/breaking-changes/platform-and-security"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`platform-\u0026-security`,children:`Platform \u0026 Security`}),`\n`,_jsx(_components.p,{children:`Two changes here will stop a 2.0 server from behaving as expected with a 1.13 configuration: the LLM\nand embedding configuration move, and the new session limits. Everything else — timeouts, logging,\nobject storage, distroless images — is lower-drama but still worth checking against your deployment.`}),`\n`,_jsx(Heading,{level:`2`,id:`llm-and-embedding-configuration-moved`,children:`LLM and embedding configuration moved`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Breaking.`}),` Affects every deployment using semantic search, natural-language query, or any LLM\nfeature.`]}),`\n`,_jsxs(_components.p,{children:[`Provider configuration is no longer nested inside `,_jsx(_components.code,{children:`elasticsearch.naturalLanguageSearch`}),`. It moves to\na new top-level `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`llmConfiguration`})}),` block, with embeddings as a sub-section reusing the same\nprovider credentials:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`llmConfiguration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${LLM_ENABLED:-false}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${LLM_PROVIDER:-noop}\"}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # noop | openai | azureOpenAI | bedrock | google | anthropic`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` maxConcurrentRequests`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${LLM_MAX_CONCURRENT_REQUESTS:-5}\"})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` embeddings`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` provider`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${EMBEDDING_PROVIDER:-bedrock}\"}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # bedrock | openai | google | djl`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Key environment variable renames: `,_jsx(_components.code,{children:`AWS_BEDROCK_MODEL_ID`}),` → `,_jsx(_components.code,{children:`LLM_BEDROCK_MODEL_ID`}),`, `,_jsx(_components.code,{children:`OPENAI_API_KEY`}),`\n→ `,_jsx(_components.code,{children:`LLM_OPENAI_API_KEY`}),`, `,_jsx(_components.code,{children:`OPENAI_API_ENDPOINT`}),` → `,_jsx(_components.code,{children:`LLM_OPENAI_ENDPOINT`}),`, `,_jsx(_components.code,{children:`GOOGLE_API_KEY`}),` →\n`,_jsx(_components.code,{children:`LLM_GOOGLE_API_KEY`}),`; `,_jsx(_components.code,{children:`GOOGLE_API_ENDPOINT`}),` is removed outright. Embedding-specific variables keep\ntheir names but move under `,_jsx(_components.code,{children:`llmConfiguration.embeddings`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`LLM_ENABLED`}),` and `,_jsx(_components.code,{children:`LLM_PROVIDER`}),` gate the entire block — both must be set before embeddings or any\nother LLM feature will run. Porting credentials across without enabling the block leaves semantic\nsearch and NLQ switched off. `,_jsx(_components.code,{children:`BEDROCK_AWS_IAM_AUTH_ENABLED`}),` also flips from `,_jsx(_components.code,{children:`false`}),` to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`true`})}),`:\ndeployments that relied on the old default and supplied static keys should confirm which credential\nchain is used.`]})}),`\n`,_jsxs(_components.p,{children:[`Natural-language query settings consolidate too: per-provider generation settings like\n`,_jsx(_components.code,{children:`COLLATE_NLQ_BEDROCK_MAX_TOKENS`}),`/`,_jsx(_components.code,{children:`COLLATE_NLQ_OPENAI_MAX_TOKENS`}),` collapse into single\n`,_jsx(_components.code,{children:`COLLATE_NLQ_*`}),` variables, and `,_jsx(_components.code,{children:`providerClass`}),` under `,_jsx(_components.code,{children:`naturalLanguageSearch`}),` now defaults to\n`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`NoOpNLQService`})}),` — NLQ filter extraction stays off until `,_jsx(_components.code,{children:`llmConfiguration`}),` is enabled.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Port your configuration into `,_jsx(_components.code,{children:`llmConfiguration`}),` `,_jsx(_components.strong,{children:`before`}),` upgrading. Semantic search silently\ndegrades to a no-op provider rather than failing loudly if the block is missing. This applies to\nself-managed and BYOC deployments; fully managed instances have it applied by Collate.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`sessions-are-database-backed-and-capped-per-user`,children:`Sessions are database-backed and capped per user`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavioural.`}),` Users will be logged out.`]}),`\n`,_jsxs(_components.p,{children:[`Collate 2.0 adds a `,_jsx(_components.code,{children:`user_session`}),` table so sessions survive pod restarts and are shared across pods\n— previously each pod held its own in-memory session state, causing spurious logouts behind a load\nbalancer without sticky sessions. Concurrent sessions are now capped:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`authenticationConfiguration`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` sessionExpiry`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:'${AUTHENTICATION_SESSION_EXPIRY:-\"604800\"}'}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # 7 days, all auth providers`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` maxActiveSessionsPerUser`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${AUTHENTICATION_MAX_ACTIVE_SESSIONS_PER_USER:-5}\"})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`When the limit is exceeded, the `,_jsx(_components.strong,{children:`least recently used active sessions are revoked`}),`. `,_jsx(_components.code,{children:`sessionExpiry`}),`\nnow applies to all auth providers with a minimum of 3600 seconds;\n`,_jsx(_components.code,{children:`oidcConfiguration.sessionExpiry`}),` becomes a deprecated fallback.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Users who work across several browsers or devices, and `,_jsx(_components.strong,{children:`service accounts driving many concurrent\nsessions`}),`, will start being silently signed out of the oldest sessions. Raise\n`,_jsx(_components.code,{children:`AUTHENTICATION_MAX_ACTIVE_SESSIONS_PER_USER`}),` if that’s your pattern, but prefer bot tokens for\nautomation.`]})}),`\n`,_jsxs(_components.p,{children:[`Separately, the Chrome plugin’s redirect URI must now be explicitly allow-listed\n(`,_jsx(_components.code,{children:`additionalTrustedRedirectUris`}),`, matched `,_jsx(_components.strong,{children:`exactly`}),` — scheme, host, port, path, and query) or login\nwon’t complete (`,_jsx(_components.strong,{children:`breaking`}),`).`]}),`\n`,_jsx(Heading,{level:`2`,id:`database-connection-timeouts-tighten-significantly`,children:`Database connection timeouts tighten significantly`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavioural.`}),` Long-running queries will now be cut off.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`1.13`}),_jsx(_components.th,{children:`2.0`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`database.queryTimeoutSeconds`})}),_jsx(_components.td,{children:`N/A`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`300`})}),` (new)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Postgres `,_jsx(_components.code,{children:`postgresqlSocketTimeout`}),` (s)`]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`30000`}),` (≈8.3 h)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`300`})}),` (5 min)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`MySQL `,_jsx(_components.code,{children:`mysqlSocketTimeout`}),` (ms)`]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`30000000`}),` (≈8.3 h)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`300000`})}),` (5 min)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Postgres `,_jsx(_components.code,{children:`loginTimeout`}),` / `,_jsx(_components.code,{children:`postgresqlConnectTimeout`}),` (s)`]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`300`}),` / `,_jsx(_components.code,{children:`60`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(_components.code,{children:`30`}),` / `,_jsx(_components.code,{children:`30`})]})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Any statement that previously ran for more than five minutes — a large reindex batch, a heavy Data\nInsights aggregation, an oversized CSV import — now aborts. Raise `,_jsx(_components.code,{children:`DB_QUERY_TIMEOUT_SECONDS`}),`,\n`,_jsx(_components.code,{children:`DB_POSTGRESQL_SOCKET_TIMEOUT`}),` or `,_jsx(_components.code,{children:`DB_MYSQL_SOCKET_TIMEOUT`}),` if you have legitimately long\nstatements, and check upgrade logs for statement-timeout errors.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`logging-hardening-removes-secrets-from-debug-output`,children:`Logging hardening removes secrets from DEBUG output`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavioural and security-relevant.`}),` At `,_jsx(_components.code,{children:`DEBUG`}),`, the HTTP parser used to print every request\nheader verbatim — including `,_jsx(_components.code,{children:`Authorization: Bearer \u003cjwt>`}),` and session cookies. Since `,_jsx(_components.code,{children:`DEBUG`}),` is\nexactly what support asks customers to enable, and those logs get attached to tickets, the Jetty\nlogger is now pinned independently via `,_jsx(_components.code,{children:`JETTY_LOG_LEVEL`}),`, separate from the root `,_jsx(_components.code,{children:`LOG_LEVEL`}),`. Audit\nentries move to `,_jsx(_components.code,{children:`logs/audit.log`}),` with an audit marker, filtered out of the console appender.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you parsed audit entries out of stdout, read `,_jsx(_components.code,{children:`logs/audit.log`}),` instead. If you need Jetty debug\noutput, set `,_jsx(_components.code,{children:`JETTY_LOG_LEVEL=DEBUG`}),` explicitly, and be aware of what it prints.`]})}),`\n`,_jsxs(_components.p,{children:[`Response compression is also enabled by default in 2.0 (`,_jsx(_components.code,{children:`server.gzip.enabled: true`}),`, responses above\n~256 bytes) — clients that mishandle `,_jsx(_components.code,{children:`Content-Encoding: gzip`}),` need `,_jsx(_components.code,{children:`Accept-Encoding: identity`}),`. The\n`,_jsx(_components.code,{children:`objectStorage`}),` block’s default `,_jsx(_components.code,{children:`provider`}),` changes from `,_jsx(_components.code,{children:`NOOP`}),` to `,_jsx(_components.code,{children:`s3`}),`, but `,_jsx(_components.code,{children:`enabled`}),` still defaults\nto `,_jsx(_components.code,{children:`false`}),`, so nothing activates until you turn it on; this backs the new `,_jsx(_components.code,{children:`/v1/attachments`}),` API.`]}),`\n`,_jsx(Heading,{level:`2`,id:`http/2-is-available-as-an-opt-in`,children:`HTTP/2 is available as an opt-in`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Additive.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`server`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` applicationConnectors`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"${SERVER_PROTOCOL:-http}\"}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # http (default) | h2c (cleartext HTTP/2) | h2 (TLS)`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Both HTTP/2 modes stay backwards compatible — HTTP/1.1 clients keep working on the same port. It’s\nworth enabling when browsers hit the server directly, but not worth it behind an HTTP/2-terminating\nload balancer, which already gets you the benefit.`}),`\n`,_jsx(Heading,{level:`2`,id:`hybrid-runner-and-ai-platform-images-are-distroless`,children:`Hybrid Runner and AI Platform images are distroless`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Breaking for anything that shells into these pods.`}),` The images now ship distroless — only the\nruntime and its dependencies, with no shell, package manager, or standard Unix tooling.\n`,_jsx(_components.code,{children:`kubectl exec ... -- /bin/sh`}),` no longer works.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Move debugging to logs, metrics, and ephemeral debug containers (`,_jsx(_components.code,{children:`kubectl debug`}),`). Init containers or\nsidecars that assumed a shell in the main image need reworking.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`scim-provisioning-moves-in-settings`,children:`SCIM provisioning moves in Settings`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavioural.`}),` SCIM provisioning configuration moves to `,_jsx(_components.strong,{children:`Team and Users`}),` > `,_jsx(_components.strong,{children:`Provisioning`}),` in\nadmin settings. The capability itself is unchanged — only its location moved, so update any internal\nrunbooks or onboarding docs that reference the old path.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-2-0-0-database-migration-is-a-maintenance-window-event`,children:`The 2.0.0 database migration is a maintenance-window event`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Plan a maintenance window.`}),` New tables include `,_jsx(_components.code,{children:`task_entity`}),`, `,_jsx(_components.code,{children:`announcement_entity`}),`,\n`,_jsx(_components.code,{children:`activity_stream`}),` (partitioned), `,_jsx(_components.code,{children:`user_session`}),`, `,_jsx(_components.code,{children:`user_preferences`}),`, and the Context Center and AI\nGovernance Studio entity tables. `,_jsx(_components.code,{children:`thread_entity`}),` is `,_jsx(_components.strong,{children:`renamed`}),` to `,_jsx(_components.code,{children:`thread_entity_legacy`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`On clusters with tens of millions of rows, composite index creation on service and entity tables\n(`,_jsx(_components.code,{children:`(deleted, name)`}),` and `,_jsx(_components.code,{children:`(deleted, serviceType)`}),` on all 13 service tables, for the new\n`,_jsx(_components.code,{children:`/v1/services/overview`}),` endpoint) is the long pole of the migration. Size your maintenance window\naccordingly, and take a full backup first — there is no automated downgrade path.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`dependency-and-cve-updates`,children:`Dependency and CVE updates`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Additive.`}),` Not breaking, but relevant to hardened deployments. Backend versions verified\ndirectly against the `,_jsx(_components.code,{children:`2.0.0`}),` `,_jsx(_components.code,{children:`pom.xml`}),`: Jetty `,_jsx(_components.strong,{children:`12.1.10`}),`, jackson-databind `,_jsx(_components.strong,{children:`2.18.9`}),`, log4j\n`,_jsx(_components.strong,{children:`2.25.5`}),`, plus Netty 4.1.137.Final (pinned via BOM), BouncyCastle 1.85, thrift 0.24.0,\nreactor-netty-http 1.2.18, tomcat-jdbc/juli 11.0.11, httpcore5 5.4.3, Redshift JDBC 2.2.2, and\nKubernetes client-java 25.0.1.`]}),`\n`,_jsxs(_components.p,{children:[`Frontend: `,_jsx(_components.code,{children:`ws`}),` 8.21.0, `,_jsx(_components.code,{children:`handlebars`}),` 4.5.2, `,_jsx(_components.code,{children:`js-yaml`}),` 5.2.2, `,_jsx(_components.code,{children:`fast-uri`}),` 3.1.5, `,_jsx(_components.code,{children:`nanoid`}),` 3.3.17 and\n`,_jsx(_components.code,{children:`brace-expansion`}),` 1.1.18 / 5.0.9. Other operationally relevant security fixes: test-connection\nworkflow triggers are authorized, CSRF failures fail secure and retry on the next request,\n`,_jsx(_components.code,{children:`testDestination`}),` redacts destination configuration, and SCIM `,_jsx(_components.code,{children:`displayName`}),` synchronization is\nfixed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`full-detail`,children:`Full detail`}),`\n`,_jsxs(_components.p,{children:[`For the full narrative walkthrough of Platform \u0026 Security in Collate 2.0 — including screenshots and step-by-step context — see `,_jsx(_components.a,{href:`/ai-2-0/release-2.0/platform-and-security`,children:`Release 2.0: Platform \u0026 Security`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Breaking Changes - Platform \u0026 Security","description":"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.","slug":"/ai-2-0/release-2.0/breaking-changes/platform-and-security","sidebarTitle":"Platform \u0026 Security","href":"/ai-2-0/release-2.0/breaking-changes/platform-and-security"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Platform \u0026 Security","slug":"platform-\u0026-security","depth":1,"children":[]},{"title":"LLM and embedding configuration moved","slug":"llm-and-embedding-configuration-moved","depth":2,"children":[]},{"title":"Sessions are database-backed and capped per user","slug":"sessions-are-database-backed-and-capped-per-user","depth":2,"children":[]},{"title":"Database connection timeouts tighten significantly","slug":"database-connection-timeouts-tighten-significantly","depth":2,"children":[]},{"title":"Logging hardening removes secrets from DEBUG output","slug":"logging-hardening-removes-secrets-from-debug-output","depth":2,"children":[]},{"title":"HTTP/2 is available as an opt-in","slug":"http/2-is-available-as-an-opt-in","depth":2,"children":[]},{"title":"Hybrid Runner and AI Platform images are distroless","slug":"hybrid-runner-and-ai-platform-images-are-distroless","depth":2,"children":[]},{"title":"SCIM provisioning moves in Settings","slug":"scim-provisioning-moves-in-settings","depth":2,"children":[]},{"title":"The 2.0.0 database migration is a maintenance-window event","slug":"the-2-0-0-database-migration-is-a-maintenance-window-event","depth":2,"children":[]},{"title":"Dependency and CVE updates","slug":"dependency-and-cve-updates","depth":2,"children":[]},{"title":"Full detail","slug":"full-detail","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/collatedocs/193c43da98baa789/loader.js"],"subdomain":"collatedocs","siteName":"Collate Documentation","title":"Breaking Changes - Platform \u0026 Security - Collate Documentation","navMaps":{"firstHrefInVersion":{"AI 2.0":{"href":"/ai-2-0/release-2.0/breaking-changes/platform-and-security","matchLevel":0},"Classic":{"href":"/release-2.0/breaking-changes/platform-and-security","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-08-26T10:44:39.106Z","originalFileLocation":"ai-2-0/release-2.0/breaking-changes/platform-and-security.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Collate Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index,follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Breaking Changes - Platform \u0026amp; Security - Collate Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Collate Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://collatedocs.mintlify.site/_mintlify/api/og/v2?division=Breaking+Changes\u0026amp;title=Breaking+Changes+-+Platform+%26+Security\u0026amp;description=LLM+configuration+moves+to+a+top-level+block%2C+sessions+are+database-backed+and+capped+per+user%2C+database+timeouts+tighten%2C+and+Hybrid+Runner+images+become+distr\u0026amp;theme=1b066d8b17e8e32af494b9f2\u0026amp;signature=1e90092c2cca01fda24fef06430dc6bdecc004bf7a70e435b37468114163746a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Breaking Changes - Platform \u0026amp; Security - Collate Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://collatedocs.mintlify.site/_mintlify/api/og/v2?division=Breaking+Changes\u0026amp;title=Breaking+Changes+-+Platform+%26+Security\u0026amp;description=LLM+configuration+moves+to+a+top-level+block%2C+sessions+are+database-backed+and+capped+per+user%2C+database+timeouts+tighten%2C+and+Hybrid+Runner+images+become+distr\u0026amp;theme=1b066d8b17e8e32af494b9f2\u0026amp;signature=1e90092c2cca01fda24fef06430dc6bdecc004bf7a70e435b37468114163746a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/collatedocs/Wy3ST-458y16Xhek/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Collate Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1570EF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ai-2-0/release-2.0/breaking-changes/platform-and-security.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.getcollate.io/#organization\",\"name\":\"Collate Documentation\",\"url\":\"https://docs.getcollate.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/collatedocs/yvgGxaeRR5RwtQo6/public/images/icons/collate-logo.svg?fit=max\u0026auto=format\u0026n=yvgGxaeRR5RwtQo6\u0026q=85\u0026s=59d7983952a91cd53138369f2e21a5ac\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.getcollate.io#website\",\"name\":\"Collate Documentation\",\"url\":\"https://docs.getcollate.io\",\"publisher\":{\"@id\":\"https://docs.getcollate.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security#webpage\",\"url\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security\",\"name\":\"Breaking Changes - Platform \u0026 Security\",\"description\":\"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\",\"dateModified\":\"2026-08-26T10:44:39.106Z\",\"isPartOf\":{\"@id\":\"https://docs.getcollate.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Collate 2.0\",\"item\":\"https://docs.getcollate.io/ai-2-0/release-2.0\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Breaking Changes\",\"item\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Breaking Changes - Platform \u0026 Security\",\"item\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security#article\",\"headline\":\"Breaking Changes - Platform \u0026 Security\",\"name\":\"Breaking Changes - Platform \u0026 Security\",\"description\":\"LLM configuration moves to a top-level block, sessions are database-backed and capped per user, database timeouts tighten, and Hybrid Runner images become distroless in Collate 2.0.\",\"url\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security\",\"mainEntityOfPage\":{\"@id\":\"https://docs.getcollate.io/ai-2-0/release-2.0/breaking-changes/platform-and-security#webpage\"},\"dateModified\":\"2026-08-26T10:44:39.106Z\",\"publisher\":{\"@id\":\"https://docs.getcollate.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.getcollate.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Collate Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Collate Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/ai-2-0/release-2.0/breaking-changes/platform-and-security.md","siteName":"Collate Documentation","nav":{"global":null,"versions":[{"version":"AI 2.0","default":true,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Release 2.0","groups":[{"group":"Collate 2.0","pages":[{"title":"Collate 2.0: What Changed | Official Documentation","sidebarTitle":"Overview","href":"/ai-2-0/release-2.0"},{"title":"AI Mode in Collate 2.0 | Official Documentation","sidebarTitle":"AI Mode","href":"/ai-2-0/release-2.0/ai-mode"},{"group":"Breaking Changes","pages":[{"title":"Breaking Changes: 1.13 to 2.0","sidebarTitle":"Overview","href":"/ai-2-0/release-2.0/breaking-changes/overview"},{"title":"Breaking Changes - AI Agents \u0026 Automations | Official Documentation","sidebarTitle":"AI Agents \u0026 Automations","href":"/ai-2-0/release-2.0/breaking-changes/ai-agents-and-automations"},{"title":"Breaking Changes - Collate AI \u0026 Credits","sidebarTitle":"Collate AI \u0026 Credits","href":"/ai-2-0/release-2.0/breaking-changes/collate-ai-and-credits"},{"title":"Breaking Changes - Collaboration","sidebarTitle":"Collaboration","href":"/ai-2-0/release-2.0/breaking-changes/collaboration"},{"title":"Breaking Changes - Discovery \u0026 Search","sidebarTitle":"Discovery \u0026 Search","href":"/ai-2-0/release-2.0/breaking-changes/discovery-and-search"},{"title":"Breaking Changes - Data Governance","sidebarTitle":"Data Governance","href":"/ai-2-0/release-2.0/breaking-changes/data-governance"},{"title":"Breaking Changes - Data Quality","sidebarTitle":"Data Quality","href":"/ai-2-0/release-2.0/breaking-changes/data-quality"},{"title":"Breaking Changes - Lineage","sidebarTitle":"Lineage","href":"/ai-2-0/release-2.0/breaking-changes/lineage"},{"title":"Breaking Changes - Ingestion \u0026 Connectors","sidebarTitle":"Ingestion \u0026 Connectors","href":"/ai-2-0/release-2.0/breaking-changes/ingestion-and-connectors"},{"title":"Breaking Changes - API \u0026 Schema","sidebarTitle":"API \u0026 Schema","href":"/ai-2-0/release-2.0/breaking-changes/api-and-schema"},{"title":"Breaking Changes - Applications \u0026 Automation","description":"Search Indexing app config fields are removed, RDF Index defaults change, and MCP tool contracts change for 15 tools in Collate 2.0.","sidebarTitle":"Applications \u0026 Automation","href":"/ai-2-0/release-2.0/breaking-changes/applications-and-automation"},{"title":"Breaking Changes - Platform \u0026 Security","sidebarTitle":"Platform \u0026 Security","href":"/ai-2-0/release-2.0/breaking-changes/platform-and-security"},{"title":"Breaking Changes - UI \u0026 Customization","description":"The transitional MUI* wrapper components are removed, App Mode introduces per-persona and per-tenant defaults, AI Mode drops the /askCollate URL prefix, and a large lazy-loading refactor changes fork-visible import paths in Collate 2.0.","sidebarTitle":"UI \u0026 Customization","href":"/ai-2-0/release-2.0/breaking-changes/ui-and-customization"}]}]},{"group":"Breaking Changes by Component","pages":[{"title":"Breaking Changes - AI Agents \u0026 Automations","sidebarTitle":"AI Agents \u0026 Automations","href":"/ai-2-0/release-2.0/ai-agents-and-automations"},{"title":"Breaking Changes - Collate AI \u0026 Credits | Official Documentation","sidebarTitle":"Collate AI \u0026 Credits","href":"/ai-2-0/release-2.0/collate-ai-and-credits"},{"title":"Breaking Changes - Discovery \u0026 Search | Official Documentation","sidebarTitle":"Discovery \u0026 Search","href":"/ai-2-0/release-2.0/discovery-and-search"},{"title":"Breaking Changes - Collaboration | Official Documentation","sidebarTitle":"Collaboration","href":"/ai-2-0/release-2.0/collaboration"},{"title":"Breaking Changes - Data Governance | Official Documentation","sidebarTitle":"Data Governance","href":"/ai-2-0/release-2.0/data-governance"},{"title":"Breaking Changes - Data Quality | Official Documentation","sidebarTitle":"Data Quality","href":"/ai-2-0/release-2.0/data-quality"},{"title":"Breaking Changes - Lineage | Official Documentation","sidebarTitle":"Lineage","href":"/ai-2-0/release-2.0/lineage"},{"title":"Breaking Changes - Ingestion \u0026 Connectors | Official Documentation","sidebarTitle":"Ingestion \u0026 Connectors","href":"/ai-2-0/release-2.0/ingestion-and-connectors"},{"title":"Breaking Changes - API \u0026 Schema | Official Documentation","sidebarTitle":"API \u0026 Schema","href":"/ai-2-0/release-2.0/api-and-schema"},{"title":"Breaking Changes - Platform Applications | Official Documentation","sidebarTitle":"Platform Applications","href":"/ai-2-0/release-2.0/platform-applications"},{"title":"Breaking Changes - Platform, Config \u0026 Security | Official Documentation","sidebarTitle":"Platform \u0026 Security","href":"/ai-2-0/release-2.0/platform-and-security"},{"title":"Breaking Changes - UI \u0026 Customization | Official Documentation","sidebarTitle":"UI \u0026 Customization","href":"/ai-2-0/release-2.0/ui-and-customization"}]}]},{"tab":"Get Started","pages":[{"title":"Get Started","href":"/ai-2-0/getting-started"}]},{"tab":"Connectors","pages":[{"title":"Connectors","href":"/ai-2-0/connectors"}]},{"tab":"Products","pages":[{"title":"Products","href":"/ai-2-0/product-guides"}]},{"tab":"Collate AI","pages":[{"title":"Collate AI","href":"/ai-2-0/collate-ai"}]},{"tab":"How-to Guides","pages":[{"title":"How-to Guides","href":"/ai-2-0/how-to-guides"}]},{"tab":"Admin","pages":[{"title":"Admin","href":"/ai-2-0/admin-guide"}]},{"tab":"SDKs \u0026 APIs","pages":[{"title":"SDKs \u0026 APIs","href":"/ai-2-0/developer-guide/api-reference"}]},{"tab":"SQL Studio","pages":[{"title":"SQL Studio","href":"/ai-2-0/how-to-guides/sql-studio"}]},{"tab":"Data Insights","pages":[{"title":"Data Insights","href":"/ai-2-0/how-to-guides/data-insights"}]},{"tab":"Data Discovery","pages":[{"title":"Data Discovery","href":"/ai-2-0/how-to-guides/data-discovery"}]},{"tab":"Data Collaboration","pages":[{"title":"Data Collaboration","href":"/ai-2-0/how-to-guides/data-collaboration"}]},{"tab":"Data Quality \u0026 Observability","pages":[{"title":"Data Quality \u0026 Observability","href":"/ai-2-0/how-to-guides/data-quality-observability"}]},{"tab":"Data Lineage","pages":[{"title":"Data Lineage","href":"/ai-2-0/how-to-guides/data-lineage"}]},{"tab":"Data Governance","pages":[{"title":"Data Governance","href":"/ai-2-0/how-to-guides/data-governance"}]},{"tab":"Data Marketplace","pages":[{"title":"Data Marketplace","href":"/ai-2-0/how-to-guides/data-marketplace"}]},{"tab":"Data Contracts","pages":[{"title":"Data Contracts","href":"/ai-2-0/how-to-guides/data-contracts"}]},{"tab":"Guide for Data Users","pages":[{"title":"Guide for Data Users","href":"/ai-2-0/how-to-guides/guide-for-data-users"}]},{"tab":"Customer Support","pages":[{"title":"Customer Support","href":"/ai-2-0/how-to-guides/collate-customer-support"}]},{"tab":"SSO","pages":[{"title":"SSO","href":"/ai-2-0/how-to-guides/sso"}]},{"tab":"MCP Server","pages":[{"title":"MCP Server","href":"/ai-2-0/how-to-guides/mcp"}]},{"tab":"Deployment","pages":[{"title":"Deployment","href":"/ai-2-0/how-to-guides/deployment"}]}]},{"version":"Classic","pages":[{"title":"Classic","href":"/release-2.0/breaking-changes/platform-and-security"}]}]},"basePath":"","title":"Breaking Changes - Platform \u0026 Security - Collate Documentation","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}