diff --git a/.vale/styles/FernStyles/Headings.yml b/.vale/styles/FernStyles/Headings.yml index 752158924c..51f8a387f2 100644 --- a/.vale/styles/FernStyles/Headings.yml +++ b/.vale/styles/FernStyles/Headings.yml @@ -100,6 +100,7 @@ exceptions: - Fern Editor - Writer - Fern Writer + - Ask AI - Ask Fern - Explorer - Autorelease diff --git a/AGENTS.md b/AGENTS.md index bc3644e237..e746334352 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -127,7 +127,7 @@ Then read each candidate to find the natural insertion point. Common targets: - **Behavior pages** — e.g., a feature affects search → cross-link from `customization/search.mdx`. - **Dashboard pages** — e.g., a feature has dashboard settings → cross-link from `dashboard/pages/`. -- **Adjacent feature pages** — e.g., Ask Fern, RBAC, localization, when scope or behavior overlaps. +- **Adjacent feature pages** — e.g., Ask AI, RBAC, localization, when scope or behavior overlaps. - **Overview / landing pages** — sometimes a card on a hub page is warranted; usually only when the feature is a top-level setup step, not a configuration detail. ### Pick the form diff --git a/fern/apis/fai/openapi.json b/fern/apis/fai/openapi.json index 94bdf13023..5b87953e42 100644 --- a/fern/apis/fai/openapi.json +++ b/fern/apis/fai/openapi.json @@ -4863,7 +4863,7 @@ "document": { "type": "string", "title": "Document", - "description": "The content of the code document that will be returned to Ask Fern during retrieval." + "description": "The content of the code document that will be returned to Ask AI during retrieval." }, "chunk": { "anyOf": [ @@ -4887,7 +4887,7 @@ } ], "title": "Title", - "description": "The title of the code document. This will be used with the `url` when Ask Fern cites this code." + "description": "The title of the code document. This will be used with the `url` when Ask AI cites this code." }, "url": { "anyOf": [ @@ -4899,7 +4899,7 @@ } ], "title": "Url", - "description": "The url of the code document. This will be used as the source when Ask Fern cites it." + "description": "The url of the code document. This will be used as the source when Ask AI cites it." }, "version": { "anyOf": [ @@ -4911,7 +4911,7 @@ } ], "title": "Version", - "description": "The version of the code. This will be compared against when running Ask Fern with version filters. If null, the code will be retrievable by all versions." + "description": "The version of the code. This will be compared against when running Ask AI with version filters. If null, the code will be retrievable by all versions." }, "product": { "anyOf": [ @@ -4923,7 +4923,7 @@ } ], "title": "Product", - "description": "The product of the code. This will be used to filter code when running Ask Fern with product filters. If null, the code will be retrievable by all products." + "description": "The product of the code. This will be used to filter code when running Ask AI with product filters. If null, the code will be retrievable by all products." }, "keywords": { "anyOf": [ @@ -4979,7 +4979,7 @@ "document": { "type": "string", "title": "Document", - "description": "The content of the document that will be returned to Ask Fern during document retrieval." + "description": "The content of the document that will be returned to Ask AI during document retrieval." }, "chunk": { "anyOf": [ @@ -5003,7 +5003,7 @@ } ], "title": "Title", - "description": "The title of the document. This will be used with the `url` when Ask Fern cites this document." + "description": "The title of the document. This will be used with the `url` when Ask AI cites this document." }, "url": { "anyOf": [ @@ -5015,7 +5015,7 @@ } ], "title": "Url", - "description": "The url of the document. This will be used as the source of the document when Ask Fern cites it." + "description": "The url of the document. This will be used as the source of the document when Ask AI cites it." }, "version": { "anyOf": [ @@ -5027,7 +5027,7 @@ } ], "title": "Version", - "description": "The version of the document. This will be compared against when running Ask Fern with version filters. If null, the document will be retrievable by all versions." + "description": "The version of the document. This will be compared against when running Ask AI with version filters. If null, the document will be retrievable by all versions." }, "product": { "anyOf": [ @@ -5039,7 +5039,7 @@ } ], "title": "Product", - "description": "The product of the document. This will be used to filter documents when running Ask Fern with product filters. If null, the document will be retrievable by all products." + "description": "The product of the document. This will be used to filter documents when running Ask AI with product filters. If null, the document will be retrievable by all products." }, "keywords": { "anyOf": [ @@ -5175,7 +5175,7 @@ "document": { "type": "string", "title": "Document", - "description": "The content of the guidance document that will be returned to Ask Fern during Ask Fern retrieval." + "description": "The content of the guidance document that will be returned to Ask AI during Ask AI retrieval." } }, "type": "object", @@ -7229,7 +7229,7 @@ } ], "title": "Document", - "description": "The updated content of the document that will be returned to Ask Fern during document retrieval. If not provided, this field will remain unchanged." + "description": "The updated content of the document that will be returned to Ask AI during document retrieval. If not provided, this field will remain unchanged." }, "chunk": { "anyOf": [ @@ -7362,7 +7362,7 @@ } ], "title": "Document", - "description": "The updated content of the guidance document that will be returned to Ask Fern during Ask Fern retrieval. If not provided, this field will remain unchanged." + "description": "The updated content of the guidance document that will be returned to Ask AI during Ask AI retrieval. If not provided, this field will remain unchanged." } }, "type": "object", diff --git a/fern/assets/styles.css b/fern/assets/styles.css index 7f7c9bbbc4..26f5b51e45 100644 --- a/fern/assets/styles.css +++ b/fern/assets/styles.css @@ -1084,6 +1084,25 @@ h1, h2, h3 { display: inline-block; } +.cli-graphic-container { + width: 100%; + display: block; + position: relative; + overflow: hidden; + border-radius: 12px; +} + +.cli-graphic-container.fade-bottom { + mask: linear-gradient(to bottom, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%); + -webkit-mask: linear-gradient(to bottom, rgba(0,0,0,1) 70%, rgba(0,0,0,0) 100%); +} + +.cli-graphic-container img { + width: 100%; + height: auto; + display: block; +} + /*** END -- LANDING PAGE STYLING ***/ /* HACK: add a slash to markdown snippet documentation (otherwise it gets parsed by CLI) */ diff --git a/fern/components/FernFooter.tsx b/fern/components/FernFooter.tsx index 70ab499471..d7ee29d892 100644 --- a/fern/components/FernFooter.tsx +++ b/fern/components/FernFooter.tsx @@ -440,7 +440,7 @@ export default function FernFooter() {
SDKs Docs - Ask Fern + Ask AI CLI Reference
diff --git a/fern/docs.yml b/fern/docs.yml index 1ad76ba12b..dc64a98158 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -749,74 +749,76 @@ redirects: destination: /learn/cli-api-reference/cli-reference/overview # ============================================================================ - # ASK FERN (AI SEARCH) + # ASK AI (AI SEARCH) # ============================================================================ # /learn/ask-fern/api-reference (specifics before catchall — were shadowed) - source: /learn/ask-fern/api-reference/conversations/get-conversation - destination: /learn/docs/ai-features/ask-fern/api-reference/overview + destination: /learn/docs/ai-features/ask-ai/api-reference/overview - source: /learn/ask-fern/api-reference/queries/:slug* - destination: /learn/docs/ai-features/ask-fern/api-reference/overview + destination: /learn/docs/ai-features/ask-ai/api-reference/overview - source: /learn/ask-fern/api-reference/overview - destination: /learn/docs/ai-features/ask-fern/api-reference/overview + destination: /learn/docs/ai-features/ask-ai/api-reference/overview - source: /learn/ask-fern/api-reference/:slug* - destination: /learn/docs/ai-features/ask-fern/api-reference/:slug* + destination: /learn/docs/ai-features/ask-ai/api-reference/:slug* # /learn/ask-fern/features (specifics before catchall — custom-fa-qs was shadowed) - source: /learn/ask-fern/features/custom-fa-qs - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/analytics - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/citations - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/insights - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/evaluation - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/rbac - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/features/slack-app - destination: /learn/docs/ai-features/ask-fern/slack-app + destination: /learn/docs/ai-features/ask-ai/slack-app - source: /learn/ask-fern/features/scribe-slack-app destination: /learn/docs/ai-features/fern-writer # /learn/ask-fern/* other specifics - source: /learn/ask-fern/getting-started/what-is-ask-fern - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/getting-started/how-it-works - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/configuration/setup - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/configuration/guidance - destination: /learn/docs/ai-features/ask-fern/guidance + destination: /learn/docs/ai-features/ask-ai/guidance - source: /learn/ask-fern/configuration/content-sources - destination: /learn/docs/ai-features/ask-fern/content-sources + destination: /learn/docs/ai-features/ask-ai/content-sources - source: /learn/ask-fern/configuration/documents - destination: /learn/docs/ai-features/ask-fern/content-sources + destination: /learn/docs/ai-features/ask-ai/content-sources - source: /learn/ask-fern/configuration/locations-and-datasources - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/configuration/custom-prompts - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/overview - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/citations - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/custom-prompting - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ask-fern/customer-showcase destination: https://buildwithfern.com/customers - source: /learn/ask-fern/:slug* - destination: /learn/docs/ai-features/ask-fern/:slug* + destination: /learn/docs/ai-features/ask-ai/:slug* - # Ask Fern new-location cleanup (/learn/docs/ai-features/ask-fern/*) + # Ask AI new-location cleanup (/learn/docs/ai-features/ask-fern/*) - source: /learn/docs/ai-features/ask-fern/how-it-works - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/docs/ai-features/ask-fern/features - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/docs/ai-features/ask-fern/setup - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/docs/ai-features/ask-fern/discord-bot - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview + - source: /learn/docs/ai-features/ask-fern/:slug* + destination: /learn/docs/ai-features/ask-ai/:slug* # /learn/ai-search/* (legacy) — specifics before catchall - source: /learn/ai-search/getting-started/ai-search-customer-showcase @@ -824,17 +826,17 @@ redirects: - source: /learn/ai-search/customer-showcase destination: https://buildwithfern.com/customers - source: /learn/ai-search/overview - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ai-search/custom-prompting - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ai-search/citations - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ai-search/features/:slug* - destination: /learn/docs/ai-features/ask-fern/overview + destination: /learn/docs/ai-features/ask-ai/overview - source: /learn/ai-search/getting-started/:slug* - destination: /learn/docs/ai-features/ask-fern/:slug* + destination: /learn/docs/ai-features/ask-ai/:slug* - source: /learn/ai-search/:slug* - destination: /learn/docs/ai-features/ask-fern/:slug* + destination: /learn/docs/ai-features/ask-ai/:slug* # ============================================================================ # MISC LEGACY diff --git a/fern/footer-dist/output.js b/fern/footer-dist/output.js index 232c17be27..933d60f0f9 100644 --- a/fern/footer-dist/output.js +++ b/fern/footer-dist/output.js @@ -339,4 +339,4 @@ Error generating stack: `+o.message+` min-width: 200px; } } - `}),d.jsxs("footer",{className:"footer",children:[d.jsxs("div",{className:"footer-top",children:[d.jsxs("a",{className:"footer-logo",href:"https://buildwithfern.com",children:[d.jsx(N2,{className:"footer-logo-img dark:hidden"}),d.jsx(T2,{className:"footer-logo-img hidden dark:block"})]}),d.jsxs("div",{className:"footer-status",children:[d.jsx(k2,{}),d.jsxs("a",{className:"soc2-badge",href:"https://security.buildwithfern.com/",children:[d.jsx(E2,{className:"soc2-badge-img"}),d.jsx("span",{className:"status-text",children:"Soc 2 Type II"})]})]})]}),d.jsxs("div",{className:"footer-links",children:[d.jsx("div",{className:"footer-bottom-text",children:" © 2026 Fern • Birch Solutions, Inc., a Postman company"}),d.jsxs("div",{className:"footer-columns",children:[d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Documentation"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"/learn/sdks/overview/introduction",className:"footer-link",children:"SDKs"}),d.jsx("a",{href:"/learn/docs/getting-started/overview",className:"footer-link",children:"Docs"}),d.jsx("a",{href:"/learn/docs/ai-features/ask-fern/overview",className:"footer-link",children:"Ask Fern"}),d.jsx("a",{href:"/learn/cli-api-reference/cli-reference/overview",className:"footer-link",children:"CLI Reference"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"API Definitions"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"/learn/api-definitions/openapi/overview",className:"footer-link",children:"OpenAPI"}),d.jsx("a",{href:"/learn/api-definitions/asyncapi/overview",className:"footer-link",children:"AsyncAPI"}),d.jsx("a",{href:"/learn/api-definitions/openrpc/overview",className:"footer-link",children:"OpenRPC"}),d.jsx("a",{href:"/learn/api-definitions/grpc/overview",className:"footer-link",children:"gRPC"}),d.jsx("a",{href:"/learn/api-definitions/ferndef/overview",className:"footer-link",children:"Fern Definition"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Resources"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"https://buildwithfern.com/blog",className:"footer-link",children:"Blog"}),d.jsx("a",{href:"/learn/home#get-support",className:"footer-link",children:"Support"}),d.jsx("a",{href:"https://buildwithfern.com/pricing",className:"footer-link",children:"Pricing"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Company"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"https://brandfetch.com/buildwithfern.com",className:"footer-link",children:"Brand Kit"}),d.jsx("a",{href:"https://buildwithfern.com/privacy-policy",className:"footer-link",children:"Privacy Policy"}),d.jsx("a",{href:"https://buildwithfern.com/terms-of-service",className:"footer-link",children:"Terms of Service"})]})]}),d.jsxs("div",{className:"footer-column-socials",children:[d.jsxs("a",{href:"https://github.com/fern-api/fern",className:"footer-link",children:[d.jsx(V2,{className:"footer-social-icon dark:hidden"}),d.jsx(L2,{className:"footer-social-icon hidden dark:block"})]}),d.jsxs("a",{href:"https://x.com/buildwithfern",className:"footer-link",children:[d.jsx(q2,{className:"footer-social-icon dark:hidden"}),d.jsx(W2,{className:"footer-social-icon hidden dark:block"})]}),d.jsxs("a",{href:"https://www.linkedin.com/company/buildwithfern",className:"footer-link",children:[d.jsx(S2,{className:"footer-social-icon dark:hidden"}),d.jsx(U2,{className:"footer-social-icon hidden dark:block"})]})]})]})]})]})]}),Ei="fern-footer",Ri=async()=>{if(!document.getElementById("footer")){const t=document.createElement("div");t.setAttribute("id","fern-footer-wrapper"),t.setAttribute("data-react-component","true");let n=document.getElementById(Ei);n||(n=document.createElement("div"),n.setAttribute("id",Ei),document.body.appendChild(n)),n.insertBefore(t,n.firstChild),nf(t).render(d.jsx(gf.StrictMode,{children:d.jsx(R2,{})})),n&&(n.style.display="block")}};window.addEventListener("load",async()=>{await Ri(),new MutationObserver(async e=>{e.some(n=>n.type==="childList"&&!document.getElementById("fern-footer-wrapper"))&&await Ri()}).observe(document.body,{childList:!0,subtree:!0})}); + `}),d.jsxs("footer",{className:"footer",children:[d.jsxs("div",{className:"footer-top",children:[d.jsxs("a",{className:"footer-logo",href:"https://buildwithfern.com",children:[d.jsx(N2,{className:"footer-logo-img dark:hidden"}),d.jsx(T2,{className:"footer-logo-img hidden dark:block"})]}),d.jsxs("div",{className:"footer-status",children:[d.jsx(k2,{}),d.jsxs("a",{className:"soc2-badge",href:"https://security.buildwithfern.com/",children:[d.jsx(E2,{className:"soc2-badge-img"}),d.jsx("span",{className:"status-text",children:"Soc 2 Type II"})]})]})]}),d.jsxs("div",{className:"footer-links",children:[d.jsx("div",{className:"footer-bottom-text",children:" © 2026 Fern • Birch Solutions, Inc., a Postman company"}),d.jsxs("div",{className:"footer-columns",children:[d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Documentation"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"/learn/sdks/overview/introduction",className:"footer-link",children:"SDKs"}),d.jsx("a",{href:"/learn/docs/getting-started/overview",className:"footer-link",children:"Docs"}),d.jsx("a",{href:"/learn/docs/ai-features/ask-fern/overview",className:"footer-link",children:"Ask AI"}),d.jsx("a",{href:"/learn/cli-api-reference/cli-reference/overview",className:"footer-link",children:"CLI Reference"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"API Definitions"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"/learn/api-definitions/openapi/overview",className:"footer-link",children:"OpenAPI"}),d.jsx("a",{href:"/learn/api-definitions/asyncapi/overview",className:"footer-link",children:"AsyncAPI"}),d.jsx("a",{href:"/learn/api-definitions/openrpc/overview",className:"footer-link",children:"OpenRPC"}),d.jsx("a",{href:"/learn/api-definitions/grpc/overview",className:"footer-link",children:"gRPC"}),d.jsx("a",{href:"/learn/api-definitions/ferndef/overview",className:"footer-link",children:"Fern Definition"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Resources"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"https://buildwithfern.com/blog",className:"footer-link",children:"Blog"}),d.jsx("a",{href:"/learn/home#get-support",className:"footer-link",children:"Support"}),d.jsx("a",{href:"https://buildwithfern.com/pricing",className:"footer-link",children:"Pricing"})]})]}),d.jsxs("div",{className:"footer-column",children:[d.jsx("h4",{className:"footer-column-title",children:"Company"}),d.jsxs("div",{className:"footer-column-links",children:[d.jsx("a",{href:"https://brandfetch.com/buildwithfern.com",className:"footer-link",children:"Brand Kit"}),d.jsx("a",{href:"https://buildwithfern.com/privacy-policy",className:"footer-link",children:"Privacy Policy"}),d.jsx("a",{href:"https://buildwithfern.com/terms-of-service",className:"footer-link",children:"Terms of Service"})]})]}),d.jsxs("div",{className:"footer-column-socials",children:[d.jsxs("a",{href:"https://github.com/fern-api/fern",className:"footer-link",children:[d.jsx(V2,{className:"footer-social-icon dark:hidden"}),d.jsx(L2,{className:"footer-social-icon hidden dark:block"})]}),d.jsxs("a",{href:"https://x.com/buildwithfern",className:"footer-link",children:[d.jsx(q2,{className:"footer-social-icon dark:hidden"}),d.jsx(W2,{className:"footer-social-icon hidden dark:block"})]}),d.jsxs("a",{href:"https://www.linkedin.com/company/buildwithfern",className:"footer-link",children:[d.jsx(S2,{className:"footer-social-icon dark:hidden"}),d.jsx(U2,{className:"footer-social-icon hidden dark:block"})]})]})]})]})]})]}),Ei="fern-footer",Ri=async()=>{if(!document.getElementById("footer")){const t=document.createElement("div");t.setAttribute("id","fern-footer-wrapper"),t.setAttribute("data-react-component","true");let n=document.getElementById(Ei);n||(n=document.createElement("div"),n.setAttribute("id",Ei),document.body.appendChild(n)),n.insertBefore(t,n.firstChild),nf(t).render(d.jsx(gf.StrictMode,{children:d.jsx(R2,{})})),n&&(n.style.display="block")}};window.addEventListener("load",async()=>{await Ri(),new MutationObserver(async e=>{e.some(n=>n.type==="childList"&&!document.getElementById("fern-footer-wrapper"))&&await Ri()}).observe(document.body,{childList:!0,subtree:!0})}); diff --git a/fern/products/cli-api-reference/cli-changelog/2025-10-27.mdx b/fern/products/cli-api-reference/cli-changelog/2025-10-27.mdx index ac50400ed1..7a010c98b8 100644 --- a/fern/products/cli-api-reference/cli-changelog/2025-10-27.mdx +++ b/fern/products/cli-api-reference/cli-changelog/2025-10-27.mdx @@ -3,7 +3,7 @@ ## 0.99.0 -**`(feat):`** Support enablements for custom/prod domains from docs.yml. Separate Slack, Discord, and docs Ask Fern deployments. +**`(feat):`** Support enablements for custom/prod domains from docs.yml. Separate Slack, Discord, and docs Ask AI deployments. ## 0.98.0 diff --git a/fern/products/dashboard/pages/overview.mdx b/fern/products/dashboard/pages/overview.mdx index 8b4ce7108d..d768758210 100644 --- a/fern/products/dashboard/pages/overview.mdx +++ b/fern/products/dashboard/pages/overview.mdx @@ -3,7 +3,6 @@ title: Dashboard overview description: Manage your Fern projects, settings, and team from a central dashboard. --- - The Fern Dashboard provides a central place to manage your projects, team members, and settings. @@ -34,9 +33,9 @@ Visit your team's [Dashboard](https://dashboard.buildwithfern.com/) and complete Connect your GitHub repository to your project. Set up AI-powered chat for your documentation. @@ -45,7 +44,8 @@ Visit your team's [Dashboard](https://dashboard.buildwithfern.com/) and complete icon="regular code-branch" href="/learn/dashboard/configuration/custom-domains#multi-source-settings" > - Configure default path and search scope for domains shared across multiple repositories. + Configure default path and search scope for domains shared across multiple + repositories. @@ -84,13 +84,14 @@ Monitor and analyze how developers interact with your documentation: Arrow right light Arrow right light +

