Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
eeaa392
docs(self-hosting): rewrite the overview as an explanation page
khushalsonawat Jun 26, 2026
8997304
Merge branch 'dev' into docs/self-hosting
khushalsonawat Jun 29, 2026
f6b6bd2
docs: add self-hosting environment variables reference page
abhijaisrivastava15 Jun 29, 2026
6f37ddc
Self-hosting: rework Requirements page, add Requirements + Installati…
Jun 29, 2026
d3431e6
Self-hosting: add Installation page + sidebar entries
Jun 29, 2026
2402c83
docs: align frontmatter with review standards
abhijaisrivastava15 Jul 1, 2026
76f4b8e
docs(self-hosting): address Khushal review on Requirements (#696)
Jul 2, 2026
c19c52d
docs(self-hosting): address Khushal review on Installation (#697)
Jul 2, 2026
e26cb58
docs: add self-hosting environment variables page
abhijaisrivastava15 Jul 2, 2026
700bc97
docs(self-hosting): rename Installation to Install; fix first-boot an…
khushalsonawat Jul 6, 2026
fe16c59
Merge pull request #697 from future-agi/docs/self-hosting-installation
khushalsonawat Jul 6, 2026
9a218e7
docs(self-hosting): rename Install back to Installation
khushalsonawat Jul 6, 2026
354b76a
docs: restructure self-hosting sidebar; add Production subsection and…
abhijaisrivastava15 Jul 2, 2026
53eb7ab
docs: rewrite Production pages against the real compose/deploy config
abhijaisrivastava15 Jul 3, 2026
07b23e7
docs: production overview themed card groups (no orphan) + fix monito…
abhijaisrivastava15 Jul 3, 2026
60d518c
docs(self-hosting): address round-2 review on Production pages (#705)
khushalsonawat Jul 6, 2026
de5624f
Merge pull request #705 from future-agi/docs/self-hosting-restructure
khushalsonawat Jul 6, 2026
83ae3ab
docs: add self-hosting system configuration page
abhijaisrivastava15 Jun 29, 2026
90fc401
docs: align frontmatter with review standards
abhijaisrivastava15 Jul 1, 2026
d775e2d
docs: address Khushal's review on system configuration
abhijaisrivastava15 Jul 2, 2026
19305bb
docs(self-hosting): point sidebar at nested System configuration; fix…
khushalsonawat Jul 6, 2026
439d83e
Merge branch 'docs/self-hosting' into docs/self-hosting-environment
khushalsonawat Jul 6, 2026
129d27c
Merge pull request #695 from future-agi/docs/self-hosting-system
khushalsonawat Jul 6, 2026
e7b9b84
docs: add self-hosting environment variables page
abhijaisrivastava15 Jul 2, 2026
7f042d5
docs(self-hosting): point sidebar at nested Environment variables; re…
khushalsonawat Jul 6, 2026
1c12330
Absorb remote branch history; keep the rebuilt env-page tree
khushalsonawat Jul 6, 2026
e5100c7
Merge docs/self-hosting (post #695) into docs/self-hosting-environment
khushalsonawat Jul 6, 2026
997a420
Merge pull request #704 from future-agi/docs/self-hosting-environment
khushalsonawat Jul 6, 2026
54249f7
Merge branch 'docs/self-hosting' into docs/self-hosting-requirements
khushalsonawat Jul 6, 2026
cc45752
docs(self-hosting): address review on Requirements; repoint ports anc…
khushalsonawat Jul 6, 2026
e4ba52f
Merge pull request #696 from future-agi/docs/self-hosting-requirements
khushalsonawat Jul 6, 2026
7315d20
docs: restore observe pages and components reverted by branch history…
khushalsonawat Jul 6, 2026
f7f15d8
docs(self-hosting): order System configuration before Environment var…
khushalsonawat Jul 6, 2026
c35cafb
Merge pull request #700 from future-agi/docs/self-hosting
khushalsonawat Jul 6, 2026
a3007c0
Merge dev (self-hosting section) into docs/observe-concepts
khushalsonawat Jul 6, 2026
6e2977b
docs(cookbook): re-scope observability cookbook to observing an agent…
khushalsonawat Jul 6, 2026
0c4600d
Observability docs complete
khushalsonawat Jul 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-landing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-table.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file added public/images/docs/observe/display-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-add-button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-create-task.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-schedule.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/session-detail.png
Binary file added public/images/docs/observe/sessions-list.png
Binary file added public/images/docs/observe/users-list.png
Binary file added public/images/docs/observe/views-create.png
Binary file added public/images/docs/observe/views-save-modal.png
Binary file added public/images/docs/observe/views-saved-tab.png
53 changes: 45 additions & 8 deletions src/components/Sidebar.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { tabNavigation, getActiveTab, getActiveGroup, type NavItem, type NavGrou
const currentPath = Astro.url.pathname;
const activeTab = getActiveTab(currentPath);
const isDocsTab = activeTab?.tab === 'Docs';
const isSdkTab = activeTab?.tab === 'SDK';

// For Docs tab: groups are sections you switch between
// For other tabs: groups are also switchable sections
Expand All @@ -21,14 +22,23 @@ let activeGroup: NavGroup | undefined;
if (isDocsTab) {
activeGroup = getActiveGroup(currentPath);
} else {
// For non-Docs tabs, find the group containing current page
activeGroup = allGroups.find(g =>
g.items.some(item => {
const norm = currentPath.replace(/\/$/, '') || '/';
const href = (item.href || '').replace(/\/$/, '') || '/';
return href === norm || (href !== '/' && norm.startsWith(href + '/'));
})
) || allGroups[0];
// For non-Docs tabs, pick the group whose deepest matching item href is the
// longest (most specific), so a broad landing group (e.g. SDK Overview at
// /docs/sdk) never shadows a product group like Evaluation (/docs/sdk/evals).
const norm = currentPath.replace(/\/$/, '') || '/';
let bestLen = -1;
const consider = (g: NavGroup, list: NavItem[]) => {
for (const it of list) {
if (it.href) {
const href = it.href.replace(/\/$/, '') || '/';
const matches = href === norm || (href !== '/' && href !== '/docs' && norm.startsWith(href + '/'));
if (matches && href.length > bestLen) { bestLen = href.length; activeGroup = g; }
}
if (it.items) consider(g, it.items);
}
};
allGroups.forEach(g => consider(g, g.items));
if (!activeGroup) activeGroup = allGroups[0];
}

const items = activeGroup?.items || [];
Expand Down Expand Up @@ -127,6 +137,22 @@ const referenceItems: DropdownItem[] = [
{ title: 'API Reference', icon: 'webhook', href: '/docs/api' },
];

// SDK tab: the same phase-grouped product dropdown as Docs, with the SDK's products.
const sdkPhasedOrder: { phase: string; titles: string[] }[] = [
{ phase: 'Start', titles: ['SDK Overview'] },
{ phase: 'Observe & diagnose', titles: ['traceAI'] },
{ phase: 'Evaluate & measure', titles: ['Evaluation', 'Simulation', 'Datasets'] },
{ phase: 'Improve', titles: ['Prompt Optimization', 'Annotation Queues'] },
{ phase: 'Build & connect', titles: ['Knowledge Base'] },
{ phase: 'Protect', titles: ['Protect'] },
];
const sdkReferenceItems: DropdownItem[] = [
{ title: 'Product Docs', icon: 'book', href: '/docs' },
{ title: 'Integrations', icon: 'plug', href: '/docs/integrations' },
{ title: 'Guides', icon: 'compass', href: '/docs/cookbook' },
{ title: 'API Reference', icon: 'webhook', href: '/docs/api' },
];

let dropdownSections: DropdownSection[];
if (isDocsTab) {
dropdownSections = phasedOrder
Expand All @@ -140,6 +166,17 @@ if (isDocsTab) {
if (leftovers.length) dropdownSections.push({ phase: 'More', items: leftovers });

dropdownSections.push({ phase: 'Reference', items: referenceItems });
} else if (isSdkTab) {
dropdownSections = sdkPhasedOrder
.map(p => ({ phase: p.phase, items: p.titles.filter(t => groupLookup.has(t)).map(toItem) }))
.filter(s => s.items.length > 0);

// Future-proofing: any SDK group not placed above still shows under "More".
const placed = new Set<string>(sdkPhasedOrder.flatMap(p => p.titles));
const leftovers = allGroups.map(g => g.group).filter(t => !placed.has(t)).map(toItem);
if (leftovers.length) dropdownSections.push({ phase: 'More', items: leftovers });

dropdownSections.push({ phase: 'Reference', items: sdkReferenceItems });
} else {
// Other multi-group tabs: one unlabelled section (empty phase hides the header).
dropdownSections = [{ phase: '', items: allGroups.map(g => toItem(g.group)) }];
Expand Down
192 changes: 149 additions & 43 deletions src/lib/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,28 @@ export const tabNavigation: NavTab[] = [
title: 'Self-Hosting',
items: [
{ title: 'Overview', href: '/docs/self-hosting' },
{ title: 'System requirements', href: '/docs/self-hosting/requirements' },
{ title: 'Environment variables', href: '/docs/self-hosting/environment' },
{ title: 'Configuration', href: '/docs/self-hosting/configuration' },
{ title: 'Docker Compose', href: '/docs/self-hosting/docker-compose' },
{ title: 'Production', href: '/docs/self-hosting/production' },
{ title: 'User management', href: '/docs/self-hosting/user-management' },
{ title: 'Troubleshooting and FAQs', href: '/docs/self-hosting/troubleshooting' },
{ title: 'Requirements', href: '/docs/self-hosting/requirements' },
{ title: 'Installation', href: '/docs/self-hosting/installation' },
{
title: 'Configuration',
items: [
{ title: 'System configuration', href: '/docs/self-hosting/configuration/system' },
{ title: 'Environment variables', href: '/docs/self-hosting/configuration/environment' },
]
},
{
title: 'Production',
items: [
{ title: 'Overview', href: '/docs/self-hosting/production' },
{ title: 'Checklist', href: '/docs/self-hosting/production/checklist' },
{ title: 'Security & TLS', href: '/docs/self-hosting/production/security-tls' },
{ title: 'Backups & restore', href: '/docs/self-hosting/production/backups-restore' },
{ title: 'Monitoring', href: '/docs/self-hosting/production/monitoring' },
{ title: 'Upgrades & rollback', href: '/docs/self-hosting/production/upgrades-rollback' },
]
},
{ title: 'Troubleshooting & FAQs', href: '/docs/self-hosting/troubleshooting' },
{ title: 'Support', href: '/docs/self-hosting/support' },
]
},
{
Expand Down Expand Up @@ -380,7 +395,6 @@ export const tabNavigation: NavTab[] = [
},
{ title: 'Setup alerts', href: '/docs/observe/guides/setup-alerts' },
{ title: 'Setup evals', href: '/docs/observe/guides/setup-evals' },
{ title: 'Explore sessions & users', href: '/docs/observe/features/session' },
]
},
{
Expand Down Expand Up @@ -824,7 +838,7 @@ export const tabNavigation: NavTab[] = [
title: 'Observability',
icon: 'eye',
items: [
{ title: 'Improving a LangGraph agent via observability', href: '/docs/cookbook/improve-langgraph-agent-with-observability' },
{ title: 'Observing a LangGraph agent and obtaining insights', href: '/docs/cookbook/observe-langgraph-agent-and-obtain-insights' },
{ title: 'Text-to-SQL Evaluation', href: '/docs/cookbook/text-to-sql' },
]
},
Expand Down Expand Up @@ -875,51 +889,143 @@ export const tabNavigation: NavTab[] = [
href: '/docs/sdk',
groups: [
{
group: 'SDK Reference',
group: 'SDK Overview',
icon: 'code',
items: [
{ title: 'SDK Overview', href: '/docs/sdk' },
{
title: 'AI Evaluation',
title: 'List of SDKs',
items: [
{ title: 'Overview', href: '/docs/sdk/evals' },
{ title: 'Running Evaluations', href: '/docs/sdk/evals/evaluate' },
{ title: 'Distributed Evaluator', href: '/docs/sdk/evals/distributed' },
{ title: 'AutoEval', href: '/docs/sdk/evals/autoeval' },
{ title: 'Guardrails', href: '/docs/sdk/evals/guardrails-module' },
{ title: 'Local & Hybrid', href: '/docs/sdk/evals/local' },
{ title: 'OpenTelemetry', href: '/docs/sdk/evals/otel' },
{ title: 'Code Security', href: '/docs/sdk/evals/code-security' },
{
title: 'Metrics Reference',
items: [
{ title: 'Overview', href: '/docs/sdk/evals/metrics' },
{ title: 'String & Similarity', href: '/docs/sdk/evals/metrics/string' },
{ title: 'JSON & Structured', href: '/docs/sdk/evals/metrics/json' },
{ title: 'Hallucination', href: '/docs/sdk/evals/metrics/hallucination' },
{ title: 'RAG', href: '/docs/sdk/evals/metrics/rag' },
{ title: 'Agents & Functions', href: '/docs/sdk/evals/metrics/agents' },
{ title: 'Guardrails', href: '/docs/sdk/evals/metrics/guardrails' },
]
},
{ title: 'Cloud Evals', href: '/docs/sdk/evals/cloud-evals' },
{ title: 'LLM-as-Judge', href: '/docs/sdk/evals/llm-judge' },
{ title: 'Streaming', href: '/docs/sdk/evals/streaming' },
{ title: 'Feedback Loops', href: '/docs/sdk/evals/feedback' },
{ title: 'Evaluation', href: '/docs/sdk/list/evaluation' },
{ title: 'TraceAI', href: '/docs/sdk/list/traceai' },
{ title: 'Core SDKs', href: '/docs/sdk/list/core' },
]
},
]
},
{
group: 'Evaluation',
icon: 'chart',
items: [
{ title: 'Overview', href: '/docs/sdk/evals' },
{ title: 'Running Evaluations', href: '/docs/sdk/evals/evaluate' },
{ title: 'AutoEval', href: '/docs/sdk/evals/autoeval' },
{ title: 'LLM-as-Judge', href: '/docs/sdk/evals/llm-judge' },
{ title: 'Guardrails', href: '/docs/sdk/evals/guardrails-module' },
{ title: 'Local & Hybrid', href: '/docs/sdk/evals/local' },
{ title: 'Distributed Evaluator', href: '/docs/sdk/evals/distributed' },
{ title: 'Streaming', href: '/docs/sdk/evals/streaming' },
{ title: 'Cloud Evals', href: '/docs/sdk/evals/cloud-evals' },
{ title: 'Feedback Loops', href: '/docs/sdk/evals/feedback' },
{ title: 'Code Security', href: '/docs/sdk/evals/code-security' },
{ title: 'OpenTelemetry', href: '/docs/sdk/evals/otel' },
{
title: 'Metrics Reference',
items: [
{ title: 'Overview', href: '/docs/sdk/evals/metrics' },
{ title: 'String & Similarity', href: '/docs/sdk/evals/metrics/string' },
{ title: 'JSON & Structured', href: '/docs/sdk/evals/metrics/json' },
{ title: 'Hallucination', href: '/docs/sdk/evals/metrics/hallucination' },
{ title: 'RAG', href: '/docs/sdk/evals/metrics/rag' },
{ title: 'Agents & Functions', href: '/docs/sdk/evals/metrics/agents' },
{ title: 'Guardrails', href: '/docs/sdk/evals/metrics/guardrails' },
]
},
]
},
{
group: 'traceAI',
icon: 'eye',
items: [
{ title: 'Overview', href: '/docs/sdk/tracing' },
{
title: 'How-to guides',
items: [
{ title: 'Set up tracing', href: '/docs/sdk/tracing/set-up-tracing' },
{ title: 'Instrument with helpers', href: '/docs/sdk/tracing/instrument-with-traceai-helpers' },
{ title: 'Set session & user IDs', href: '/docs/sdk/tracing/set-session-user-id' },
{ title: 'Attributes, metadata & tags', href: '/docs/sdk/tracing/add-attributes-metadata-tags' },
{ title: 'Log prompt templates', href: '/docs/sdk/tracing/log-prompt-templates' },
{ title: 'Events, exceptions & status', href: '/docs/sdk/tracing/add-events-exceptions-status' },
{ title: 'Mask attributes', href: '/docs/sdk/tracing/mask-span-attributes' },
{ title: 'Create tool spans', href: '/docs/sdk/tracing/create-tool-spans' },
{ title: 'Get span context', href: '/docs/sdk/tracing/get-current-span-context' },
{ title: 'In-line evals', href: '/docs/sdk/tracing/in-line-evals' },
{ title: 'Annotate via API', href: '/docs/sdk/tracing/annotating-using-api' },
{ title: 'Advanced examples', href: '/docs/sdk/tracing/advanced-tracing-examples' },
{ title: 'Langfuse integration', href: '/docs/sdk/tracing/langfuse-integration' },
]
},
{
title: 'Reference',
items: [
{ title: 'register()', href: '/docs/sdk/tracing/register' },
{ title: 'FITracer & custom spans', href: '/docs/sdk/tracing/fitracer' },
{ title: 'Context helpers', href: '/docs/sdk/tracing/context-helpers' },
{ title: 'TraceConfig', href: '/docs/sdk/tracing/trace-config' },
{ title: 'EvalTags', href: '/docs/sdk/tracing/eval-tags' },
{ title: 'Instrumentors', href: '/docs/sdk/tracing/instrumentors' },
{ title: 'Environment variables', href: '/docs/sdk/tracing/environment-variables' },
{ title: 'Semantic conventions', href: '/docs/sdk/tracing/semantic-conventions' },
]
},
]
},
{
group: 'Simulation',
icon: 'play',
items: [
{ title: 'Overview', href: '/docs/sdk/simulate' },
]
},
{
group: 'Datasets',
icon: 'table',
items: [
{ title: 'Overview', href: '/docs/sdk/datasets' },
]
},
{
group: 'Prompt Optimization',
icon: 'gauge',
items: [
{ title: 'Overview', href: '/docs/sdk/optimization' },
]
},
{
group: 'Annotation Queues',
icon: 'pen',
items: [
{ title: 'Overview', href: '/docs/sdk/annotation-queues' },
{
title: 'Core SDK',
title: 'Concepts',
items: [
{ title: 'Datasets', href: '/docs/sdk/datasets' },
{ title: 'Tracing', href: '/docs/sdk/tracing' },
{ title: 'Protect', href: '/docs/sdk/protect' },
{ title: 'Knowledge Base', href: '/docs/sdk/knowledgebase' },
{ title: 'Annotation Queues', href: '/docs/sdk/annotation-queues' },
{ title: 'Prompt Optimization', href: '/docs/sdk/optimization' },
{ title: 'Simulation Testing', href: '/docs/sdk/simulate' },
{ title: 'Labels', href: '/docs/sdk/annotation-queues/labels' },
{ title: 'Queue management', href: '/docs/sdk/annotation-queues/queues' },
{ title: 'Queue lifecycle', href: '/docs/sdk/annotation-queues/lifecycle' },
{ title: 'Queue items', href: '/docs/sdk/annotation-queues/items' },
{ title: 'Annotations', href: '/docs/sdk/annotation-queues/annotations' },
{ title: 'Scores', href: '/docs/sdk/annotation-queues/scores' },
{ title: 'Progress & analytics', href: '/docs/sdk/annotation-queues/analytics' },
{ title: 'Export', href: '/docs/sdk/annotation-queues/export' },
{ title: 'Data models', href: '/docs/sdk/annotation-queues/data-models' },
]
},
]
},
{
group: 'Knowledge Base',
icon: 'brain',
items: [
{ title: 'Overview', href: '/docs/sdk/knowledgebase' },
]
},
{
group: 'Protect',
icon: 'shield',
items: [
{ title: 'Overview', href: '/docs/sdk/protect' },
]
}
]
},
Expand Down
Loading
Loading