goose/documentation/docusaurus.config.ts
Adewale Abati 3f5277538d
Some checks failed
Canary / Prepare Version (push) Has been cancelled
Unused Dependencies / machete (push) Has been cancelled
CI / changes (push) Has been cancelled
CI / Build Rust Project on Windows (push) Has been cancelled
Deploy Documentation / deploy (push) Has been cancelled
Live Provider Tests / check-fork (push) Has been cancelled
Publish Ask AI Bot Docker Image / docker (push) Has been cancelled
Publish Docker Image / docker (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
Canary / build-cli (push) Has been cancelled
Canary / Upload Install Script (push) Has been cancelled
Canary / bundle-desktop (push) Has been cancelled
Canary / bundle-desktop-intel (push) Has been cancelled
Canary / bundle-desktop-linux (push) Has been cancelled
Canary / bundle-desktop-windows (push) Has been cancelled
Live Provider Tests / changes (push) Has been cancelled
Canary / Release (push) Has been cancelled
CI / Check Rust Code Format (push) Has been cancelled
CI / Build and Test Rust Project (push) Has been cancelled
CI / Lint Rust Code (push) Has been cancelled
CI / Check Generated Schemas are Up-to-Date (push) Has been cancelled
CI / Test and Lint Electron Desktop App (push) Has been cancelled
Live Provider Tests / Build Binary (push) Has been cancelled
Live Provider Tests / Smoke Tests (push) Has been cancelled
Live Provider Tests / Smoke Tests (Code Execution) (push) Has been cancelled
Live Provider Tests / Compaction Tests (push) Has been cancelled
Live Provider Tests / goose server HTTP integration tests (push) Has been cancelled
docs: blog layout update (#8472)
Signed-off-by: Angie Jones <jones.angie@gmail.com>
Co-authored-by: Angie Jones <jones.angie@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 23:26:49 +00:00

536 lines
15 KiB
TypeScript

import { themes as prismThemes } from "prism-react-renderer";
import type { Config } from "@docusaurus/types";
import type * as Preset from "@docusaurus/preset-classic";
import tailwindPlugin from "./plugins/tailwind-config.cjs";
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
require("dotenv").config();
const inkeepApiKey = process.env.INKEEP_API_KEY;
const inkeepIntegrationId = process.env.INKEEP_INTEGRATION_ID;
const inkeepOrgId = process.env.INKEEP_ORG_ID;
const config: Config = {
title: "goose | Your open source AI agent",
tagline: "your local AI agent, automating engineering tasks seamlessly",
favicon: "img/favicon.ico",
// Set the production url of your site here
url: "https://goose-docs.ai/",
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: process.env.TARGET_PATH || "/",
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: "aaif-goose", // Usually your GitHub org/user name.
projectName: "goose", // Usually your repo name.
onBrokenLinks: "throw",
markdown: {
hooks: {
onBrokenMarkdownLinks: "warn",
},
},
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
locales: ["en"],
},
headTags: [
{
tagName: "link",
attributes: {
rel: "alternate",
type: "text/plain",
title: "LLM context",
href: "/llms.txt",
},
},
],
presets: [
[
"classic",
{
docs: {
sidebarPath: "./sidebars.ts",
},
blog: {
showReadingTime: true,
readingTime: ({ content, frontMatter, defaultReadingTime }) =>
frontMatter.reading_time ?? defaultReadingTime({ content }),
feedOptions: {
type: ["rss", "atom"],
xslt: true,
},
// Useful options to enforce blogging best practices
onInlineTags: "warn",
onInlineAuthors: "warn",
onUntruncatedBlogPosts: "warn",
blogSidebarCount: "ALL",
postsPerPage: 22,
},
theme: {
customCss: [
"./src/css/custom.css",
"./src/css/extensions.css",
"./src/css/tailwind.css",
],
},
gtag:
process.env.NODE_ENV === "production"
? {
trackingID: "G-ZS5D6SB4ZJ",
anonymizeIP: true,
}
: false,
} satisfies Preset.Options,
],
],
plugins: [
require.resolve("./plugins/custom-webpack.cjs"),
[
"@docusaurus/plugin-client-redirects",
{
redirects: [
{
from: "/docs/getting-started/using-goose-free",
to: "/docs/getting-started/providers#using-goose-for-free",
},
{
from: "/v1/docs/getting-started/providers",
to: "/docs/getting-started/providers",
},
{
from: "/v1/docs/getting-started/installation",
to: "/docs/getting-started/installation",
},
{
from: "/v1/docs/quickstart",
to: "/docs/quickstart",
},
{
from: "/v1/",
to: "/",
},
{
from: "/docs/guides/custom-extensions",
to: "/docs/tutorials/custom-extensions",
},
{
from: "/docs",
to: "/docs/category/getting-started",
},
{
from: "/v1/extensions",
to: "/extensions",
},
{
from: "/v1/extensions/detail/nondeveloper",
to: "/docs/mcp/computer-controller-mcp",
},
{
from: "/docs/guides/managing-goose-sessions",
to: "/docs/guides/sessions/session-management",
},
{
from: "/docs/guides/smart-context-management",
to: "/docs/guides/sessions/smart-context-management",
},
{
from: "/docs/guides/share-goose-sessions",
to: "/docs/guides/recipes/session-recipes",
},
{
from: "/docs/guides/session-recipes",
to: "/docs/guides/recipes/session-recipes",
},
{
from: "/docs/guides/recipe-reference",
to: "/docs/guides/recipes/recipe-reference",
},
{
from: "/docs/guides/recipes/sub-recipes",
to: "/docs/guides/recipes/subrecipes",
},
{
from: "/docs/tutorials/sub-recipes-in-parallel",
to: "/docs/tutorials/subrecipes-in-parallel",
},
{
from: "/docs/guides/tool-permissions",
to: "/docs/guides/managing-tools/tool-permissions",
},
{
from: "/docs/guides/adjust-tool-output",
to: "/docs/guides/managing-tools/adjust-tool-output",
},
{
from: "/docs/guides/benchmarking",
to: "/docs/tutorials/benchmarking",
},
{
from: "/docs/guides/goose-in-docker",
to: "/docs/tutorials/goose-in-docker",
},
{
from: "/docs/guides/multi-model/creating-plans",
to: "/docs/guides/creating-plans",
},
{
from: "/docs/guides/config-file",
to: "/docs/guides/config-files",
},
{
from: "/docs/guides/using-goosehints",
to: "/docs/guides/context-engineering/using-goosehints",
},
// MCP tutorial redirects - moved from /docs/tutorials/ to /docs/mcp/
{
from: "/docs/tutorials/agentql-mcp",
to: "/docs/mcp/agentql-mcp",
},
{
from: "/docs/tutorials/asana-mcp",
to: "/docs/mcp/asana-mcp",
},
{
from: "/docs/tutorials/blender-mcp",
to: "/docs/mcp/blender-mcp",
},
{
from: "/docs/tutorials/brave-mcp",
to: "/docs/mcp/brave-mcp",
},
{
from: "/docs/tutorials/browserbase-mcp",
to: "/docs/mcp/browserbase-mcp",
},
{
from: "/docs/tutorials/computer-controller-mcp",
to: "/docs/mcp/computer-controller-mcp",
},
{
from: "/docs/tutorials/context7-mcp",
to: "/docs/mcp/context7-mcp",
},
{
from: "/docs/tutorials/developer-mcp",
to: "/docs/mcp/developer-mcp",
},
{
from: "/docs/tutorials/elevenlabs-mcp",
to: "/docs/mcp/elevenlabs-mcp",
},
{
from: "/docs/tutorials/fetch-mcp",
to: "/docs/mcp/fetch-mcp",
},
{
from: "/docs/tutorials/figma-mcp",
to: "/docs/mcp/figma-mcp",
},
{
from: "/docs/tutorials/filesystem-mcp",
to: "/docs/mcp/filesystem-mcp",
},
{
from: "/docs/tutorials/github-mcp",
to: "/docs/mcp/github-mcp",
},
{
from: "/docs/tutorials/google-drive-mcp",
to: "/docs/mcp/google-drive-mcp",
},
{
from: "/docs/tutorials/google-maps-mcp",
to: "/docs/mcp/google-maps-mcp",
},
{
from: "/docs/tutorials/jetbrains-mcp",
to: "/docs/mcp/jetbrains-mcp",
},
{
from: "/docs/tutorials/knowledge-graph-mcp",
to: "/docs/mcp/knowledge-graph-mcp",
},
{
from: "/docs/tutorials/mbot-mcp",
to: "/docs/mcp/mbot-mcp",
},
{
from: "/docs/tutorials/memory-mcp",
to: "/docs/mcp/memory-mcp",
},
{
from: "/docs/tutorials/nostrbook-mcp",
to: "/docs/mcp/nostrbook-mcp",
},
{
from: "/docs/tutorials/pdf-mcp",
to: "/docs/mcp/pdf-mcp",
},
{
from: "/docs/tutorials/pieces-mcp",
to: "/docs/mcp/pieces-mcp",
},
{
from: "/docs/tutorials/playwright-mcp",
to: "/docs/mcp/playwright-mcp",
},
{
from: "/docs/tutorials/postgres-mcp",
to: "/docs/mcp/postgres-mcp",
},
{
from: "/docs/tutorials/puppeteer-mcp",
to: "/docs/mcp/puppeteer-mcp",
},
{
from: "/docs/tutorials/reddit-mcp",
to: "/docs/mcp/reddit-mcp",
},
{
from: "/docs/tutorials/repomix-mcp",
to: "/docs/mcp/repomix-mcp",
},
{
from: "/docs/tutorials/selenium-mcp",
to: "/docs/mcp/selenium-mcp",
},
{
from: "/docs/tutorials/speech-mcp",
to: "/docs/mcp/speech-mcp",
},
{
from: "/docs/tutorials/square-mcp",
to: "/docs/mcp/square-mcp",
},
{
from: "/docs/tutorials/tavily-mcp",
to: "/docs/mcp/tavily-mcp",
},
{
from: "/docs/tutorials/tutorial-extension",
to: "/docs/mcp/tutorial-mcp",
},
{
from: "/docs/tutorials/vscode-mcp",
to: "/docs/mcp/vs-code-mcp",
},
{
from: "/docs/tutorials/youtube-transcript",
to: "/docs/mcp/youtube-transcript-mcp",
},
{
from: "/docs/guides/isolated-development-environments",
to: "/docs/tutorials/isolated-development-environments",
},
{
from: "/docs/experimental/subagents",
to: "/docs/guides/subagents",
},
{
from: "/docs/tutorials/lead-worker",
to: "/docs/guides/creating-plans",
},
],
},
],
tailwindPlugin,
[
require.resolve("./plugins/markdown-export.cjs"),
{
enabled: true,
},
],
],
themes: ["@inkeep/docusaurus/chatButton", "@inkeep/docusaurus/searchBar"],
themeConfig: {
// Replace with your project's social card
image: "img/home-banner.png",
colorMode: {
respectPrefersColorScheme: true,
},
navbar: {
title: "",
logo: {
alt: "goose Logo", // TODO: replace logo assets with AAIF branding
src: "img/logo_light.png",
srcDark: "img/logo_dark.png",
},
items: [
{
to: "/docs/quickstart",
label: "Quickstart",
position: "left",
},
{
to: "/docs/category/guides",
position: "left",
label: "Docs",
},
{
to: "/docs/category/tutorials",
position: "left",
label: "Tutorials",
},
{
to: "/docs/category/mcp-servers",
position: "left",
label: "MCPs",
},
{ to: "/blog", label: "Blog", position: "left" },
{
type: "dropdown",
label: "Resources",
position: "left",
items: [
{
to: "/extensions",
label: "Extensions",
},
{
to: "/skills",
label: "Skills Marketplace",
},
{
to: "/recipe-generator",
label: "Recipe Generator",
},
{
to: "/prompt-library",
label: "Prompt Library",
},
{
to: "/recipes",
label: "Recipe Cookbook",
},
{
to: "deeplink-generator",
label: "Deeplink Generator",
},
],
},
{
href: "https://discord.gg/goose-oss",
label: "Discord",
position: "right",
},
{
href: "https://github.com/aaif-goose/goose",
label: "GitHub",
position: "right",
},
],
},
footer: {
links: [
{
title: "Quick Links",
items: [
{
label: "Install goose",
to: "docs/getting-started/installation",
},
{
label: "Extensions",
to: "/extensions",
},
],
},
{
title: "Community",
items: [
{
label: "Spotlight",
to: "community",
},
{
label: "Discord",
href: "https://discord.gg/goose-oss",
},
{
label: "YouTube",
href: "https://www.youtube.com/@goose-oss",
},
{
label: "LinkedIn",
href: "https://www.linkedin.com/company/goose-oss",
},
{
label: "Twitter / X",
href: "https://x.com/goose_oss",
},
{
label: "BlueSky",
href: "https://bsky.app/profile/opensource.block.xyz",
},
{
label: "Nostr",
href: "https://njump.me/opensource@block.xyz",
},
],
},
{
title: "More",
items: [
{
label: "Blog",
to: "/blog",
},
{
label: "GitHub",
href: "https://github.com/aaif-goose/goose",
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} AAIF (Agentic AI Foundation)`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.nightOwl,
},
inkeepConfig: {
baseSettings: {
apiKey: inkeepApiKey,
integrationId: inkeepIntegrationId,
organizationId: inkeepOrgId,
primaryBrandColor: "#1E1E1E",
},
aiChatSettings: {
chatSubjectName: "goose",
botAvatarSrcUrl: "",
getHelpCallToActions: [
{
name: "GitHub",
url: "https://github.com/aaif-goose/goose",
icon: {
builtIn: "FaGithub",
},
},
],
quickQuestions: ["What is goose?"],
},
},
announcementBar: {
id: 'goose-aaif-announcement', // Increment on new announcements to reuse the bar
content:
'✨ goose has moved to the Agentic AI Foundation (AAIF): <a href="/blog/2026/04/07/goose-moves-to-aaif">Learn more</a>! ✨',
backgroundColor: '#20232a',
textColor: '#fff',
isCloseable: true,
},
} satisfies Preset.ThemeConfig,
};
export default config;