Review AI chat conversation history.

@@ -99,6 +100,7 @@ Monitor and analyze how developers interact with your documentation: Arrow right light Arrow right light +

@@ -127,6 +129,7 @@ Manage your documentation site and team collaboration: Arrow right light Arrow right light +

@@ -142,6 +145,7 @@ Manage your documentation site and team collaboration: Arrow right light Arrow right light +

@@ -172,7 +176,7 @@ Visit your team's [Dashboard](https://dashboard.buildwithfern.com/) and complete - [Set up custom domain](/learn/dashboard/configuration/custom-domains): Configure your custom domain with automatic DNS record provisioning. - [Member permissions](/learn/dashboard/configuration/permissions): Assign Admin, Editor, or Viewer roles to manage Dashboard and CLI access. - [Integrate GitHub](/learn/dashboard/configuration/github-repo): Connect your GitHub repository to your project. -- [Enable Ask Fern](/learn/docs/ai-features/ask-fern/overview): Set up AI-powered chat for your documentation. +- [Enable Ask AI](/learn/docs/ai-features/ask-ai/overview): Set up AI-powered chat for your documentation. - [Multi-source settings](/learn/dashboard/configuration/custom-domains#multi-source-settings): Configure default path and search scope for domains shared across multiple repositories. ## Metrics @@ -183,7 +187,7 @@ Monitor and analyze how developers interact with your documentation: - **Search analytics**: Monitor search queries to understand what developers are looking for in your docs. - **Broken links**: Scan your published docs for broken internal and external links. - [Feedback](/learn/docs/user-feedback): View and respond to on-page feedback. -- [Ask Fern conversations](/learn/ask-fern/getting-started/what-is-ask-fern): Review AI chat conversation history. +- [Ask AI conversations](/learn/docs/ai-features/ask-ai/overview): Review AI chat conversation history. ## Site management @@ -194,5 +198,5 @@ Manage your documentation site and team collaboration: - [PDF export](/learn/dashboard/configuration/pdf-export): Export your complete documentation site as a PDF. - [Password protection](/learn/dashboard/configuration/password-protection): Restrict access to your docs site with a shared password. - [Unpublish a site](/learn/docs/preview-publish/publishing-your-docs#unpublishing-your-docs): Temporarily take a site offline without deleting it. - + diff --git a/fern/products/docs/docs.yml b/fern/products/docs/docs.yml index 6e636477e2..3bee7414e8 100644 --- a/fern/products/docs/docs.yml +++ b/fern/products/docs/docs.yml @@ -204,26 +204,26 @@ navigation: - page: API catalog discovery path: ./pages/ai/api-catalog.mdx slug: api-catalog - - section: Ask Fern - slug: ask-fern + - section: Ask AI + slug: ask-ai contents: - page: Overview - path: ./pages/ask-fern/what-is-ask-fern.mdx + path: ./pages/ask-ai/overview.mdx slug: overview - section: Setup skip-slug: true contents: - page: Slack app - path: ./pages/ask-fern/slack-app.mdx + path: ./pages/ask-ai/slack-app.mdx slug: slack-app - page: Custom guidance - path: ./pages/ask-fern/guidance.mdx + path: ./pages/ask-ai/guidance.mdx slug: guidance - page: Additional content sources - path: ./pages/ask-fern/content-sources.mdx + path: ./pages/ask-ai/content-sources.mdx slug: content-sources - page: Standalone search widget - path: ./pages/ask-fern/search-widget.mdx + path: ./pages/ask-ai/search-widget.mdx slug: search-widget - api: API reference api-name: fai @@ -233,7 +233,7 @@ navigation: - customers layout: - page: Overview - path: ./pages/ask-fern/api-get-started.mdx + path: ./pages/ask-ai/api-get-started.mdx - section: Slack Scribe referenced-packages: - slackScribe diff --git a/fern/products/docs/pages/ai/llms-txt/customize-llms-txt.mdx b/fern/products/docs/pages/ai/llms-txt/customize-llms-txt.mdx index 4650046bdf..9d83ebdba9 100644 --- a/fern/products/docs/pages/ai/llms-txt/customize-llms-txt.mdx +++ b/fern/products/docs/pages/ai/llms-txt/customize-llms-txt.mdx @@ -11,18 +11,20 @@ Within pages, use `` and `` tags to control what content ### Content for AI only -`` content appears only on the LLM-serving endpoints that external agents (like Claude, ChatGPT, or Cursor) fetch directly: `/llms.txt`, `/llms-full.txt`, and each page's [`.md`/`.mdx` source](/learn/docs/ai-features/markdown). It's hidden from every human-facing surface, including the rendered page, [Copy page](/learn/docs/configuration/site-level-settings#page-actions-configuration), the search widget, and [Ask Fern](/learn/docs/ai-features/ask-fern/overview). +`` content appears only on the LLM-serving endpoints that external agents (like Claude, ChatGPT, or Cursor) fetch directly: `/llms.txt`, `/llms-full.txt`, and each page's [`.md`/`.mdx` source](/learn/docs/ai-features/markdown). It's hidden from every human-facing surface, including the rendered page, [Copy page](/learn/docs/configuration/site-level-settings#page-actions-configuration), the search widget, and [Ask AI](/learn/docs/ai-features/ask-ai/overview). Use `` for: + - Technical context that's verbose but helpful for AI, like implementation details or architecture notes - Code-related metadata that would clutter the human UI - Cross-references that help AI understand relationships between pages ### Content for humans only -`` content appears on every human-facing surface, including the rendered page, [Copy page](/learn/docs/configuration/site-level-settings#page-actions-configuration), the search widget, and [Ask Fern](/learn/docs/ai-features/ask-fern/overview) (which indexes and can cite it like any other page content). It's stripped from the LLM-serving endpoints (`/llms.txt`, `/llms-full.txt`, and each page's `.md`/`.mdx` source). +`` content appears on every human-facing surface, including the rendered page, [Copy page](/learn/docs/configuration/site-level-settings#page-actions-configuration), the search widget, and [Ask AI](/learn/docs/ai-features/ask-ai/overview) (which indexes and can cite it like any other page content). It's stripped from the LLM-serving endpoints (`/llms.txt`, `/llms-full.txt`, and each page's `.md`/`.mdx` source). Use `` for: + - Marketing CTAs or promotional content - Navigation hints meant only for human readers - Internal comments that should remain only in source files @@ -56,22 +58,26 @@ Replace `my-org/fern-docs` with your desired owner and repository name. Use `--p
Use the `fern-api/docs-starter` repository as a template for your site: - - 1. Navigate to [fern-api/docs-starter](https://github.com/fern-api/docs-starter) and click on the **Use this template** button (found at the top right of this page). You must be logged into GitHub. - 2. Choose the option to **create a new repository**. Name it `fern-docs`. - 3. Clone your newly created repository and open it in your favorite code editor (e.g., Cursor, VS Code). - + + 1. Navigate to + [fern-api/docs-starter](https://github.com/fern-api/docs-starter) and click on + the **Use this template** button (found at the top right of this page). You + must be logged into GitHub. 2. Choose the option to **create a new + repository**. Name it `fern-docs`. 3. Clone your newly created repository and + open it in your favorite code editor (e.g., Cursor, VS Code). + Use the GitHub CLI to create a new repository from the template and clone it locally: - ```bash - gh repo create my-org/fern-docs --template fern-api/docs-starter --private --clone - cd fern-docs - ``` +```bash +gh repo create my-org/fern-docs --template fern-api/docs-starter --private --clone +cd fern-docs +``` + +Replace `my-org/fern-docs` with your desired owner and repository name. Use `--public` instead of `--private` if you want a public repository. + - Replace `my-org/fern-docs` with your desired owner and repository name. Use `--public` instead of `--private` if you want a public repository. -
@@ -91,8 +97,13 @@ Filter `llms.txt` and `llms-full.txt` output with the `lang` and `excludeSpec` q /llms-full.txt?lang=python&excludeSpec=true ``` - - Filter SDK code examples to a specific language. Common aliases are also accepted: `javascript`, `typescript`, `js`, `ts`, `py`, and `golang`. Case-insensitive. + + Filter SDK code examples to a specific language. Common aliases are also + accepted: `javascript`, `typescript`, `js`, `ts`, `py`, and `golang`. + Case-insensitive. @@ -124,4 +135,4 @@ Paths are relative to the `docs.yml` file. The CLI validates that each file exis You can provide one or both files. Any file you don't specify falls back to the auto-generated version. -To control *which* crawlers reach your site rather than *what* they receive, serve a [custom `robots.txt`](/learn/docs/seo/robots-txt) instead. +To control _which_ crawlers reach your site rather than _what_ they receive, serve a [custom `robots.txt`](/learn/docs/seo/robots-txt) instead. diff --git a/fern/products/docs/pages/ai/mcp-server.mdx b/fern/products/docs/pages/ai/mcp-server.mdx index baa6fa7a25..5e038e8ce0 100644 --- a/fern/products/docs/pages/ai/mcp-server.mdx +++ b/fern/products/docs/pages/ai/mcp-server.mdx @@ -3,9 +3,9 @@ title: MCP server description: Connect AI clients like Claude Code and Cursor to your documentation site's MCP server for instant answers. --- -Fern automatically generates and hosts a production-ready [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for every documentation site with [Ask Fern](/learn/docs/ai-features/ask-fern/overview) enabled. The server connects AI clients like Claude Code, Cursor, and Windsurf to your documentation as an external data source, so developers can get instant answers about your product directly within their development environment. +Fern automatically generates and hosts a production-ready [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for every documentation site with [Ask AI](/learn/docs/ai-features/ask-ai/overview) enabled. The server connects AI clients like Claude Code, Cursor, and Windsurf to your documentation as an external data source, so developers can get instant answers about your product directly within their development environment. -Your MCP server is available at `your-documentation-site.com/_mcp/server`. For example, the MCP server for this site is at [https://buildwithfern.com/learn/_mcp/server](https://buildwithfern.com/learn/_mcp/server). +Your MCP server is available at `your-documentation-site.com/_mcp/server`. For example, the MCP server for this site is at [https://buildwithfern.com/learn/\_mcp/server](https://buildwithfern.com/learn/_mcp/server). ## Connect from your docs site @@ -14,21 +14,19 @@ Your MCP server is available at `your-documentation-site.com/_mcp/server`. For e - **Connect to Claude Code** copies a `claude mcp add` command to the clipboard to register the server. - **Connect to Cursor** opens Cursor with the server URL pre-filled for one-click install. -Both buttons are enabled by default on sites with Ask Fern. For other clients (Claude Desktop, Windsurf, etc.), users can add `your-documentation-site.com/_mcp/server` to their MCP configuration. +Both buttons are enabled by default on sites with Ask AI. For other clients (Claude Desktop, Windsurf, etc.), users can add `your-documentation-site.com/_mcp/server` to their MCP configuration. + src="cursor-mcp.mp4" + autoPlay + loop + playsInline + muted + alt="Add MCP to Cursor via page actions" + > ## Other ways agents can access your docs In addition to MCP, agents can fetch documentation directly over HTTP. Fern serves clean Markdown via [per-page URLs, `llms.txt`, and `llms-full.txt`](/learn/docs/ai-features/markdown) — including on authenticated sites. - diff --git a/fern/products/docs/pages/ai/overview.mdx b/fern/products/docs/pages/ai/overview.mdx index 354f65d44c..85c2ae45f2 100644 --- a/fern/products/docs/pages/ai/overview.mdx +++ b/fern/products/docs/pages/ai/overview.mdx @@ -3,39 +3,58 @@ title: AI features description: Fern AI features help users find answers instantly, automate content updates, and optimize documentation for AI tools with llms.txt support. --- - Your documentation site comes with automatic optimizations for AI tools, plus features you can install to help users find answers and keep your content up to date. AI features are usage-based and consume credits. Every [plan](https://buildwithfern.com/pricing) includes a monthly credit allowance: Hobby plans get 250 credits, Team plans get 1,000 credits, and Enterprise plans get a custom amount. - | Feature | Credits | - | --- | --- | - | Ask Fern | 2 credits per message | - | AI-generated examples | 1 credit | - | Fern Writer session | 50 credits | +| Feature | Credits | +| --------------------- | --------------------- | +| Ask AI | 2 credits per message | +| AI-generated examples | 1 credit | +| Fern Writer session | 50 credits | + ## Find answers -Help users get instant, cited answers from your documentation wherever they're working. Ask Fern is available as an embedded chat widget, an [API](/learn/docs/ai-features/ask-fern/api-reference/overview) for custom integrations, and a [Slack app](/learn/docs/ai-features/ask-fern/slack-app) for your community. For developers in AI clients like Claude Code, Cursor, and Windsurf, Fern also hosts an MCP server so they can query your docs directly from their development environment. +Help users get instant, cited answers from your documentation wherever they're working. Ask AI is available as an embedded chat widget, an [API](/learn/docs/ai-features/ask-ai/api-reference/overview) for custom integrations, and a [Slack app](/learn/docs/ai-features/ask-ai/slack-app) for your community. For developers in AI clients like Claude Code, Cursor, and Windsurf, Fern also hosts an MCP server so they can query your docs directly from their development environment. - - - + + + - ## Create and update content AI helps keep your documentation current. Fern Writer is a Slack-based technical writing agent that creates pull requests with targeted edits when you tag `@Fern Writer` to request updates. For API Reference docs, Fern automatically generates realistic examples from your OpenAPI spec that stay synchronized with spec changes, replacing placeholder values like `"string"` with believable data. - - + + ## Optimize for AI @@ -43,8 +62,24 @@ AI helps keep your documentation current. Fern Writer is a Slack-based technical Your site is automatically optimized for AI tools and search engines. Fern hosts `llms.txt` and `llms-full.txt` files so LLMs can index your documentation efficiently, serves Markdown instead of HTML to AI agents, and exposes a standards-based API catalog for automated discovery. These features reduce token consumption and help agents process your content faster. - - - - + + + + diff --git a/fern/products/docs/pages/ask-ai/api-get-started.mdx b/fern/products/docs/pages/ask-ai/api-get-started.mdx new file mode 100644 index 0000000000..5611c6ee4e --- /dev/null +++ b/fern/products/docs/pages/ask-ai/api-get-started.mdx @@ -0,0 +1,16 @@ +--- +title: "Introduction" +subtitle: "Welcome to the Fern API Reference." +--- + + + +The Fern AI API allows you to manage your Ask AI configuration using Fern's public RESTful API. You can use the API to: + +- Build your own support integrations that leverage Ask AI's AI-powered search +- Add custom context and FAQs to your documentation +- Source usage and analytics data from your Ask AI instances + +## Authentication + +Fern API requests require a bearer token for authentication. Use the CLI command [`fern token`](/learn/cli-api/cli-reference/commands#fern-token) to generate a bearer token. Tokens don't expire. diff --git a/fern/products/docs/pages/ask-fern/assets/allow-slack.png b/fern/products/docs/pages/ask-ai/assets/allow-slack.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/allow-slack.png rename to fern/products/docs/pages/ask-ai/assets/allow-slack.png diff --git a/fern/products/docs/pages/ask-fern/assets/analytics.png b/fern/products/docs/pages/ask-ai/assets/analytics.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/analytics.png rename to fern/products/docs/pages/ask-ai/assets/analytics.png diff --git a/fern/products/docs/pages/ask-fern/assets/ask-fern-citation.png b/fern/products/docs/pages/ask-ai/assets/ask-ai-citation.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/ask-fern-citation.png rename to fern/products/docs/pages/ask-ai/assets/ask-ai-citation.png diff --git a/fern/products/docs/pages/ask-fern/assets/ask-fern-dashboard.png b/fern/products/docs/pages/ask-ai/assets/ask-ai-dashboard.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/ask-fern-dashboard.png rename to fern/products/docs/pages/ask-ai/assets/ask-ai-dashboard.png diff --git a/fern/products/docs/pages/ask-fern/assets/ask-fern-filters.png b/fern/products/docs/pages/ask-ai/assets/ask-ai-filters.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/ask-fern-filters.png rename to fern/products/docs/pages/ask-ai/assets/ask-ai-filters.png diff --git a/fern/products/docs/pages/ask-fern/assets/ask-ai-modal.png b/fern/products/docs/pages/ask-ai/assets/ask-ai-modal.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/ask-ai-modal.png rename to fern/products/docs/pages/ask-ai/assets/ask-ai-modal.png diff --git a/fern/products/docs/pages/ask-fern/assets/ask-fern-sidebar.mp4 b/fern/products/docs/pages/ask-ai/assets/ask-ai-sidebar.mp4 similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/ask-fern-sidebar.mp4 rename to fern/products/docs/pages/ask-ai/assets/ask-ai-sidebar.mp4 diff --git a/fern/products/docs/pages/ask-fern/assets/citations.png b/fern/products/docs/pages/ask-ai/assets/citations.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/citations.png rename to fern/products/docs/pages/ask-ai/assets/citations.png diff --git a/fern/products/docs/pages/ask-fern/assets/cohere.svg b/fern/products/docs/pages/ask-ai/assets/cohere.svg similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/cohere.svg rename to fern/products/docs/pages/ask-ai/assets/cohere.svg diff --git a/fern/products/docs/pages/ask-fern/assets/elevenlabs.svg b/fern/products/docs/pages/ask-ai/assets/elevenlabs.svg similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/elevenlabs.svg rename to fern/products/docs/pages/ask-ai/assets/elevenlabs.svg diff --git a/fern/products/docs/pages/ask-fern/assets/enable-ask-fern-dashboard.png b/fern/products/docs/pages/ask-ai/assets/enable-ask-ai-dashboard.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/enable-ask-fern-dashboard.png rename to fern/products/docs/pages/ask-ai/assets/enable-ask-ai-dashboard.png diff --git a/fern/products/docs/pages/ask-fern/assets/openrouter.png b/fern/products/docs/pages/ask-ai/assets/openrouter.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/openrouter.png rename to fern/products/docs/pages/ask-ai/assets/openrouter.png diff --git a/fern/products/docs/pages/ask-fern/assets/request-slack.png b/fern/products/docs/pages/ask-ai/assets/request-slack.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/request-slack.png rename to fern/products/docs/pages/ask-ai/assets/request-slack.png diff --git a/fern/products/docs/pages/ask-fern/assets/respond-all-slack.png b/fern/products/docs/pages/ask-ai/assets/respond-all-slack.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/respond-all-slack.png rename to fern/products/docs/pages/ask-ai/assets/respond-all-slack.png diff --git a/fern/products/docs/pages/ask-fern/assets/search-modal.png b/fern/products/docs/pages/ask-ai/assets/search-modal.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/search-modal.png rename to fern/products/docs/pages/ask-ai/assets/search-modal.png diff --git a/fern/products/docs/pages/ask-fern/assets/search-widget.mp4 b/fern/products/docs/pages/ask-ai/assets/search-widget.mp4 similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/search-widget.mp4 rename to fern/products/docs/pages/ask-ai/assets/search-widget.mp4 diff --git a/fern/products/docs/pages/ask-fern/assets/update-name-slack.png b/fern/products/docs/pages/ask-ai/assets/update-name-slack.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/update-name-slack.png rename to fern/products/docs/pages/ask-ai/assets/update-name-slack.png diff --git a/fern/products/docs/pages/ask-fern/assets/vapi.png b/fern/products/docs/pages/ask-ai/assets/vapi.png similarity index 100% rename from fern/products/docs/pages/ask-fern/assets/vapi.png rename to fern/products/docs/pages/ask-ai/assets/vapi.png diff --git a/fern/products/docs/pages/ask-ai/content-sources.mdx b/fern/products/docs/pages/ask-ai/content-sources.mdx new file mode 100644 index 0000000000..853653679c --- /dev/null +++ b/fern/products/docs/pages/ask-ai/content-sources.mdx @@ -0,0 +1,59 @@ +--- +title: Additional content sources +description: Extend Ask AI's knowledge with content from FAQs, support tickets, blogs, and other sources. +--- + +Extend Ask AI's knowledge beyond your core documentation by adding additional content sources like internal FAQs, support tickets, blog posts, and knowledge base articles. When Ask AI references content from custom sources, it includes the associated URL as a citation. + +## Publicly available content + +For content that's publicly accessible on the web — like marketing sites, blog posts, or external knowledge bases — Ask AI can automatically crawl and index it. There are two ways to set this up: + +### `docs.yml` configuration + +The simplest approach is to add URLs directly in your `docs.yml` configuration under `ai-search.datasources`: + +```yaml docs.yml +ai-search: + datasources: + - url: https://example.com/additional-docs + title: Additional documentation + - url: https://blog.example.com + title: Company blog +``` + +Each datasource requires a `url` and accepts an optional `title` that helps users understand where cited content comes from. + +### Websites API + +For more control over what gets crawled, use the [Websites API](/learn/docs/ai-features/ask-ai/api-reference/website/index-website). This lets you apply filters to target specific subdomains or URL paths: + +| Filter | Description | Example | +| --------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `domain_filter` | Restrict crawling to a specific subdomain | `help.example.com` will only crawl pages on that subdomain, not `www.example.com` or `docs.example.com` | +| `path_filter` | Restrict crawling to a specific section of the site | `/getting-started` will only crawl URLs containing `/getting-started` in the path, like `docs.example.com/getting-started`, but not `docs.example.com/api-reference` | + +Here's an example using `path_filter`: + +```json Example wordWrap +{ + "base_url": "https://docs.example.com", + "path_filter": "/getting-started" +} +``` + +The API returns a `job_id` to track the crawling progress. When referenced, Ask AI cites the original URL where the content was found. + +## Not publicly available content + +For content that isn't publicly accessible, like internal documentation, support ticket summaries, or proprietary knowledge base articles, use the [Documents API](/learn/docs/ai-features/ask-ai/api-reference/document/create-document) to upload markdown content directly. This gives you precise control over what gets indexed. + +```json Example wordWrap +{ + "document": "Ferns are plants native to the tropical and subtropical regions of the world. They are characterized by their fronds, which are large, leaf-like structures that are often found in the understory of forests.", + "title": "What are ferns?", + "url": "https://en.wikipedia.org/wiki/Fern" +} +``` + +The URL is used solely for citations — Ask AI doesn't crawl it. You provide the full content in the `document` field. diff --git a/fern/products/docs/pages/ask-fern/guidance.mdx b/fern/products/docs/pages/ask-ai/guidance.mdx similarity index 58% rename from fern/products/docs/pages/ask-fern/guidance.mdx rename to fern/products/docs/pages/ask-ai/guidance.mdx index dfa98ac635..37d2792de5 100644 --- a/fern/products/docs/pages/ask-fern/guidance.mdx +++ b/fern/products/docs/pages/ask-ai/guidance.mdx @@ -1,10 +1,9 @@ --- title: Guidance -description: Configure custom guidance to override Ask Fern AI responses for specific queries. Control sensitive content like billing and legal terms. +description: Configure custom guidance to override Ask AI responses for specific queries. Control sensitive content like billing and legal terms. --- - -You can add custom guidance to "override" Ask Fern's responses to specific user queries. This is useful for content that you +You can add custom guidance to "override" Ask AI's responses to specific user queries. This is useful for content that you may not want to display explicitly in your documentation, such as billing information, legal terms, and other sensitive content. Guidance documents consist of a list of `context` texts and a `document` text. The `context` texts will be indexed @@ -13,10 +12,10 @@ to match against user queries. The `document` text will used as a prescribed res ## API Fern offers an internal CMS (content management system) via the `guidance` API that allows you to add, -update, and delete guidance as needed. You will need to provide your `domain` to specify which deployment of Ask Fern +update, and delete guidance as needed. You will need to provide your `domain` to specify which deployment of Ask AI the updates will be applied to. -See the [API Reference](/learn/docs/ai-features/ask-fern/api-reference/guidance/create-guidance) for more details. +See the [API Reference](/learn/docs/ai-features/ask-ai/api-reference/guidance/create-guidance) for more details. ## Usage @@ -24,11 +23,11 @@ Below is an example of a guidance document that can be uploaded via the `guidanc ```json { - "context": [ - "What billing options are available for enterprise customers with 10-50 seats?", - "How do I upgrade the number of seats for my enterprise plan?" - ], - "document": "Please reach out to support@yourcompany.com for more information." + "context": [ + "What billing options are available for enterprise customers with 10-50 seats?", + "How do I upgrade the number of seats for my enterprise plan?" + ], + "document": "Please reach out to support@yourcompany.com for more information." } ``` @@ -45,4 +44,4 @@ Please reach out to support@yourcompany.com for more information. ``` -Ask Fern prioritizes guidance response over other document responses, allowing you to override the default RAG responses. +Ask AI prioritizes guidance response over other document responses, allowing you to override the default RAG responses. diff --git a/fern/products/docs/pages/ask-ai/overview.mdx b/fern/products/docs/pages/ask-ai/overview.mdx new file mode 100644 index 0000000000..b22988b8c2 --- /dev/null +++ b/fern/products/docs/pages/ask-ai/overview.mdx @@ -0,0 +1,143 @@ +--- +title: Overview +description: Ask AI is an AI search feature that indexes your documentation and helps users find answers instantly. Reduce support burden and accelerate onboarding. +--- + +Ask AI is Fern's AI search feature. It indexes your documentation so your end users can ask questions and get answers, with citations that link directly to the source pages. Responses are generated with Retrieval Augmented Generation (RAG), powered by [Claude 4.6 Sonnet](https://www.anthropic.com/news/claude-sonnet-4-6) and [Claude 4.5 Haiku](https://www.anthropic.com/news/claude-haiku-4-5). + + + + + +## Get started + + + + Open the [Fern Dashboard](https://dashboard.buildwithfern.com/). Navigate to the **Settings** tab and click **Enable** on the Ask AI card. + + + Enabling Ask AI triggers an automatic reindex of your content. This typically takes a few minutes, though sites with extensive custom components may take longer. Once this process is finished, the Ask AI side panel will appear on your site. + + + + For [multi-source sites](/learn/docs/preview-publish/multi-source-docs), the Dashboard also controls whether Ask AI answers from a single sub-path's content (hierarchical) or from all sub-paths on the domain (unified). + + + + + Connect Ask AI to [Slack](/learn/docs/ai-features/ask-ai/slack-app) so your users can ask questions directly from chat. + + + Finetune Ask AI's behavior: + + + + Add additional documents and websites. + + + Override responses to sensitive queries. + + + Embed Ask AI in any React application. + + + + + +## Features + +Ask AI comes with built-in tools to help you understand how users interact with your documentation and ensure answers are accurate and trustworthy. + + + +View conversations per day in the [Fern Dashboard](http://dashboard.buildwithfern.com), drill down into individual conversations, and export to CSV. + +The Dashboard also reports a **resolution rate** over the last week, month, or year — the percentage of conversations where Ask AI returned a cited response. Conversations where the assistant can't find relevant information count as unresolved. + + + +You can open Ask AI ([example](https://buildwithfern.com/learn/home?searchType=ai&query=custom+header)) or the search dialog ([example](https://buildwithfern.com/learn/home?query=custom+header)) directly from a URL using query parameters. This is useful for linking from a help chat widget, support portal, or onboarding flow. + + + +| Parameter | Description | +| ------------ | ------------------------------------------------------------------------------- | +| `query` | The search query or prompt, URL-encoded. | +| `searchType` | Optional. Set to `ai` to open the Ask AI panel, or omit to open regular search. | + + + +Ask AI automatically respects the [role-based access control (RBAC) settings configured in your documentation](/learn/docs/authentication/features/rbac). When users query Ask AI, they only receive answers from documentation they have permission to access based on their assigned roles. + +This works at all levels, from entire sections down to individual pages and conditional content within pages. + + + + + +## Under the hood + +Ask AI uses Retrieval Augmented Generation (RAG) to answer user questions: + +1. **Content and code indexing** — Fern processes your documentation pages and Fern-generated SDK code, breaking them into semantic chunks and converting each into a vector embedding stored in a search index. +2. **Query processing** — When users ask questions, Ask AI vectorizes the query and retrieves the most relevant chunks. If RBAC is configured, results are filtered by user permissions. +3. **Response generation** — Ask AI sends the retrieved chunks as context to Claude 4.6 Sonnet to generate answers with citations. If the initial context isn't sufficient, it performs an additional keyword search. + +```mermaid +sequenceDiagram + autonumber + participant U as User + participant C as /chat Endpoint + participant V as Documentation Database + participant A as Ask AI + + U->>C: Submit question via Ask AI searchbox + C->>C: Convert query to vector + C->>C: Check user roles (if RBAC enabled) + C->>V: Search for relevant chunks + V->>C: Return matching documents user can access + C->>A: Send query + context + A->>V: Perform additional keyword search if needed + V->>A: Return additional chunks user can access + A->>A: Generate response + A->>U: Return answer with citations +``` + + diff --git a/fern/products/docs/pages/ask-fern/search-widget.mdx b/fern/products/docs/pages/ask-ai/search-widget.mdx similarity index 82% rename from fern/products/docs/pages/ask-fern/search-widget.mdx rename to fern/products/docs/pages/ask-ai/search-widget.mdx index 35564eecd7..546b21d5f1 100644 --- a/fern/products/docs/pages/ask-fern/search-widget.mdx +++ b/fern/products/docs/pages/ask-ai/search-widget.mdx @@ -3,14 +3,10 @@ title: Standalone search widget description: Embed Fern's AI-powered search in any React application using the @fern-api/search-widget package. --- -The [`@fern-api/search-widget`](https://www.npmjs.com/package/@fern-api/search-widget) package provides a standalone React component that brings Ask Fern's AI-powered search to any React application outside of your Fern Docs site. Embed a search modal in your dashboard, marketing site, or internal tool so users can find relevant documentation without leaving their workflow. +The [`@fern-api/search-widget`](https://www.npmjs.com/package/@fern-api/search-widget) package provides a standalone React component that brings Ask AI's AI-powered search to any React application outside of your Fern Docs site. Embed a search modal in your dashboard, marketing site, or internal tool so users can find relevant documentation without leaving their workflow. -
diff --git a/fern/products/docs/pages/changelog/2025-05-20.mdx b/fern/products/docs/pages/changelog/2025-05-20.mdx index 3b2673fb16..0cf231a10d 100644 --- a/fern/products/docs/pages/changelog/2025-05-20.mdx +++ b/fern/products/docs/pages/changelog/2025-05-20.mdx @@ -3,4 +3,4 @@ tags: ["local-development", "ai", "bug-fix"] --- - feat: improvements to local preview mode, including support for custom javascript and bug fixes for reloading performance issues. -- minor bugfixes and improvements to Ask Fern +- minor bugfixes and improvements to Ask AI diff --git a/fern/products/docs/pages/changelog/2025-06-05.mdx b/fern/products/docs/pages/changelog/2025-06-05.mdx index 62bd3f74cf..8d7c452c2e 100644 --- a/fern/products/docs/pages/changelog/2025-06-05.mdx +++ b/fern/products/docs/pages/changelog/2025-06-05.mdx @@ -8,12 +8,17 @@ Organize your docs by product so developers can find what they need quickly. Per Features: -- **Optimized for Search** with SEO-friendly structure. -- **Keyword search and Ask Fern** work both within and across products. +- **Optimized for Search** with SEO-friendly structure. +- **Keyword search and Ask AI** work both within and across products. - **Customizable** to your products with versions and unique icons to reflect your brand identity. - -![A dropdown of the available products](product-switcher.png) - +![A dropdown of the available products](product-switcher.png) - + diff --git a/fern/products/docs/pages/changelog/2026-02-06.mdx b/fern/products/docs/pages/changelog/2026-02-06.mdx index 54b3802b36..577a2331db 100644 --- a/fern/products/docs/pages/changelog/2026-02-06.mdx +++ b/fern/products/docs/pages/changelog/2026-02-06.mdx @@ -2,11 +2,18 @@ tags: ["ai", "search", "navigation", "configuration", "docs.yml"] --- -## Deep linking for Ask Fern +## Deep linking for Ask AI -Open Ask Fern or the search dialog directly from a URL using query parameters. Append `?searchType=ai&query={prompt}` to open Ask AI with a prompt, or `?query={search}` for regular search. Parameters are removed from the URL after the search opens. +Open Ask AI or the search dialog directly from a URL using query parameters. Append `?searchType=ai&query={prompt}` to open Ask AI with a prompt, or `?query={search}` for regular search. Parameters are removed from the URL after the search opens. - + ## Global folder title source setting @@ -17,9 +24,16 @@ settings: folder-title-source: frontmatter navigation: - - folder: ./pages/guides # uses frontmatter (from global setting) + - folder: ./pages/guides # uses frontmatter (from global setting) - folder: ./pages/reference - title-source: filename # overrides global setting + title-source: filename # overrides global setting ``` - + diff --git a/fern/products/docs/pages/changelog/2026-03-31.mdx b/fern/products/docs/pages/changelog/2026-03-31.mdx index d9e2f28418..4039460ec4 100644 --- a/fern/products/docs/pages/changelog/2026-03-31.mdx +++ b/fern/products/docs/pages/changelog/2026-03-31.mdx @@ -15,13 +15,27 @@ check: The `--broken-links` and `--strict-broken-links` CLI flags are now deprecated in favor of this configuration. - + ## AI search upgrade -Ask Fern now runs on Claude 4.6 Sonnet for faster, more accurate answers. +Ask AI now runs on Claude 4.6 Sonnet for faster, more accurate answers. - + ## Context7 integration @@ -34,4 +48,11 @@ integrations: Requires Fern CLI version `4.52.0` or later. - + diff --git a/fern/products/docs/pages/changelog/2026-04-09.mdx b/fern/products/docs/pages/changelog/2026-04-09.mdx index 9ee9ed8977..7a0f55bcef 100644 --- a/fern/products/docs/pages/changelog/2026-04-09.mdx +++ b/fern/products/docs/pages/changelog/2026-04-09.mdx @@ -1,5 +1,5 @@ --- -tags: ["ai", "ask-fern", "configuration", "docs.yml"] +tags: ["ai", "ask-ai", "configuration", "docs.yml"] --- ## Default per-page directive for AI agents @@ -12,20 +12,30 @@ For clean Markdown of any page, append .md to the page URL. For a complete docum You can still override the default with a custom directive or disable it entirely. - + ## Standalone search widget -Embed Ask Fern's AI-powered search on any React site using the [`@fern-api/search-widget`](https://www.npmjs.com/package/@fern-api/search-widget) package. The widget renders a button that opens a search modal connected to your documentation content. It requires React 19; all other dependencies are bundled. +Embed Ask AI's AI-powered search on any React site using the [`@fern-api/search-widget`](https://www.npmjs.com/package/@fern-api/search-widget) package. The widget renders a button that opens a search modal connected to your documentation content. It requires React 19; all other dependencies are bundled. -