Environment variables are checked first. Credentials you enter through
opensre onboard for LLM setup, or through opensre integrations setup for
tools, are written to .env and to an owner-only file at
~/.opensre/credentials.json (mode 0600). OpenSRE
does not write secrets to the OS keychain.A value in the process environment or a local .env file wins over the
credentials file. Keep .env out of source control.Want credentials only from the environment, never on disk? Set
OPENSRE_DISABLE_KEYRING=1 and export everything yourself.
Effort for extended-thinking models: low, medium, high, or xhigh. Unset keeps the provider default, except GPT-6.1 Sol on the native OpenAI SDK and Codex, which sends xhigh (extra high)
For secrets (*_TOKEN, *_KEY, *_PASSWORD, *_SECRET, and similar), OpenSRE looks in this order:
Your process environment
The owner-only file ~/.opensre/credentials.json
opensre onboard saves LLM credentials there so they still work after you clear .env.Not stored as secrets: webhook-style URLs such as SLACK_WEBHOOK_URL and ROCKETCHAT_WEBHOOK_URL. Those stay in env / store only — treat them as secrets and don’t log them.Want credentials only from the environment, never on disk? Set OPENSRE_DISABLE_KEYRING=1 and export everything yourself.
Variable
Default
Description
OPENSRE_DISABLE_KEYRING
0
Disable local credential storage; credentials must come from the environment
OPENSRE_ACCOUNT_TOKEN
Personal OpenSRE account token; with OPENSRE_DISABLE_KEYRING=1, also set OPENSRE_APP_URL
OPENSRE_APP_URL
https://app.opensre.com
OpenSRE app origin; set it explicitly with an environment-only account token
OPENSRE_ACCOUNT_LLM_MODEL
gpt-6.1-sol
Model-family hint for a non-interactive hosted gateway using the account LLM route; override only when the web app’s hosted model changes family
OPENSRE_LLM_AUTH_METADATA_PATH
~/.opensre/llm-auth.json
Non-secret LLM auth metadata path used by prompt-safe status checks
Host root for scheduler files, gateway state, local configuration, and sessions when OPENSRE_CONTEXT_ROOT is unset
DATABASE_URL
Postgres connection for gateway records shared across replicas; required for Slack Events API unless the single-replica local-dedup escape hatch is enabled
OPENSRE_SIZE_PROFILE
SMALL
Deployment size profile; default turn caps are SMALL=1, MEDIUM=2, LARGE=4
OPENSRE_MAX_CONCURRENT_TURNS
size-profile limit
Override the process-wide concurrent-turn cap with a positive integer
OPENSRE_SCHEDULER_MAX_CONCURRENT_RUNS
2
Maximum scheduled callbacks executing at once; agent turns also need a process-wide turn permit
OPENSRE_GATEWAY_HOST_SCHEDULER
1
Run the scheduler inside the gateway; set 0 when a dedicated MODE=scheduler service owns it
OPENSRE_SESSION_FILE_LOCK
0
Serialize session-file writes with an OS lock; a shared mount is still required across processes
If you don’t set these, OpenSRE falls back to the reasoning model (or the provider default):
Variable
Default
Description
ANTHROPIC_CLASSIFICATION_MODEL
Anthropic classification model
OPENAI_CLASSIFICATION_MODEL
OpenAI classification model
OPENROUTER_CLASSIFICATION_MODEL
OpenRouter classification model
TRUSTEDROUTER_CLASSIFICATION_MODEL
TrustedRouter classification model
DEEPSEEK_CLASSIFICATION_MODEL
DeepSeek classification model
GEMINI_CLASSIFICATION_MODEL
Gemini classification model
NVIDIA_CLASSIFICATION_MODEL
NVIDIA classification model
MINIMAX_CLASSIFICATION_MODEL
MiniMax classification model
GROQ_CLASSIFICATION_MODEL
Groq classification model
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenSRE Documentation","colors":{"primary":"#000000","light":"#FFFFFF","dark":"#000000"},"logo":{"light":"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-black.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=7ea8db5a1f8e1665db7544632022e298","dark":"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-white.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=cb153f8bae517d3cea2b823ad2e51327"},"favicon":"https://mintcdn.com/tracer/iKd9uDADI-KBLmoJ/favicon.ico?fit=max\u0026auto=format\u0026n=iKd9uDADI-KBLmoJ\u0026q=85\u0026s=cf78c0f1195ee204bf1022d69a921204","navbar":{"links":[{"icon":"discord","href":"https://discord.gg/opensre","label":"Discord"},{"icon":"box","href":"https://github.com/Tracer-Cloud/opensre/releases","label":"Releases"},{"icon":"github","href":"https://github.com/Tracer-Cloud/opensre","label":"GitHub"}]},"footer":{"socials":{"website":"https://www.opensre.com","github":"https://github.com/Tracer-Cloud/opensre","linkedin":"https://linkedin.com/company/tracercloud","discord":"https://discord.gg/opensre"}},"seo":{"metatags":{},"indexing":"all"},"integrations":{"hotjar":{"hjid":"6568352","hjsv":"6"},"posthog":{"apiKey":"phc_zutpVhmQw7oUmMkbawKNdYCKQWjpfASATtf5ywB75W2","apiHost":"https://us.i.posthog.com","sessionRecording":true}},"contextual":{"options":[],"display":"header"},"interaction":{"drilldown":false},"styling":{"latex":false},"navigation":{"directory":"card","pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tracer","hasAudioNarration":false,"actualSubdomain":"tracer","customDomains":["opensre.com"],"gitSource":{"type":"github","owner":"tracer-cloud","repo":"opensre","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8e7d29a7f94b38af35926","collectionId":"54b1096e-9d7c-4398-93e1-59fb3c5b4cb8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8e7d29a7f94b38af35926"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae8e7d29a7f94b38af35926","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Integrations","count":80},{"language":"default","tag":"Monitoring","count":16},{"language":"default","tag":"Databases","count":13},{"language":"default","tag":"Cloud","count":12},{"language":"default","tag":"Code and CI","count":12},{"language":"default","tag":"Get started","count":10},{"language":"default","tag":"Platform","count":10},{"language":"default","tag":"Messaging","count":9},{"language":"default","tag":"Incidents","count":8},{"language":"default","tag":"Workflows","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":false},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"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":"llms-txt-v2","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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","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}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","href":"/docs/_mintlify/custom/tracer/5463e43fad15ff95/custom.css"},{"filePath":"sidebar.css","content":":root{--opensre-sidebar-muted:#737373;--opensre-sidebar-link:#a3a3a3;--opensre-sidebar-link-hover:#e5e5e5;--opensre-sidebar-active-bg:rgba(255, 255, 255, 0.08)}:root:not(.dark){--opensre-sidebar-muted:#a3a3a3;--opensre-sidebar-link:#525252;--opensre-sidebar-link-hover:#171717;--opensre-sidebar-active-bg:rgba(0, 0, 0, 0.06)}#navigation-items .sidebar-group-header,#navigation-items .sidebar-group-header h5,#navigation-items [class*=sidebar-group-header],#sidebar .sidebar-group-header,#sidebar .sidebar-group-header h5,#sidebar [class*=SidebarGroup]>:first-child,#sidebar [class*=sidebar-group-header]{font-family:\"Britti Sans Trial\",sans-serif!important;font-size:11px!important;font-weight:600!important;letter-spacing:.08em!important;text-transform:uppercase!important;line-height:1.4!important;color:var(--opensre-sidebar-muted)!important;margin-top:1.25rem!important;margin-bottom:.35rem!important;padding-top:.25rem!important}#navigation-items .sidebar-group:first-child .sidebar-group-header,#sidebar .sidebar-group:first-child .sidebar-group-header,#sidebar nav>.sidebar-group:first-child .sidebar-group-header{margin-top:.25rem!important}#navigation-items a:not([href*=sign-up]),#sidebar a:not([href*=sign-up]){font-family:\"Britti Sans Trial\",sans-serif!important;font-size:14px!important;font-weight:400!important;letter-spacing:normal!important;color:var(--opensre-sidebar-link)!important;border-radius:.375rem!important}#navigation-items a:not([href*=sign-up]):hover,#sidebar a:not([href*=sign-up]):hover{color:var(--opensre-sidebar-link-hover)!important}#navigation-items [data-active=true]>a,#navigation-items a.active,#navigation-items a[aria-current=page],#navigation-items a[data-active=true],#navigation-items li[data-active=true]>a,#sidebar [data-active=true]>a,#sidebar a.active,#sidebar a[aria-current=page],#sidebar a[data-active=true],#sidebar li[data-active=true]>a{color:#fff!important;background:var(--opensre-sidebar-active-bg)!important;font-weight:500!important}:root:not(.dark) #navigation-items [data-active=true]>a,:root:not(.dark) #navigation-items a.active,:root:not(.dark) #navigation-items a[aria-current=page],:root:not(.dark) #navigation-items a[data-active=true],:root:not(.dark) #navigation-items li[data-active=true]>a,:root:not(.dark) #sidebar [data-active=true]>a,:root:not(.dark) #sidebar a.active,:root:not(.dark) #sidebar a[aria-current=page],:root:not(.dark) #sidebar a[data-active=true],:root:not(.dark) #sidebar li[data-active=true]>a{color:#171717!important}header img[src*=\"Tracer-Head-Black.png\"],header img[src*=\"Tracer-Head-White.png\"],nav img[src*=\"Tracer-Head-Black.png\"],nav img[src*=\"Tracer-Head-White.png\"]{width:1rem!important;height:1rem!important;object-fit:contain!important}html.dark img[src*=\"Tracer-Head-Black.png\"]{filter:brightness(0) invert(1)!important}.toc-custom-actions{margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(0,0,0,.1)}html.dark .toc-custom-actions{border-top-color:rgba(255,255,255,.1)}.toc-custom-action{display:flex;align-items:center;gap:.5rem;padding-left:.25rem;font-size:.875rem;line-height:1.75rem;color:inherit}.toc-custom-action span{display:inline-block}#table-of-contents-content,[class*=table-of-contents],[data-testid=table-of-contents],nav[aria-label*=\"Table of contents\"]{padding-left:0!important}#table-of-contents-content ul,[class*=table-of-contents] ul,[data-testid=table-of-contents] ul,nav[aria-label*=\"Table of contents\"] ul{padding-left:0!important;margin-left:0!important}#table-of-contents-content a,[class*=table-of-contents] a,[data-testid=table-of-contents] a,nav[aria-label*=\"Table of contents\"] a{padding-left:.25rem!important;margin-left:0!important}[class*=right-sidebar] #table-of-contents-content,[class*=right-sidebar] [class*=table-of-contents],[class*=right-sidebar] [data-testid=table-of-contents],[class*=right-sidebar] nav[aria-label*=\"Table of contents\"]{text-align:left!important;align-items:flex-start!important;justify-content:flex-start!important}[class*=right-sidebar] #table-of-contents-content a,[class*=right-sidebar] [class*=table-of-contents] a,[class*=right-sidebar] [data-testid=table-of-contents] a,[class*=right-sidebar] nav[aria-label*=\"Table of contents\"] a{display:block!important;width:100%!important;text-align:left!important}"}],"page":{"pagePath":"install/environment-variables","slug":"/install/environment-variables","pageMetadata":{"title":"Environment Variables","description":"Every OpenSRE setting you can put in the environment or a .env file.","href":"/install/environment-variables"},"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: \"Every OpenSRE setting you can put in the environment or a .env file.\"\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`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Heading,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`All configuration options for OpenSRE can be set via environment variables. This page provides a complete reference.`}),`\n`,_jsx(Heading,{level:`2`,id:`secret-storage`,children:`Secret storage`}),`\n`,_jsxs(_components.p,{children:[`Environment variables are checked first. Credentials you enter through\n`,_jsx(_components.code,{children:`opensre onboard`}),` for LLM setup, or through `,_jsx(_components.code,{children:`opensre integrations setup`}),` for\ntools, are written to `,_jsx(_components.code,{children:`.env`}),` and to an owner-only file at\n`,_jsx(_components.code,{children:`~/.opensre/credentials.json`}),` (mode `,_jsx(_components.code,{children:`0600`}),`). OpenSRE\ndoes not write secrets to the OS keychain.`]}),`\n`,_jsxs(_components.p,{children:[`A value in the process environment or a local `,_jsx(_components.code,{children:`.env`}),` file wins over the\ncredentials file. Keep `,_jsx(_components.code,{children:`.env`}),` out of source control.`]}),`\n`,_jsxs(_components.p,{children:[`Want credentials only from the environment, never on disk? Set\n`,_jsx(_components.code,{children:`OPENSRE_DISABLE_KEYRING=1`}),` and export everything yourself.`]}),`\n`,_jsx(Heading,{level:`2`,id:`llm-providers`,children:`LLM providers`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LLM_PROVIDER`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`anthropic`})}),_jsxs(_components.td,{children:[`Which LLM backend to use — see `,_jsx(_components.a,{href:`/platform/llm-providers`,children:`LLM providers`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`LLM_MAX_TOKENS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4096`})}),_jsx(_components.td,{children:`Max tokens for LLM responses`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_LLM_TRANSPORT`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`sdk`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`sdk`}),` (native SDKs) or `,_jsx(_components.code,{children:`litellm`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_LLM_NATIVE_STRUCTURED_OUTPUT`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Opt-in provider-native structured outputs (`,_jsx(_components.code,{children:`1`}),`/`,_jsx(_components.code,{children:`true`}),`)`]})]})]})]}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Anthropic`,id:`anthropic`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for Anthropic`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for reasoning tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`OpenAI`,id:`openai`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENAI_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for OpenAI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENAI_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for reasoning tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENAI_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`OpenRouter`,id:`openrouter`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENROUTER_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for OpenRouter`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENROUTER_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENROUTER_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENROUTER_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`TrustedRouter`,id:`trustedrouter`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRUSTEDROUTER_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for TrustedRouter`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRUSTEDROUTER_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRUSTEDROUTER_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRUSTEDROUTER_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`DeepSeek`,id:`deepseek`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEEPSEEK_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for DeepSeek`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEEPSEEK_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEEPSEEK_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEEPSEEK_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`Google Gemini`,id:`google-gemini`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for Google Gemini`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`NVIDIA`,id:`nvidia`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NVIDIA_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for NVIDIA NIM`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NVIDIA_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NVIDIA_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NVIDIA_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`MiniMax`,id:`minimax`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MINIMAX_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for MiniMax`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MINIMAX_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MINIMAX_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MINIMAX_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`Groq`,id:`groq`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROQ_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for Groq`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROQ_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model for all tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROQ_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROQ_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override model for tool calling`})]})]})]})}),_jsx(Accordion,{title:`Azure OpenAI`,id:`azure-openai`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_BASE_URL`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Azure OpenAI resource URL (`,_jsx(_components.code,{children:`https://\u003cresource>.openai.azure.com`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for Azure OpenAI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_API_VERSION`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`2024-10-21`})}),_jsx(_components.td,{children:`Azure OpenAI API version`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared deployment name for all slots`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_REASONING_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gpt-5.4-mini`})}),_jsx(_components.td,{children:`Deployment for reasoning tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gpt-5.4-mini`})}),_jsx(_components.td,{children:`Deployment for classification`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_OPENAI_TOOLCALL_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gpt-5.4-mini`})}),_jsx(_components.td,{children:`Deployment for tool calling`})]})]})]})}),_jsx(Accordion,{title:`Amazon Bedrock`,id:`amazon-bedrock`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BEDROCK_REASONING_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for reasoning tasks`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BEDROCK_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model for tool calling`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BEDROCK_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`us.anthropic.claude-sonnet-4-6`})}),_jsx(_components.td,{children:`Model for classification`})]})]})]})}),_jsx(Accordion,{title:`Google Vertex AI`,id:`google-vertex-ai`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_PROJECT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GCP project ID (required for Vertex)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_LOCATION`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`us`})}),_jsx(_components.td,{children:`Vertex AI US multi-region; use a model-supported location`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_REASONING_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gemini-3.8-flash`})}),_jsx(_components.td,{children:`Model for reasoning`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_TOOLCALL_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gemini-3.5-flash-lite`})}),_jsx(_components.td,{children:`Model for tool calling`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gemini-3.8-flash`})}),_jsx(_components.td,{children:`Model for classification`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERTEX_AI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Shared model override for all slots`})]})]})]})}),_jsx(Accordion,{title:`Ollama (Local)`,id:`ollama-local`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OLLAMA_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`llama3.2`})}),_jsx(_components.td,{children:`Model name in Ollama`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OLLAMA_HOST`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`http://localhost:11434`})}),_jsx(_components.td,{children:`Ollama server URL`})]})]})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`llm-reasoning-effort`,children:`LLM Reasoning Effort`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REASONING_EFFORT`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Effort for extended-thinking models: `,_jsx(_components.code,{children:`low`}),`, `,_jsx(_components.code,{children:`medium`}),`, `,_jsx(_components.code,{children:`high`}),`, or `,_jsx(_components.code,{children:`xhigh`}),`. Unset keeps the provider default, except GPT-6.1 Sol on the native OpenAI SDK and Codex, which sends `,_jsx(_components.code,{children:`xhigh`}),` (extra high)`]})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`cli-providers`,children:`CLI providers`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Codex`,id:`codex`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CODEX_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Codex CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CODEX_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Codex`})]})]})]})}),_jsx(Accordion,{title:`Claude Code`,id:`claude-code`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLAUDE_CODE_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Claude Code CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLAUDE_CODE_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Claude Code`})]})]})]})}),_jsx(Accordion,{title:`Gemini CLI`,id:`gemini-cli`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_CLI_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Gemini CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_CLI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Gemini CLI`})]})]})]})}),_jsx(Accordion,{title:`Antigravity`,id:`antigravity`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTIGRAVITY_CLI_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Antigravity CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTIGRAVITY_CLI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Antigravity`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTIGRAVITY_CLI_TIMEOUT_SECONDS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Timeout for Antigravity CLI invocations`})]})]})]})}),_jsx(Accordion,{title:`OpenCode`,id:`opencode`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENCODE_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to OpenCode CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENCODE_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for OpenCode`})]})]})]})}),_jsx(Accordion,{title:`Cursor`,id:`cursor`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CURSOR_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Cursor CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CURSOR_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Cursor`})]})]})]})}),_jsx(Accordion,{title:`Kimi`,id:`kimi`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KIMI_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Kimi CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KIMI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Kimi`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KIMI_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API key for Kimi`})]})]})]})}),_jsx(Accordion,{title:`GitHub Copilot`,id:`github-copilot`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COPILOT_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to GitHub Copilot CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COPILOT_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Copilot`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COPILOT_HOME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Copilot config directory override`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COPILOT_GITHUB_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub token for Copilot auth`})]})]})]})}),_jsx(Accordion,{title:`Grok / xAI`,id:`grok-xai`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROK_CLI_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Grok Build CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROK_CLI_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Model override for Grok Build CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`XAI_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`API-key auth for Grok Build CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`XAI_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override xAI API base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROK_CLI_TIMEOUT_SECONDS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`300`})}),_jsx(_components.td,{children:`Timeout for Grok CLI invocations`})]})]})]})}),_jsx(Accordion,{title:`Pi`,id:`pi`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PI_BIN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Pi CLI binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PI_MODEL`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Model override for Pi CLI (`,_jsx(_components.code,{children:`provider/model`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PI_AGENT_DIR`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Pi agent config directory override`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PI_CONFIG_DIR`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Pi config directory override`})]})]})]})}),_jsx(Accordion,{title:`Custom endpoints`,id:`custom-endpoints`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_OPENAI_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Base URL for an OpenAI-compatible gateway`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_OPENAI_API_KEY`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`API key for `,_jsx(_components.code,{children:`custom-openai`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_OPENAI_MODEL`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Shared model for all `,_jsx(_components.code,{children:`custom-openai`}),` roles`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_OPENAI_TOOLCALL_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Optional toolcall-model override`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_ANTHROPIC_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Base URL for an Anthropic-compatible gateway`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_ANTHROPIC_API_KEY`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`API key for `,_jsx(_components.code,{children:`custom-anthropic`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CUSTOM_ANTHROPIC_MODEL`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Shared model for all `,_jsx(_components.code,{children:`custom-anthropic`}),` roles`]})]})]})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`output-\u0026-debugging`,children:`Output \u0026 Debugging`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRACER_VERBOSE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsxs(_components.td,{children:[`Verbose OpenSRE CLI/UI output (`,_jsx(_components.code,{children:`1`}),`, `,_jsx(_components.code,{children:`true`}),`, `,_jsx(_components.code,{children:`yes`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRACER_OUTPUT_FORMAT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenSRE result output format`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRACER_API_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Base URL for the tracer observability integration / report delivery`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NO_COLOR`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Disable colored output (standard convention)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`COLUMNS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`80`})}),_jsx(_components.td,{children:`Terminal column width for output formatting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ENV`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`development`})}),_jsxs(_components.td,{children:[`Environment (`,_jsx(_components.code,{children:`development`}),`, `,_jsx(_components.code,{children:`production`}),`)`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`credentials-and-authentication`,children:`Credentials and authentication`}),`\n`,_jsxs(_components.p,{children:[`For secrets (`,_jsx(_components.code,{children:`*_TOKEN`}),`, `,_jsx(_components.code,{children:`*_KEY`}),`, `,_jsx(_components.code,{children:`*_PASSWORD`}),`, `,_jsx(_components.code,{children:`*_SECRET`}),`, and similar), OpenSRE looks in this order:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Your process environment`}),`\n`,_jsxs(_components.li,{children:[`The owner-only file `,_jsx(_components.code,{children:`~/.opensre/credentials.json`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`opensre onboard`}),` saves LLM credentials there so they still work after you clear `,_jsx(_components.code,{children:`.env`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Not stored as secrets:`}),` webhook-style URLs such as `,_jsx(_components.code,{children:`SLACK_WEBHOOK_URL`}),` and `,_jsx(_components.code,{children:`ROCKETCHAT_WEBHOOK_URL`}),`. Those stay in env / store only — treat them as secrets and don’t log them.`]}),`\n`,_jsxs(_components.p,{children:[`Want credentials only from the environment, never on disk? Set `,_jsx(_components.code,{children:`OPENSRE_DISABLE_KEYRING=1`}),` and export everything yourself.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_DISABLE_KEYRING`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable local credential storage; credentials must come from the environment`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_ACCOUNT_TOKEN`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Personal OpenSRE account token; with `,_jsx(_components.code,{children:`OPENSRE_DISABLE_KEYRING=1`}),`, also set `,_jsx(_components.code,{children:`OPENSRE_APP_URL`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_APP_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://app.opensre.com`})}),_jsx(_components.td,{children:`OpenSRE app origin; set it explicitly with an environment-only account token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_ACCOUNT_LLM_MODEL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`gpt-6.1-sol`})}),_jsx(_components.td,{children:`Model-family hint for a non-interactive hosted gateway using the account LLM route; override only when the web app’s hosted model changes family`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_LLM_AUTH_METADATA_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre/llm-auth.json`})}),_jsx(_components.td,{children:`Non-secret LLM auth metadata path used by prompt-safe status checks`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`telemetry-\u0026-monitoring`,children:`Telemetry \u0026 Monitoring`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_NO_TELEMETRY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsxs(_components.td,{children:[`Disable all telemetry, including Sentry and product analytics (covers `,_jsx(_components.code,{children:`$ai_generation`}),` prompt/response events)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_ANALYTICS_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable product analytics only`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SENTRY_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable Sentry error reporting`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SENTRY_DSN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override Sentry DSN`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SENTRY_LOGGING_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable Sentry log integration`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_DEPLOYMENT_METHOD`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`local`})}),_jsx(_components.td,{children:`Sentry deployment tag: railway, ec2, vercel, or local`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_PROMPT_LOG_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable prompt logging entirely`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_PROMPT_LOG_LOCAL_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable local prompt log file`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_PROMPT_LOG_REDACT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsx(_components.td,{children:`Redact known token shapes from prompts/responses before local or PostHog logging`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_PROMPT_LOG_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre/prompt_log.jsonl`})}),_jsx(_components.td,{children:`Path to local prompt log file`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_OPERATIONS_LOG_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable the local operations log`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_OPERATIONS_LOG_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre/operations_log.jsonl`})}),_jsx(_components.td,{children:`Path to the local operations log`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_OPERATIONS_LOG_MAX_BYTES`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`5242880`})}),_jsx(_components.td,{children:`Rotate the local operations log after this many bytes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DO_NOT_TRACK`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Honor global do-not-track preference`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_TRACES_SAMPLE_RATE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1.0`})}),_jsx(_components.td,{children:`Trace sampling rate for Sentry`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_ERROR_SAMPLE_RATE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1.0`})}),_jsx(_components.td,{children:`Error sampling rate for Sentry`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`paths-\u0026-directories`,children:`Paths \u0026 Directories`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_HOME`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre`})}),_jsx(_components.td,{children:`Host root for scheduler files, gateway state, local configuration, and sessions when no organization context root is set`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_PROJECT_ENV_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`PROJECT_ROOT/.env`})}),_jsxs(_components.td,{children:[`Path to project-level `,_jsx(_components.code,{children:`.env`}),` file`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_WIZARD_STORE_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre/opensre.json`})}),_jsx(_components.td,{children:`Path to the local wizard/provider selection store`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_CONTEXT_ROOT`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Mounted organization-scoped root for context and sessions; requires `,_jsx(_components.code,{children:`ORGANIZATION_ID`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_INTEGRATIONS_STORE_PATH`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override integrations store path`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`conversation-history`,children:`Conversation history`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_HISTORY_TOKEN_BUDGET`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`48000`})}),_jsx(_components.td,{children:`Estimated tokens of conversation history before it is compacted`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_TOOL_OUTPUT_TOKEN_LIMIT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`10000`})}),_jsx(_components.td,{children:`Approximate tokens per tool observation; output keeps its beginning and end, using four UTF-8 bytes per token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_HISTORY_TOOL_RESULT_CHARS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Optional additional character cap for recorded tool results; unset keeps the tool observation budget with 20% extra space`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_LLM_COMPACTION`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsxs(_components.td,{children:[`Set to `,_jsx(_components.code,{children:`0`}),` to compact history without a model-written summary`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_STRUCTURED_HISTORY`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsxs(_components.td,{children:[`Set to `,_jsx(_components.code,{children:`0`}),` to send earlier turns as one text block instead of replaying them`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`memory`,children:`Memory`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MEMORY_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable long-term memory`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MEMORY_DIR`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Override memory storage directory`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MEMORY_AUTOEXTRACT_DISABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Disable automatic memory extraction and background upkeep`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MEMORY_GATEWAY_ENABLED`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Opt-in memory on shared gateway hosts`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`remote-sync`,children:`Remote sync`}),`\n`,_jsxs(_components.p,{children:[`Mirror conversation history and memory to a user-owned object store. Details: `,_jsx(_components.a,{href:`/install/remote-sync`,children:`Remote sync`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Enable remote sync (`,_jsx(_components.code,{children:`1`}),`/`,_jsx(_components.code,{children:`true`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_PROVIDER`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`aws`})}),_jsxs(_components.td,{children:[`Store backend (`,_jsx(_components.code,{children:`aws`}),`, `,_jsx(_components.code,{children:`gcs`}),`, `,_jsx(_components.code,{children:`vercel`}),`, `,_jsx(_components.code,{children:`azure`}),`, or `,_jsx(_components.code,{children:`s3compat`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_BUCKET`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Bucket / Blob store name (required when sync is on)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_PREFIX`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`opensre`})}),_jsx(_components.td,{children:`Key prefix inside the store`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_REGION`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Region override`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_PROFILE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Named credentials profile`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_ENDPOINT_URL`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Custom S3 endpoint when provider is `,_jsx(_components.code,{children:`s3compat`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_EXCLUDE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated globs to exclude from sync`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_REMOTE_SYNC_EXCLUDE_OFF`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Ignore configured exclusions for one run`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BLOB_READ_WRITE_TOKEN`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Vercel Blob token (when provider is `,_jsx(_components.code,{children:`vercel`}),`)`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`masking`,children:`Masking`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MASK_ENABLED`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsx(_components.td,{children:`Enable reversible identifier masking before external LLM calls`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MASK_KINDS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated mask kinds to enable`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MASK_EXTRA_REGEX`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`JSON map of extra mask kinds to regex patterns`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`feature-flags`,children:`Feature Flags`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OSRE_HELM_INTEGRATION`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Enable Helm integration (1/true/yes)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HELM_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`helm`})}),_jsx(_components.td,{children:`Path to the Helm binary`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HELM_KUBE_CONTEXT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`kubectl context for Helm`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HELM_KUBECONFIG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`kubeconfig path for Helm`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HELM_NAMESPACE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Helm namespace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_RELEASES_API_URL`})}),_jsx(_components.td,{children:`GitHub releases API`}),_jsx(_components.td,{children:`Override releases API endpoint`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`gateway-and-scheduler-runtime`,children:`Gateway and scheduler runtime`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`web`})}),_jsxs(_components.td,{children:[`Container entrypoint: `,_jsx(_components.code,{children:`web`}),`, `,_jsx(_components.code,{children:`gateway`}),`, or `,_jsx(_components.code,{children:`scheduler`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`8000`})}),_jsx(_components.td,{children:`HTTP port for the web surface`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_HOME`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`~/.opensre`})}),_jsxs(_components.td,{children:[`Host root for scheduler files, gateway state, local configuration, and sessions when `,_jsx(_components.code,{children:`OPENSRE_CONTEXT_ROOT`}),` is unset`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DATABASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Postgres connection for gateway records shared across replicas; required for Slack Events API unless the single-replica local-dedup escape hatch is enabled`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SIZE_PROFILE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`SMALL`})}),_jsxs(_components.td,{children:[`Deployment size profile; default turn caps are `,_jsx(_components.code,{children:`SMALL=1`}),`, `,_jsx(_components.code,{children:`MEDIUM=2`}),`, `,_jsx(_components.code,{children:`LARGE=4`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_MAX_CONCURRENT_TURNS`})}),_jsx(_components.td,{children:`size-profile limit`}),_jsx(_components.td,{children:`Override the process-wide concurrent-turn cap with a positive integer`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SCHEDULER_MAX_CONCURRENT_RUNS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`2`})}),_jsx(_components.td,{children:`Maximum scheduled callbacks executing at once; agent turns also need a process-wide turn permit`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_GATEWAY_HOST_SCHEDULER`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsxs(_components.td,{children:[`Run the scheduler inside the gateway; set `,_jsx(_components.code,{children:`0`}),` when a dedicated `,_jsx(_components.code,{children:`MODE=scheduler`}),` service owns it`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_SESSION_FILE_LOCK`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Serialize session-file writes with an OS lock; a shared mount is still required across processes`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`integration-credentials`,children:`Integration credentials`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Observability \u0026 Monitoring`,id:`observability-and-monitoring`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_INSTANCE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Grafana instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_READ_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Grafana API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_LOKI_DATASOURCE_UID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`UID of Loki datasource in Grafana`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_TEMPO_DATASOURCE_UID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`UID of Tempo datasource in Grafana`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_MIMIR_DATASOURCE_UID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`UID of Mimir datasource in Grafana`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPO_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Grafana Tempo / Tempo API base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPO_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Tempo API key (or use username/password)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPO_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Tempo basic-auth username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPO_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Tempo basic-auth password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPO_ORG_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Tempo org ID (multi-tenant)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_VERIFY_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Verify Grafana SSL certificate`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_CA_BUNDLE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to a CA bundle for Grafana TLS verification (self-signed/internal CA)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DD_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Datadog API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DD_APP_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Datadog application key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DD_SITE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`datadoghq.com`})}),_jsx(_components.td,{children:`Datadog site (us/eu)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_API_KEY`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`groundcover read-only service-account token (alias: `,_jsx(_components.code,{children:`GROUNDCOVER_MCP_TOKEN`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_MCP_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://mcp.groundcover.com/api/mcp`})}),_jsx(_components.td,{children:`groundcover MCP endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_TENANT_UUID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Tenant UUID (multi-workspace accounts)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_BACKEND_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Backend ID (multi-backend tenants)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_TIMEZONE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`UTC`})}),_jsxs(_components.td,{children:[`Timezone for returned timestamps (`,_jsx(_components.code,{children:`X-Timezone`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HONEYCOMB_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Honeycomb API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HONEYCOMB_DATASET`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`__all__`})}),_jsx(_components.td,{children:`Honeycomb dataset slug`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HONEYCOMB_API_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://api.honeycomb.io`})}),_jsx(_components.td,{children:`Honeycomb API endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CORALOGIX_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Coralogix API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CORALOGIX_API_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://api.coralogix.com`})}),_jsx(_components.td,{children:`Coralogix API endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CORALOGIX_APPLICATION_NAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Application name in Coralogix`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CORALOGIX_SUBSYSTEM_NAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Subsystem name in Coralogix`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SIGNOZ_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SigNoz instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SIGNOZ_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SigNoz API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ALERTMANAGER_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Alertmanager URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ALERTMANAGER_BEARER_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Bearer token for Alertmanager`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ALERTMANAGER_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Username for Alertmanager basic auth`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ALERTMANAGER_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Password for Alertmanager basic auth`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Splunk instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Splunk API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_INDEX`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`main`})}),_jsx(_components.td,{children:`Splunk index`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_VERIFY_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Verify Splunk SSL certificate`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_CA_BUNDLE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to a CA bundle for Splunk TLS verification`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://sentry.io`})}),_jsx(_components.td,{children:`Sentry instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_ORG_SLUG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry organization slug`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_PROJECT_SLUG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry project slug`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry auth token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_PROJECT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog project ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_PERSONAL_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog personal API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_BASE_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://us.posthog.com`})}),_jsxs(_components.td,{children:[`PostHog app URL (`,_jsx(_components.code,{children:`https://eu.posthog.com`}),` for EU)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_TIMEOUT_SECONDS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`15.0`})}),_jsx(_components.td,{children:`Timeout in seconds for PostHog API requests`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NEW_RELIC_API_KEY`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`New Relic User key (`,_jsx(_components.code,{children:`NRAK-...`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NEW_RELIC_ACCOUNT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`New Relic account ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NEW_RELIC_API_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://api.newrelic.com`})}),_jsx(_components.td,{children:`New Relic API URL (EU/JP endpoints supported)`})]})]})]})}),_jsx(Accordion,{title:`Cloud Platforms`,id:`cloud-platforms`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_REGION`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`us-east-1`})}),_jsx(_components.td,{children:`AWS region`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_ROLE_ARN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`AWS role ARN for cross-account access`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_EXTERNAL_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`External ID for AWS cross-account role`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_ACCESS_KEY_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`AWS access key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_SECRET_ACCESS_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`AWS secret access key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_SESSION_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`AWS session token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLOUD_PROVIDER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Cloud provider hint for ambient region discovery`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLOUD_REGION`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Cloud region (falls back to `,_jsx(_components.code,{children:`AWS_REGION`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KUBECONFIG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to kubeconfig file`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KUBECONFIG_CONTENT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Inline kubeconfig contents`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KUBECONFIG_CONTEXT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`kubectl context`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KUBECONFIG_NAMESPACE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`default`})}),_jsx(_components.td,{children:`Default Kubernetes namespace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RDS_DB_INSTANCE_IDENTIFIER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`AWS RDS DB instance identifier`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RDS_REGION`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`AWS region for RDS (falls back to `,_jsx(_components.code,{children:`AWS_REGION`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RAILWAY_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Railway API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RAILWAY_PROJECT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Railway project`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RAILWAY_SERVICE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Railway service`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RAILWAY_ENVIRONMENT`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`production`})}),_jsx(_components.td,{children:`Railway environment`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RAILWAY_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`railway`})}),_jsx(_components.td,{children:`Path to Railway CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD API base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD auth token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_TOKEN`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Alias for `,_jsx(_components.code,{children:`ARGOCD_AUTH_TOKEN`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD username (basic auth)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD password (basic auth)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_PROJECT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD project`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_APP_NAMESPACE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Argo CD app namespace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_VERIFY_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Verify Argo CD TLS`})]})]})]})}),_jsx(Accordion,{title:`Messaging`,id:`messaging`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_WEBHOOK_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Slack incoming webhook URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_BOT_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Slack bot token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_DEFAULT_CHAT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Slack channel for scheduled delivery (bot-token path)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_APP_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Slack app-level token (Socket Mode)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_GATEWAY_INBOUND_TRANSPORT`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`socket_mode`})}),_jsxs(_components.td,{children:[`How Slack delivers events: `,_jsx(_components.code,{children:`socket_mode`}),` or `,_jsx(_components.code,{children:`events_api_http`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_SIGNING_SECRET`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Request-signature secret. Required for `,_jsx(_components.code,{children:`events_api_http`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_GATEWAY_HTTP_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3000`})}),_jsxs(_components.td,{children:[`Port the `,_jsx(_components.code,{children:`events_api_http`}),` listener binds`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_GATEWAY_ALLOW_LOCAL_DEDUP`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Accept process-local event dedup when `,_jsx(_components.code,{children:`DATABASE_URL`}),` is unset. Single replica only`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_GATEWAY_MAX_CONCURRENT`})}),_jsx(_components.td,{children:`size-profile limit`}),_jsx(_components.td,{children:`Parallel Slack turns before the process-wide cap is applied`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_ALLOWED_USERS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated Slack user IDs allowed to talk to the bot`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_ALLOW_OPEN_WORKSPACE`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Allow any workspace user (`,_jsx(_components.code,{children:`1`}),` for dogfood)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_ACCESS_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Slack user token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SLACK_GITHUB_ISSUES_WEBHOOK_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Slack webhook for GitHub issues`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_BOT_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Discord bot token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_APPLICATION_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Discord application ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_PUBLIC_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Discord public key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_DEFAULT_CHANNEL_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Discord channel`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_ALLOWED_USERS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated Discord user IDs allowed to talk to the bot`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_ALLOW_OPEN_GUILD`})}),_jsx(_components.td,{}),_jsxs(_components.td,{children:[`Allow any guild member (`,_jsx(_components.code,{children:`1`}),` for dogfood)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DISCORD_GATEWAY_MAX_CONCURRENT`})}),_jsx(_components.td,{children:`size-profile limit`}),_jsx(_components.td,{children:`Parallel Discord turns before the process-wide cap is applied`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TELEGRAM_BOT_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Telegram bot token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TELEGRAM_DEFAULT_CHAT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Telegram chat ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TELEGRAM_ALLOWED_USERS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated Telegram user IDs allowed to talk to the bot`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TELEGRAM_GATEWAY_MAX_CONCURRENT`})}),_jsx(_components.td,{children:`size-profile limit`}),_jsx(_components.td,{children:`Parallel Telegram turns before the process-wide cap is applied`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_PRIVATE_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Nostr private key used by the Buzz integration and gateway`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_RELAY_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`http://localhost:3000`})}),_jsx(_components.td,{children:`Buzz relay URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_DEFAULT_CHANNEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Buzz channel UUID for delivery`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_AUTH_TAG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Optional NIP-OA owner-attestation JSON`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_PATH`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`buzz`})}),_jsx(_components.td,{children:`Path to the Buzz CLI`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_ALLOWED_PUBKEYS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated 64-character hex pubkeys allowed to talk to the gateway`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BUZZ_GATEWAY_MAX_CONCURRENT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`4`})}),_jsx(_components.td,{children:`Parallel Buzz turns before the process-wide cap is applied`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ROCKETCHAT_SERVER_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Rocket.Chat server base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ROCKETCHAT_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Rocket.Chat personal access token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ROCKETCHAT_USER_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Rocket.Chat user ID for the token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ROCKETCHAT_DEFAULT_CHANNEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Rocket.Chat channel`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ROCKETCHAT_WEBHOOK_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Rocket.Chat incoming webhook URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_ACCOUNT_SID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Twilio account SID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Twilio auth token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_WHATSAPP_FROM`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`WhatsApp sender number (Twilio)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`WHATSAPP_DEFAULT_TO`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default WhatsApp recipient`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_SMS_FROM`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SMS sender number (Twilio)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_SMS_MESSAGING_SERVICE_SID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SMS messaging service SID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TWILIO_SMS_DEFAULT_TO`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default SMS recipient`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SMTP server hostname`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`587`})}),_jsx(_components.td,{children:`SMTP port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_SECURITY`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`starttls`})}),_jsxs(_components.td,{children:[`SMTP security (`,_jsx(_components.code,{children:`starttls`}),`, `,_jsx(_components.code,{children:`ssl`}),`, or `,_jsx(_components.code,{children:`none`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SMTP username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`SMTP password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_FROM_ADDRESS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`From address for outbound mail`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SMTP_DEFAULT_TO`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default recipient for notifications`})]})]})]})}),_jsx(Accordion,{title:`Code \u0026 Collaboration`,id:`code-and-collaboration`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`streamable-http`})}),_jsx(_components.td,{children:`GitHub MCP transport mode`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub MCP server URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_COMMAND`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub MCP command to execute`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_ARGS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub MCP command arguments`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Does not authorize agent GitHub tools`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_MCP_TOOLSETS`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`repos,issues,pull_requests,actions,search`})}),_jsx(_components.td,{children:`Enabled GitHub MCP toolsets`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSRE_GITHUB_MCP_REPO_PROBE_LIMIT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`50`})}),_jsx(_components.td,{children:`Max repos to probe (5-500)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITLAB_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitLab instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITLAB_ACCESS_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitLab personal access token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITLAB_PROJECT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitLab project ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JIRA_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jira instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JIRA_EMAIL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jira user email`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JIRA_API_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jira API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JIRA_PROJECT_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Default Jira project key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BITBUCKET_WORKSPACE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Bitbucket workspace name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BITBUCKET_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Bitbucket username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BITBUCKET_APP_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Bitbucket app password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BITBUCKET_MAX_RESULTS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`25`})}),_jsx(_components.td,{children:`Max results per API call`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INCIDENT_IO_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`incident.io API URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`INCIDENT_IO_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`incident.io API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PAGERDUTY_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PagerDuty API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`PAGERDUTY_BASE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PagerDuty API base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SERVICENOW_INSTANCE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`ServiceNow instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SERVICENOW_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`ServiceNow username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SERVICENOW_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`ServiceNow password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERCEL_API_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Vercel API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERCEL_TEAM_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Vercel team ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VERCEL_RUNTIME_LOGS_READ_TIMEOUT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`600`})}),_jsxs(_components.td,{children:[`Seconds to wait per Vercel runtime-log read (minimum `,_jsx(_components.code,{children:`30`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GOOGLE_CREDENTIALS_FILE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Path to Google service-account JSON for Docs export`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GOOGLE_DRIVE_FOLDER_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Google Drive folder for Docs export`})]})]})]})}),_jsx(Accordion,{title:`Databases`,id:`databases`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_CONNECTION_STRING`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MongoDB connection string`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MongoDB database name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_AUTH_SOURCE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`admin`})}),_jsx(_components.td,{children:`MongoDB auth source`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_TLS`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Enable MongoDB TLS`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_ATLAS_PUBLIC_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MongoDB Atlas public API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_ATLAS_PRIVATE_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MongoDB Atlas private API key`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_ATLAS_PROJECT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MongoDB Atlas project ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MONGODB_ATLAS_BASE_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://cloud.mongodb.com/api/atlas/v2`})}),_jsx(_components.td,{children:`MongoDB Atlas API base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Redis host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`6379`})}),_jsx(_components.td,{children:`Redis port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Redis ACL username (Redis 6+)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Redis password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_DATABASE`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`0`})}),_jsx(_components.td,{children:`Redis database number`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REDIS_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsx(_components.td,{children:`Connect using TLS`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostgreSQL host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`5432`})}),_jsx(_components.td,{children:`PostgreSQL port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostgreSQL database name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_USERNAME`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`postgres`})}),_jsx(_components.td,{children:`PostgreSQL username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostgreSQL password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTGRESQL_SSL_MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`prefer`})}),_jsx(_components.td,{children:`PostgreSQL SSL mode`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MySQL host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3306`})}),_jsx(_components.td,{children:`MySQL port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MySQL database name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_USERNAME`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`root`})}),_jsx(_components.td,{children:`MySQL username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MySQL password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MYSQL_SSL_MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`preferred`})}),_jsx(_components.td,{children:`MySQL SSL mode`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MariaDB host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`3306`})}),_jsx(_components.td,{children:`MariaDB port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MariaDB database name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MariaDB username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MariaDB password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MARIADB_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Enable MariaDB SSL`})]})]})]})}),_jsx(Accordion,{title:`Message Queues \u0026 Other Services`,id:`message-queues-and-other-services`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`RabbitMQ host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_MANAGEMENT_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`15672`})}),_jsx(_components.td,{children:`RabbitMQ management port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`RabbitMQ username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`RabbitMQ password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_VHOST`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`/`})}),_jsx(_components.td,{children:`RabbitMQ vhost`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsx(_components.td,{children:`Enable RabbitMQ SSL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`RABBITMQ_VERIFY_SSL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Verify RabbitMQ SSL certificate`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BETTERSTACK_QUERY_ENDPOINT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Better Stack query endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BETTERSTACK_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Better Stack username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BETTERSTACK_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Better Stack password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`BETTERSTACK_SOURCES`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Better Stack sources`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KAFKA_BOOTSTRAP_SERVERS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Kafka broker addresses`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KAFKA_SECURITY_PROTOCOL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`PLAINTEXT`})}),_jsx(_components.td,{children:`Kafka security protocol`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KAFKA_SASL_MECHANISM`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Kafka SASL mechanism`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KAFKA_SASL_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Kafka SASL username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`KAFKA_SASL_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Kafka SASL password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DAGSTER_ENDPOINT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Dagster GraphQL endpoint`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DAGSTER_API_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Dagster Cloud User Token (leave empty for unauthenticated local OSS)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPORAL_API_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Temporal Cloud / server API URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPORAL_NAMESPACE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`default`})}),_jsx(_components.td,{children:`Temporal namespace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TEMPORAL_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Temporal API key (optional for local)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JENKINS_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jenkins base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JENKINS_USER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jenkins username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`JENKINS_API_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Jenkins API token`})]})]})]})}),_jsx(Accordion,{title:`Data \u0026 Search`,id:`data-and-search`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenSearch instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenSearch username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenSearch password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_API_KEY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenSearch API key (alternative to username/password)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_INDEX_PATTERN`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`*`})}),_jsx(_components.td,{children:`OpenSearch index pattern`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENSEARCH_MAX_RESULTS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`100`})}),_jsx(_components.td,{children:`Max OpenSearch results`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenObserve instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenObserve API token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenObserve username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenObserve password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_ORG`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`default`})}),_jsx(_components.td,{children:`OpenObserve organization`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_STREAM`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenObserve stream`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENOBSERVE_MAX_RESULTS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`100`})}),_jsx(_components.td,{children:`Max OpenObserve results`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VICTORIA_LOGS_URL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`VictoriaLogs instance URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`VICTORIA_LOGS_TENANT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`VictoriaLogs tenant ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`ClickHouse host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`8123`})}),_jsx(_components.td,{children:`ClickHouse port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_DATABASE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`default`})}),_jsx(_components.td,{children:`ClickHouse database`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_USER`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`default`})}),_jsx(_components.td,{children:`ClickHouse username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`ClickHouse password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CLICKHOUSE_SECURE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsx(_components.td,{children:`Enable ClickHouse TLS`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_ACCOUNT_IDENTIFIER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake account identifier`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_ACCOUNT`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake account (alternative)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_USER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_WAREHOUSE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake warehouse`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_ROLE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake role`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake database`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_SCHEMA`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Snowflake schema`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SNOWFLAKE_MAX_RESULTS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`50`})}),_jsx(_components.td,{children:`Max Snowflake results`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_SERVER`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure SQL server name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_DATABASE`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure SQL database name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_PORT`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1433`})}),_jsx(_components.td,{children:`Azure SQL port`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_USERNAME`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure SQL username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_PASSWORD`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure SQL password`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_DRIVER`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`ODBC Driver 18 for SQL Server`})}),_jsx(_components.td,{children:`Azure SQL ODBC driver`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SQL_ENCRYPT`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Enable Azure SQL encryption`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_LOG_ANALYTICS_WORKSPACE_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure Log Analytics workspace ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_LOG_ANALYTICS_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure Log Analytics token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_LOG_ANALYTICS_ENDPOINT`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://api.loganalytics.io`})}),_jsx(_components.td,{children:`Log Analytics Query API endpoint (sovereign clouds)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_TENANT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure tenant ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_SUBSCRIPTION_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Azure subscription ID`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AZURE_MAX_RESULTS`})}),_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`100`})}),_jsx(_components.td,{children:`Max Azure results`})]})]})]})}),_jsx(Accordion,{title:`MCP Servers`,id:`mcp-servers`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`streamable-http`})}),_jsx(_components.td,{children:`PostHog MCP transport mode`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://mcp.posthog.com/mcp`})}),_jsx(_components.td,{children:`PostHog MCP URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog MCP auth token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_PROJECT_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog project scoped to MCP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_ORGANIZATION_ID`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog organization scoped to MCP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_FEATURES`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Comma-separated PostHog MCP features`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_READ_ONLY`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{children:`Restrict PostHog MCP to read-only`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_COMMAND`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog MCP stdio command`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`POSTHOG_MCP_ARGS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`PostHog MCP stdio args`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_MODE`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`streamable-http`})}),_jsx(_components.td,{children:`Sentry MCP transport mode`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_URL`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`https://mcp.sentry.dev/mcp`})}),_jsx(_components.td,{children:`Sentry MCP URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_AUTH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry MCP auth token`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_HOST`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Self-hosted Sentry MCP host`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_ORGANIZATION_SLUG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry org slug for MCP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_PROJECT_SLUG`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry project slug for MCP`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_SKILLS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Enabled Sentry MCP skills`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_COMMAND`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry MCP stdio command`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SENTRY_MCP_ARGS`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Sentry MCP stdio args`})]})]})]})}),_jsx(Accordion,{title:`Git Integrations`,id:`git-integrations`,children:_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_EVENT_PATH`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub Actions event payload path`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_REPOSITORY`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`GitHub repository (owner/repo)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GITHUB_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Does not authorize agent GitHub tools; connect GitHub in the OpenSRE app`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GH_TOKEN`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Does not authorize agent GitHub tools`})]})]})]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`multi-instance-integrations`,children:`Multi-instance integrations`}),`\n`,_jsxs(_components.p,{children:[`Need more than one Datadog, Grafana, or AWS account (for example prod and staging)? Use a JSON `,_jsx(_components.code,{children:`*_INSTANCES`}),` variable:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`What it configures`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GRAFANA_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Grafana instances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DD_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Datadog sites/accounts`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROUNDCOVER_INSTANCES`})}),_jsx(_components.td,{children:`Multiple groundcover instances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`HONEYCOMB_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Honeycomb instances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`CORALOGIX_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Coralogix instances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`SPLUNK_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Splunk instances`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AWS_INSTANCES`})}),_jsx(_components.td,{children:`Multiple AWS accounts`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ARGOCD_INSTANCES`})}),_jsx(_components.td,{children:`Multiple Argo CD instances`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Format and examples: `,_jsx(_components.a,{href:`/platform/multi-instance-integrations`,children:`Multi-instance integrations`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`llm-classification-models`,children:`LLM classification models`}),`\n`,_jsx(_components.p,{children:`If you don’t set these, OpenSRE falls back to the reasoning model (or the provider default):`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Variable`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ANTHROPIC_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Anthropic classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENAI_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenAI classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`OPENROUTER_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`OpenRouter classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`TRUSTEDROUTER_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`TrustedRouter classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`DEEPSEEK_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`DeepSeek classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GEMINI_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Gemini classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`NVIDIA_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`NVIDIA classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`MINIMAX_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`MiniMax classification model`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GROQ_CLASSIFICATION_MODEL`})}),_jsx(_components.td,{}),_jsx(_components.td,{children:`Groq classification model`})]})]})]})]})}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":"Environment Variables","description":"Every OpenSRE setting you can put in the environment or a .env file.","href":"/install/environment-variables"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Secret storage","slug":"secret-storage","depth":2,"children":[]},{"title":"LLM providers","slug":"llm-providers","depth":2,"children":[]},{"title":"LLM Reasoning Effort","slug":"llm-reasoning-effort","depth":2,"children":[]},{"title":"CLI providers","slug":"cli-providers","depth":2,"children":[]},{"title":"Output \u0026 Debugging","slug":"output-\u0026-debugging","depth":2,"children":[]},{"title":"Credentials and authentication","slug":"credentials-and-authentication","depth":2,"children":[]},{"title":"Telemetry \u0026 Monitoring","slug":"telemetry-\u0026-monitoring","depth":2,"children":[]},{"title":"Paths \u0026 Directories","slug":"paths-\u0026-directories","depth":2,"children":[]},{"title":"Conversation history","slug":"conversation-history","depth":2,"children":[]},{"title":"Memory","slug":"memory","depth":2,"children":[]},{"title":"Remote sync","slug":"remote-sync","depth":2,"children":[]},{"title":"Masking","slug":"masking","depth":2,"children":[]},{"title":"Feature Flags","slug":"feature-flags","depth":2,"children":[]},{"title":"Gateway and scheduler runtime","slug":"gateway-and-scheduler-runtime","depth":2,"children":[]},{"title":"Integration credentials","slug":"integration-credentials","depth":2,"children":[]},{"title":"Multi-instance integrations","slug":"multi-instance-integrations","depth":2,"children":[]},{"title":"LLM classification models","slug":"llm-classification-models","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/tracer/3640b424f7229c9e/toc-actions.js","/docs/_mintlify/custom/tracer/3efb8263c18eafe6/public/radar-chart.js"],"subdomain":"tracer","siteName":"OpenSRE Documentation","title":"Environment Variables - OpenSRE Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T21:36:58.344Z","originalFileLocation":"install/environment-variables.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;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=\"system\"}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=\"Every OpenSRE setting you can put in the environment or a .env file.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_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=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Environment Variables - OpenSRE Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every OpenSRE setting you can put in the environment or a .env file.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://opensre.com/docs/install/environment-variables\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tracer.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Environment+Variables\u0026amp;description=Every+OpenSRE+setting+you+can+put+in+the+environment+or+a+.env+file.\u0026amp;theme=ecba481d104c5d7db3f22fd8\u0026amp;signature=623d774502ad8349536c56a87d2d31c273f93123ff716ac3edbbbb013c87fa76\">\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=\"Environment Variables - OpenSRE Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every OpenSRE setting you can put in the environment or a .env file.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tracer.mintlify.app/_mintlify/api/og/v2?division=Get+started\u0026amp;title=Environment+Variables\u0026amp;description=Every+OpenSRE+setting+you+can+put+in+the+environment+or+a+.env+file.\u0026amp;theme=ecba481d104c5d7db3f22fd8\u0026amp;signature=623d774502ad8349536c56a87d2d31c273f93123ff716ac3edbbbb013c87fa76\">\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=\"/docs/mintlify-assets/_mintlify/favicons/tracer/YbZGPFHeNcvj92i8/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenSRE Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://opensre.com/docs/install/environment-variables\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/install/environment-variables.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://opensre.com/#organization\",\"name\":\"OpenSRE Documentation\",\"url\":\"https://opensre.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tracer/rmdYtNSoc9Q5D-5B/images/opensre-logo-black.svg?fit=max\u0026auto=format\u0026n=rmdYtNSoc9Q5D-5B\u0026q=85\u0026s=7ea8db5a1f8e1665db7544632022e298\"}},{\"@type\":\"WebSite\",\"@id\":\"https://opensre.com/docs#website\",\"name\":\"OpenSRE Documentation\",\"url\":\"https://opensre.com/docs\",\"publisher\":{\"@id\":\"https://opensre.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://opensre.com/docs/install/environment-variables#webpage\",\"url\":\"https://opensre.com/docs/install/environment-variables\",\"name\":\"Environment Variables\",\"description\":\"Every OpenSRE setting you can put in the environment or a .env file.\",\"dateModified\":\"2026-10-30T21:36:58.344Z\",\"isPartOf\":{\"@id\":\"https://opensre.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://opensre.com/docs/install/environment-variables#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://opensre.com/docs/install/environment-variables#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get started\",\"item\":\"https://opensre.com/docs/getting-started/quickstart\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Environment Variables\",\"item\":\"https://opensre.com/docs/install/environment-variables\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://opensre.com/docs/install/environment-variables#article\",\"headline\":\"Environment Variables\",\"name\":\"Environment Variables\",\"description\":\"Every OpenSRE setting you can put in the environment or a .env file.\",\"url\":\"https://opensre.com/docs/install/environment-variables\",\"mainEntityOfPage\":{\"@id\":\"https://opensre.com/docs/install/environment-variables#webpage\"},\"dateModified\":\"2026-10-30T21:36:58.344Z\",\"publisher\":{\"@id\":\"https://opensre.com/#organization\"},\"isPartOf\":{\"@id\":\"https://opensre.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenSRE Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenSRE Documentation","nav":{"global":null,"directory":"card","groups":[{"group":"Welcome","pages":[{"title":"Welcome to OpenSRE","href":"/index"},{"title":"Showcase","href":"/getting-started/showcase"},{"title":"Features","href":"/getting-started/features"},{"title":"FAQ","href":"/guides/faq"}]},{"group":"Get started","pages":[{"title":"Quickstart","href":"/getting-started/quickstart"},{"title":"Install OpenSRE","href":"/install/index"},{"title":"Local and on-prem setup","href":"/install/install-local"},{"title":"Enterprise setup (OpenSRE Cloud)","href":"/install/install-enterprise"},{"group":"Platforms","expanded":false,"pages":[{"title":"macOS","href":"/install/macos"},{"title":"Linux","href":"/install/linux-local"},{"title":"Windows","href":"/install/windows-local"},{"title":"Docker","description":"Run OpenSRE in Docker for a repeatable local or server setup.","href":"/install/docker"}]},{"title":"Environment Variables","href":"/install/environment-variables"},{"title":"Sync to your own object store","description":"Copy sessions and memory between machines using an S3, GCS, Azure, or Vercel Blob store you own.","href":"/install/remote-sync"}]},{"group":"CI/CD","pages":[{"title":"CI/CD with OpenSRE","href":"/cicd/overview"},{"title":"CI/CD analytics demo","href":"/cicd/cicd-analytics-demo"},{"title":"Fix GitHub CI","href":"/cicd/github-ci-fix"},{"title":"Keep CI green with an agent","href":"/cicd/ci-repair-agent"},{"title":"Scan CI health across repositories","href":"/cicd/github-ci-health-scan"}]},{"group":"Using the shell","pages":[{"title":"Shell commands","href":"/getting-started/interactive-shell-commands"},{"title":"Agent with connected tools","href":"/getting-started/interactive-shell-assistant"},{"title":"Goals","href":"/getting-started/goals"}]},{"group":"Guides","pages":[{"title":"OTel payment auto-triage pilot","href":"/guides/otel-payment-triage"}]},{"group":"Run it anywhere","pages":[{"title":"Deployment","href":"/guides/deployment"},{"title":"Headless CLI","href":"/guides/headless-cli"},{"title":"HTTP API","href":"/guides/api"},{"title":"Python API","href":"/guides/python-api"},{"title":"Hosting the Agent","href":"/guides/hosting-the-agent"}]},{"group":"Platform","pages":[{"title":"LLM Providers","href":"/platform/llm-providers"},{"title":"Multi-instance integrations","href":"/platform/multi-instance-integrations"},{"title":"Masking Sensitive Identifiers","href":"/platform/masking"},{"title":"Interactive Shell Privacy","href":"/platform/interactive-shell-privacy"},{"title":"Session History","href":"/platform/sessions"},{"title":"Principal-scoped storage (Slack and Discord)","href":"/platform/principal-scoped-storage"},{"title":"Long-Term Memory","href":"/platform/memory"},{"title":"Work Management","href":"/platform/work-management"},{"title":"Scheduled Deliveries (Cron)","href":"/platform/cron"},{"title":"Closed-Loop Learning","href":"/platform/closed-loop-learning"}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/integrations/index"},{"group":"Monitoring","expanded":false,"pages":[{"title":"Azure Monitor","href":"/integrations/monitoring/azure-monitor"},{"title":"Better Stack Telemetry","href":"/integrations/monitoring/betterstack"},{"title":"Coralogix","href":"/integrations/monitoring/coralogix"},{"title":"Datadog","href":"/integrations/monitoring/datadog"},{"title":"Grafana","href":"/integrations/monitoring/grafana"},{"title":"Grafana Annotations","href":"/integrations/monitoring/grafana_annotations"},{"title":"groundcover","href":"/integrations/monitoring/groundcover"},{"title":"Honeycomb","href":"/integrations/monitoring/honeycomb"},{"title":"New Relic","href":"/integrations/monitoring/new_relic"},{"title":"OpenObserve","href":"/integrations/monitoring/openobserve"},{"title":"PostHog","href":"/integrations/monitoring/posthog"},{"title":"PostHog (MCP)","href":"/integrations/monitoring/posthog-mcp"},{"title":"SigNoz","href":"/integrations/monitoring/signoz"},{"title":"Splunk","href":"/integrations/monitoring/splunk"},{"title":"Grafana Tempo","href":"/integrations/monitoring/tempo"},{"title":"VictoriaLogs","href":"/integrations/monitoring/victoria_logs"}]},{"group":"Incidents","expanded":false,"pages":[{"title":"Alertmanager","href":"/integrations/incidents/alertmanager"},{"title":"Runbook-guided investigations","href":"/integrations/incidents/runbook-guided-investigations"},{"title":"incident.io","href":"/integrations/incidents/incident_io"},{"title":"PagerDuty","href":"/integrations/incidents/pagerduty"},{"title":"Sentry","href":"/integrations/incidents/sentry"},{"title":"Sentry (MCP)","href":"/integrations/incidents/sentry-mcp"},{"title":"ServiceNow","href":"/integrations/incidents/servicenow"},{"title":"Fix a Sentry issue","href":"/integrations/incidents/fix-sentry-issue"}]},{"group":"Cloud","expanded":false,"pages":[{"title":"Argo CD","href":"/integrations/cloud/argocd"},{"title":"AWS","href":"/integrations/cloud/aws"},{"title":"AWS Lambda","href":"/integrations/cloud/aws_lambda"},{"title":"AWS CloudTrail","href":"/integrations/cloud/cloudtrail_events"},{"title":"AWS EC2","href":"/integrations/cloud/ec2"},{"title":"AWS ELB","href":"/integrations/cloud/elb"},{"title":"Helm (CLI)","href":"/integrations/cloud/helm"},{"title":"Kubernetes","href":"/integrations/cloud/kubernetes"},{"title":"Railway","href":"/integrations/cloud/railway"},{"title":"AWS S3","href":"/integrations/cloud/s3"},{"title":"AWS SQS","href":"/integrations/cloud/sqs_queues"},{"title":"Vercel","href":"/integrations/cloud/vercel"}]},{"group":"Code and CI","expanded":false,"pages":[{"title":"Architecture audit tool","href":"/integrations/code/architecture-audit-tool"},{"title":"Structured file reads","href":"/integrations/code/structured-file-tool"},{"title":"Counting files","href":"/integrations/code/counting-files"},{"title":"Bitbucket","href":"/integrations/code/bitbucket"},{"title":"GitHub","href":"/integrations/code/github"},{"title":"Fix GitHub security and quality findings","href":"/integrations/code/github-security-fix"},{"title":"Resolve merge conflicts","href":"/integrations/code/resolve-merge-conflicts"},{"title":"GitHub workflow tools","href":"/integrations/code/github-workflow-tools"},{"title":"GitHub Actions","href":"/integrations/code/github-actions"},{"title":"GitLab","href":"/integrations/code/gitlab"},{"title":"Jenkins","href":"/integrations/code/jenkins"},{"title":"Pi coding tasks","href":"/integrations/code/pi-coding"}]},{"group":"Collaboration","expanded":false,"pages":[{"title":"Google Docs","href":"/integrations/collaboration/google-docs"},{"title":"Jira","href":"/integrations/collaboration/jira"},{"title":"Trello","href":"/integrations/collaboration/trello"}]},{"group":"Messaging","expanded":false,"pages":[{"title":"Messaging","href":"/integrations/messaging/index"},{"title":"SMTP","href":"/integrations/messaging/smtp"},{"title":"Buzz","href":"/integrations/messaging/buzz"},{"title":"Slack","href":"/integrations/messaging/slack"},{"title":"Discord","href":"/integrations/messaging/discord"},{"title":"Telegram","href":"/integrations/messaging/telegram"},{"title":"Rocket.Chat","href":"/integrations/messaging/rocketchat"},{"title":"WhatsApp","href":"/integrations/messaging/whatsapp"},{"title":"Twilio SMS","href":"/integrations/messaging/twilio-sms"}]},{"group":"Databases","expanded":false,"pages":[{"title":"Azure SQL","href":"/integrations/databases/azure-sql"},{"title":"ClickHouse","href":"/integrations/databases/clickhouse"},{"title":"AWS Elasticsearch (AWS ES)","href":"/integrations/databases/elasticsearch"},{"title":"MariaDB","href":"/integrations/databases/mariadb"},{"title":"MongoDB","href":"/integrations/databases/mongodb"},{"title":"MongoDB Atlas","href":"/integrations/databases/mongodb-atlas"},{"title":"MySQL","href":"/integrations/databases/mysql"},{"title":"OpenSearch / Elasticsearch","href":"/integrations/databases/opensearch"},{"title":"PostgreSQL","href":"/integrations/databases/postgresql"},{"title":"AWS RDS","href":"/integrations/databases/rds"},{"title":"Redis","href":"/integrations/databases/redis"},{"title":"Snowflake","href":"/integrations/databases/snowflake"},{"title":"Supabase","href":"/integrations/databases/supabase"}]},{"group":"Workflows","expanded":false,"pages":[{"title":"Airflow","href":"/integrations/workflows/airflow"},{"title":"Dagster","href":"/integrations/workflows/dagster"},{"title":"Kafka","href":"/integrations/workflows/kafka"},{"title":"Prefect","href":"/integrations/workflows/prefect"},{"title":"RabbitMQ","href":"/integrations/workflows/rabbitmq"},{"title":"Temporal","href":"/integrations/workflows/temporal"}]}]},{"group":"Community","pages":[{"title":"Community Giveaway","href":"/guides/bi-weekly-giveaway"},{"title":"Pull request review flow","href":"/guides/pr-review-flow"}]}]},"basePath":"","title":"Environment Variables - OpenSRE Documentation","buildId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","deploymentId":"dpl_GWQzn6k13MqphA3qck3hQKoQXDzM","dynamics":[],"chunks":[]}