[{"data":1,"prerenderedAt":639},["ShallowReactive",2],{"navigation_docs":3,"-docs-key-features-llm-settings-configuration":158,"-docs-key-features-llm-settings-configuration-surround":634},[4,15,74,98,113],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[10],{"title":11,"path":12,"stem":13,"icon":14},"Zeeq Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"children":19,"page":6},"Key Features","\u002Fdocs\u002Fkey-features","docs\u002F3.key-features",[20,25,30,35,40,45,50,55,59,64,69],{"title":21,"path":22,"stem":23,"icon":24},"Membership Invitations","\u002Fdocs\u002Fkey-features\u002Fmembership-invitations","docs\u002F3.key-features\u002F1.membership-invitations","i-hugeicons-cube",{"title":26,"path":27,"stem":28,"icon":29},"Command Palette","\u002Fdocs\u002Fkey-features\u002Fcommand-palette","docs\u002F3.key-features\u002F10.command-palette","i-hugeicons-search-01",{"title":31,"path":32,"stem":33,"icon":34},"Library Import and Export","\u002Fdocs\u002Fkey-features\u002Flibrary-import-export","docs\u002F3.key-features\u002F11.library-import-export","i-lucide-package-open",{"title":36,"path":37,"stem":38,"icon":39},"LLM Settings Configuration","\u002Fdocs\u002Fkey-features\u002Fllm-settings-configuration","docs\u002F3.key-features\u002F2.llm-settings-configuration","i-hugeicons-ai-magic",{"title":41,"path":42,"stem":43,"icon":44},"Agent Code Review Findings","\u002Fdocs\u002Fkey-features\u002Fagent-code-review-findings","docs\u002F3.key-features\u002F3.agent-code-review-findings","i-lucide-list-checks",{"title":46,"path":47,"stem":48,"icon":49},"Credentials & API Tokens","\u002Fdocs\u002Fkey-features\u002Fcredentials","docs\u002F3.key-features\u002F4.credentials","i-hugeicons-key-01",{"title":51,"path":52,"stem":53,"icon":54},"Manual Document Libraries","\u002Fdocs\u002Fkey-features\u002Fmanual-document-libraries","docs\u002F3.key-features\u002F5.manual-document-libraries","i-lucide-library-big",{"title":56,"path":57,"stem":58,"icon":29},"Snippet Search","\u002Fdocs\u002Fkey-features\u002Fsnippet-search","docs\u002F3.key-features\u002F6.snippet-search",{"title":60,"path":61,"stem":62,"icon":63},"Shared Prompt Fragment","\u002Fdocs\u002Fkey-features\u002Fshared-prompt-fragment","docs\u002F3.key-features\u002F7.shared-prompt-fragment","i-lucide-notebook-pen",{"title":65,"path":66,"stem":67,"icon":68},"Code Review Sources & Telemetry","\u002Fdocs\u002Fkey-features\u002Fcode-review-sources","docs\u002F3.key-features\u002F8.code-review-sources","i-hugeicons-book-01",{"title":70,"path":71,"stem":72,"icon":73},"Excluding Documents from Code Reviews","\u002Fdocs\u002Fkey-features\u002Fcode-review-document-exclusion","docs\u002F3.key-features\u002F9.code-review-document-exclusion","i-lucide-eye-off",{"title":75,"path":76,"stem":77,"children":78,"page":6},"Runtime Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F5.configuration",[79,84,89,93],{"title":80,"path":81,"stem":82,"icon":83},"Google Cloud Configuration","\u002Fdocs\u002Fconfiguration\u002Fgcp-runtime","docs\u002F5.configuration\u002F1.gcp-runtime","i-hugeicons-google",{"title":85,"path":86,"stem":87,"icon":88},"GitHub Configuration","\u002Fdocs\u002Fconfiguration\u002Fgithub-configuration","docs\u002F5.configuration\u002F2.github-configuration","i-hugeicons-github",{"title":90,"path":91,"stem":92},"Local OpenIddict Certificates","\u002Fdocs\u002Fconfiguration\u002Flocal-openiddict-certificates","docs\u002F5.configuration\u002F3.local-openiddict-certificates",{"title":94,"path":95,"stem":96,"icon":97},"System Admin Access","\u002Fdocs\u002Fconfiguration\u002Fsystem-admin-access","docs\u002F5.configuration\u002F4.system-admin-access","i-hugeicons-shield-01",{"title":99,"path":100,"stem":101,"children":102,"page":6},"Metrics","\u002Fdocs\u002Fmetrics","docs\u002F6.metrics",[103,108],{"title":104,"path":105,"stem":106,"icon":107},"Metrics Dashboard","\u002Fdocs\u002Fmetrics\u002Fmetrics-dashboard","docs\u002F6.metrics\u002F1.metrics-dashboard","i-hugeicons-analytics-01",{"title":109,"path":110,"stem":111,"icon":112},"Metrics Pipeline","\u002Fdocs\u002Fmetrics\u002Fmetrics-pipeline","docs\u002F6.metrics\u002F2.metrics-pipeline","i-hugeicons-database-02",{"title":114,"path":115,"stem":116,"children":117,"page":6},"Design and Architecture","\u002Fdocs\u002Farchitecture","docs\u002F9.architecture",[118,123,128,133,137,141,145,150,154],{"title":119,"path":120,"stem":121,"icon":122},"Caching","\u002Fdocs\u002Farchitecture\u002Fcaching","docs\u002F9.architecture\u002F1.caching","i-lucide-database",{"title":124,"path":125,"stem":126,"icon":127},"Messaging and Queueing","\u002Fdocs\u002Farchitecture\u002Fmessaging-and-queueing","docs\u002F9.architecture\u002F2.messaging-and-queueing","i-lucide-message-square",{"title":129,"path":130,"stem":131,"icon":132},"GitHub Comment Rendering","\u002Fdocs\u002Farchitecture\u002Fgithub-comment-rendering","docs\u002F9.architecture\u002F3.github-comment-rendering","i-lucide-github",{"title":134,"path":135,"stem":136},"GitHub Integration","\u002Fdocs\u002Farchitecture\u002Fgithub-integration","docs\u002F9.architecture\u002F4.github-integration",{"title":138,"path":139,"stem":140},"LLM Settings and Secret Storage","\u002Fdocs\u002Farchitecture\u002Fllm-settings-and-secret-storage","docs\u002F9.architecture\u002F5.llm-settings-and-secret-storage",{"title":142,"path":143,"stem":144},"Organization Activation and Routes","\u002Fdocs\u002Farchitecture\u002Forganization-activation-and-routes","docs\u002F9.architecture\u002F6.organization-activation-and-routes",{"title":146,"path":147,"stem":148,"icon":149},"MCP Uploaded-Diff Code Reviews","\u002Fdocs\u002Farchitecture\u002Fmcp-uploaded-diff-code-reviews","docs\u002F9.architecture\u002F7.mcp-uploaded-diff-code-reviews","i-lucide-file-search",{"title":151,"path":152,"stem":153},"Repository Content Ingest","\u002Fdocs\u002Farchitecture\u002Frepository-content-ingest","docs\u002F9.architecture\u002F8.repository-content-ingest",{"title":155,"path":156,"stem":157},"Telemetry Ingest","\u002Fdocs\u002Farchitecture\u002Ftelemetry-ingest","docs\u002F9.architecture\u002F9.telemetry-ingest",{"id":159,"title":36,"body":160,"description":627,"extension":628,"links":629,"meta":630,"navigation":631,"path":37,"seo":632,"stem":38,"__hash__":633},"docs\u002Fdocs\u002F3.key-features\u002F2.llm-settings-configuration.md",{"type":161,"value":162,"toc":615},"minimark",[163,185,188,193,196,199,203,206,253,256,325,336,341,355,359,362,416,422,429,436,440,443,489,492,496,503,506,510,516,559,562,582,585,608,611],[164,165,166,167,171,172,176,177,180,181,184],"p",{},"Zeeq exposes organization-level LLM settings under ",[168,169,170],"strong",{},"Settings > LLM Configuration",". Owners and admins can choose a provider, model, and key source for the shared ",[173,174,175],"code",{},"Fast",", ",[173,178,179],{},"High",", and ",[173,182,183],{},"Max"," workload tiers.",[164,186,187],{},"The settings are intentionally shared infrastructure. Code reviews are an early consumer, but document processing, memories, agents, and future LLM-backed workflows can use the same organization configuration.",[189,190,192],"h2",{"id":191},"access","Access",[164,194,195],{},"Only organization owners and admins can read or change LLM settings and key metadata.",[164,197,198],{},"Non-admin members can open the route, but the page shows an access-required notice instead of loading provider settings or encrypted key metadata.",[189,200,202],{"id":201},"model-tiers","Model Tiers",[164,204,205],{},"The UI configures three named tiers:",[207,208,209,222],"table",{},[210,211,212],"thead",{},[213,214,215,219],"tr",{},[216,217,218],"th",{},"Tier",[216,220,221],{},"Intended use",[223,224,225,235,244],"tbody",{},[213,226,227,232],{},[228,229,230],"td",{},[173,231,175],{},[228,233,234],{},"Low-latency work where cost and responsiveness matter most.",[213,236,237,241],{},[228,238,239],{},[173,240,179],{},[228,242,243],{},"More demanding review, synthesis, and reasoning work.",[213,245,246,250],{},[228,247,248],{},[173,249,183],{},[228,251,252],{},"The most capable model for expensive or complex workflows.",[164,254,255],{},"The web catalog is a UI convenience, not a backend allowlist. It includes:",[207,257,258,268],{},[210,259,260],{},[213,261,262,265],{},[216,263,264],{},"Provider",[216,266,267],{},"Models",[223,269,270,287,303],{},[213,271,272,275],{},[228,273,274],{},"Fireworks",[228,276,277,280,281,176,284],{},[173,278,279],{},"accounts\u002Ffireworks\u002Fmodels\u002Fglm-5p2"," (GLM 5.2), ",[173,282,283],{},"accounts\u002Ffireworks\u002Fmodels\u002Fdeepseek-v4-pro",[173,285,286],{},"accounts\u002Ffireworks\u002Fmodels\u002Fdeepseek-v4-flash",[213,288,289,292],{},[228,290,291],{},"OpenAI",[228,293,294,176,297,176,300],{},[173,295,296],{},"gpt-5.4-mini",[173,298,299],{},"gpt-5.4",[173,301,302],{},"gpt-5.5",[213,304,305,308],{},[228,306,307],{},"Anthropic",[228,309,310,176,313,176,316,176,319,176,322],{},[173,311,312],{},"claude-haiku-4-5",[173,314,315],{},"claude-sonnet-4-6",[173,317,318],{},"claude-opus-4-6",[173,320,321],{},"claude-opus-4-7",[173,323,324],{},"claude-opus-4-8",[164,326,327,328,331,332,335],{},"DeepSeek models are reachable ",[168,329,330],{},"only through Fireworks"," (the two ",[173,333,334],{},"deepseek-v4-*"," entries above). DeepSeek-direct is no longer a selectable provider.",[337,338,340],"h3",{"id":339},"default-model","Default model",[164,342,343,344,347,348,350,351,354],{},"When an organization has not customized its LLM settings, all three tiers resolve to ",[168,345,346],{},"Fireworks GLM 5.2"," (",[173,349,279],{},") using Zeeq's internal default key and the Fireworks endpoint (",[173,352,353],{},"https:\u002F\u002Fapi.fireworks.ai\u002Finference\u002Fv1","). Code reviews use the same default path.",[189,356,358],{"id":357},"key-sources","Key Sources",[164,360,361],{},"Zeeq has two key paths:",[207,363,364,380],{},[210,365,366],{},[213,367,368,371,374,377],{},[216,369,370],{},"Key source",[216,372,373],{},"Where it lives",[216,375,376],{},"Who owns it",[216,378,379],{},"Current provider policy",[223,381,382,399],{},[213,383,384,387,393,396],{},[228,385,386],{},"Internal default key",[228,388,389,390],{},"Runtime configuration loaded into ",[173,391,392],{},"AppSettings:Llm:Models:*:ApiKey",[228,394,395],{},"Zeeq",[228,397,398],{},"Fireworks only",[213,400,401,404,410,413],{},[228,402,403],{},"Managed key",[228,405,406,407],{},"Organization-scoped encrypted row in ",[173,408,409],{},"core_encrypted_values",[228,411,412],{},"Tenant organization",[228,414,415],{},"Required for OpenAI and Anthropic",[164,417,418,421],{},[173,419,420],{},"KeyId = null"," means \"use the internal default key\" only when the selected provider is Fireworks. OpenAI and Anthropic require a tenant-managed encrypted key before settings can be saved or tested.",[164,423,424,425,428],{},"Fireworks is an OpenAI-compatible chat API, so it routes through the same OpenAI SDK path as OpenAI, with the Fireworks endpoint supplied explicitly. Anthropic is not yet wired for chat client creation and is rejected as ",[173,426,427],{},"unsupported_provider"," if it reaches the runtime without a managed key path.",[164,430,431,432,435],{},"When no tenant-managed keys exist, the API key dropdown shows ",[173,433,434],{},"(Add managed key)",". That option opens the managed-key slideover and is not a persisted configuration value.",[189,437,439],{"id":438},"managed-keys","Managed Keys",[164,441,442],{},"The managed-key slideover supports:",[207,444,445,455],{},[210,446,447],{},[213,448,449,452],{},[216,450,451],{},"Action",[216,453,454],{},"Behavior",[223,456,457,465,473,481],{},[213,458,459,462],{},[228,460,461],{},"Add key",[228,463,464],{},"Sends plaintext once, encrypts it server-side, and returns metadata only.",[213,466,467,470],{},[228,468,469],{},"Rename key",[228,471,472],{},"Updates display metadata without touching encrypted bytes.",[213,474,475,478],{},[228,476,477],{},"Rotate key",[228,479,480],{},"Replaces the encrypted value for the same key ID, so tiers already using the key keep their reference.",[213,482,483,486],{},[228,484,485],{},"Delete key",[228,487,488],{},"Soft-disables an unreferenced key. Referenced keys must be removed from all tiers first.",[164,490,491],{},"Plaintext keys are write-only. The UI does not display plaintext after submit, does not store plaintext in local storage, and receives only key metadata from the API.",[189,493,495],{"id":494},"testing-provider-access","Testing Provider Access",[164,497,498,499,502],{},"Each tier has a ",[173,500,501],{},"Test"," action that checks the selected provider, model, and key source with a fixed server-side prompt. Users cannot supply arbitrary prompts from the UI.",[164,504,505],{},"The test endpoint returns sanitized status, latency, provider, model, and error metadata. It does not return generated text, raw provider responses, or any key material.",[189,507,509],{"id":508},"local-development","Local Development",[164,511,512,513,515],{},"Local development can work with only the Fast default API key configured in user secrets. That key is now a ",[168,514,274],{}," API key:",[517,518,523],"pre",{"className":519,"code":520,"language":521,"meta":522,"style":522},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dotnet user-secrets set \"AppSettings:Llm:Models:Fast:ApiKey\" \"\u003Cfireworks-key>\"\n","bash","",[173,524,525],{"__ignoreMap":522},[526,527,530,534,538,541,545,548,551,553,556],"span",{"class":528,"line":529},"line",1,[526,531,533],{"class":532},"sBMFI","dotnet",[526,535,537],{"class":536},"sfazB"," user-secrets",[526,539,540],{"class":536}," set",[526,542,544],{"class":543},"sMK4o"," \"",[526,546,547],{"class":536},"AppSettings:Llm:Models:Fast:ApiKey",[526,549,550],{"class":543},"\"",[526,552,544],{"class":543},[526,554,555],{"class":536},"\u003Cfireworks-key>",[526,557,558],{"class":543},"\"\n",[164,560,561],{},"High and Max default keys fall back to Fast when their configured key values are blank, so a single Fireworks key covers all three tiers by default.",[164,563,564,565,176,567,180,569,571,572,575,576,578,579,581],{},"The default ",[173,566,175],{},[173,568,179],{},[173,570,183],{}," models in ",[173,573,574],{},"appsettings.Development.json"," are ",[173,577,279],{}," with the endpoint ",[173,580,353],{},".",[164,583,584],{},"The development-only Fast smoke-test endpoint can be exercised with:",[517,586,588],{"className":519,"code":587,"language":521,"meta":522,"style":522},"curl -X POST \"http:\u002F\u002Fzeeq-server.localhost:8095\u002Fapi\u002Fv1\u002Fdiagnostics\u002Fllm\u002Ffast-smoke-test\"\n",[173,589,590],{"__ignoreMap":522},[526,591,592,595,598,601,603,606],{"class":528,"line":529},[526,593,594],{"class":532},"curl",[526,596,597],{"class":536}," -X",[526,599,600],{"class":536}," POST",[526,602,544],{"class":543},[526,604,605],{"class":536},"http:\u002F\u002Fzeeq-server.localhost:8095\u002Fapi\u002Fv1\u002Fdiagnostics\u002Fllm\u002Ffast-smoke-test",[526,607,558],{"class":543},[164,609,610],{},"That endpoint is anonymous only in Development and is not mapped in production.",[612,613,614],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":522,"searchDepth":616,"depth":616,"links":617},2,[618,619,623,624,625,626],{"id":191,"depth":616,"text":192},{"id":201,"depth":616,"text":202,"children":620},[621],{"id":339,"depth":622,"text":340},3,{"id":357,"depth":616,"text":358},{"id":438,"depth":616,"text":439},{"id":494,"depth":616,"text":495},{"id":508,"depth":616,"text":509},"How organization owners configure shared LLM tiers and tenant-managed API keys.","md",null,{},{"icon":39},{"title":36,"description":627},"bJFgahpzAT4E5c2-K7BqPfWvI2IJvLtjXJxq6HyKhBo",[635,637],{"title":31,"path":32,"stem":33,"description":636,"icon":34,"children":-1},"Export local library documents and import signed Zeeq export packages.",{"title":41,"path":42,"stem":43,"description":638,"icon":44,"children":-1},"How Zeeq loads and displays detailed automated code review findings.",1784297365799]