mirror of
https://github.com/block/goose.git
synced 2026-04-26 10:40:45 +00:00
docs: rework homepage and add aaif migration blog post (#8356)
Some checks failed
Canary / Prepare Version (push) Waiting to run
Canary / build-cli (push) Blocked by required conditions
Canary / Upload Install Script (push) Blocked by required conditions
Canary / bundle-desktop (push) Blocked by required conditions
Canary / bundle-desktop-intel (push) Blocked by required conditions
Canary / bundle-desktop-linux (push) Blocked by required conditions
Canary / bundle-desktop-windows (push) Blocked by required conditions
Canary / Release (push) Blocked by required conditions
Unused Dependencies / machete (push) Waiting to run
CI / changes (push) Waiting to run
CI / Check Rust Code Format (push) Blocked by required conditions
CI / Build and Test Rust Project (push) Blocked by required conditions
CI / Build Rust Project on Windows (push) Waiting to run
CI / Lint Rust Code (push) Blocked by required conditions
CI / Check OpenAPI Schema is Up-to-Date (push) Blocked by required conditions
CI / Test and Lint Electron Desktop App (push) Blocked by required conditions
Live Provider Tests / check-fork (push) Waiting to run
Live Provider Tests / changes (push) Blocked by required conditions
Live Provider Tests / Build Binary (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (Code Execution) (push) Blocked by required conditions
Live Provider Tests / Compaction Tests (push) Blocked by required conditions
Live Provider Tests / goose server HTTP integration tests (push) Blocked by required conditions
Publish Docker Image / docker (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Cargo Deny / deny (push) Has been cancelled
Deploy Documentation / deploy (push) Has been cancelled
Publish Ask AI Bot Docker Image / docker (push) Has been cancelled
Publish to npm / Generate ACP Schema (push) Has been cancelled
Publish to npm / Build goose CLI (darwin-arm64) (push) Has been cancelled
Publish to npm / Build goose CLI (darwin-x64) (push) Has been cancelled
Publish to npm / Build goose CLI (linux-arm64) (push) Has been cancelled
Publish to npm / Build goose CLI (linux-x64) (push) Has been cancelled
Publish to npm / Release to npm (push) Has been cancelled
Some checks failed
Canary / Prepare Version (push) Waiting to run
Canary / build-cli (push) Blocked by required conditions
Canary / Upload Install Script (push) Blocked by required conditions
Canary / bundle-desktop (push) Blocked by required conditions
Canary / bundle-desktop-intel (push) Blocked by required conditions
Canary / bundle-desktop-linux (push) Blocked by required conditions
Canary / bundle-desktop-windows (push) Blocked by required conditions
Canary / Release (push) Blocked by required conditions
Unused Dependencies / machete (push) Waiting to run
CI / changes (push) Waiting to run
CI / Check Rust Code Format (push) Blocked by required conditions
CI / Build and Test Rust Project (push) Blocked by required conditions
CI / Build Rust Project on Windows (push) Waiting to run
CI / Lint Rust Code (push) Blocked by required conditions
CI / Check OpenAPI Schema is Up-to-Date (push) Blocked by required conditions
CI / Test and Lint Electron Desktop App (push) Blocked by required conditions
Live Provider Tests / check-fork (push) Waiting to run
Live Provider Tests / changes (push) Blocked by required conditions
Live Provider Tests / Build Binary (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (Code Execution) (push) Blocked by required conditions
Live Provider Tests / Compaction Tests (push) Blocked by required conditions
Live Provider Tests / goose server HTTP integration tests (push) Blocked by required conditions
Publish Docker Image / docker (push) Waiting to run
Scorecard supply-chain security / Scorecard analysis (push) Waiting to run
Cargo Deny / deny (push) Has been cancelled
Deploy Documentation / deploy (push) Has been cancelled
Publish Ask AI Bot Docker Image / docker (push) Has been cancelled
Publish to npm / Generate ACP Schema (push) Has been cancelled
Publish to npm / Build goose CLI (darwin-arm64) (push) Has been cancelled
Publish to npm / Build goose CLI (darwin-x64) (push) Has been cancelled
Publish to npm / Build goose CLI (linux-arm64) (push) Has been cancelled
Publish to npm / Build goose CLI (linux-x64) (push) Has been cancelled
Publish to npm / Release to npm (push) Has been cancelled
Signed-off-by: Michael Neale <michael.neale@gmail.com>
This commit is contained in:
parent
583acd4335
commit
7449a96664
15 changed files with 822 additions and 115 deletions
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
|
@ -1,4 +1,4 @@
|
|||
# CODEOWNERS file for block/goose repository
|
||||
# CODEOWNERS file for aaif-goose/goose repository
|
||||
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
|
||||
|
||||
# Documentation owned by DevRel
|
||||
|
|
|
|||
32
README.md
32
README.md
|
|
@ -1,8 +1,10 @@
|
|||
> **🦆 goose has moved!** This project has moved from `block/goose` to the [Agentic AI Foundation (AAIF)](https://aaif.io/) at the Linux Foundation. Some links and references are still being updated — please bear with us during the transition.
|
||||
|
||||
<div align="center">
|
||||
|
||||
# goose
|
||||
|
||||
_a local, extensible, open source AI agent that automates engineering tasks_
|
||||
_your native open source AI agent — desktop app, CLI, and API — for code, workflows, and everything in between_
|
||||
|
||||
<p align="center">
|
||||
<a href="https://opensource.org/licenses/Apache-2.0"
|
||||
|
|
@ -14,23 +16,33 @@ _a local, extensible, open source AI agent that automates engineering tasks_
|
|||
</p>
|
||||
</div>
|
||||
|
||||
goose is your on-machine AI agent, capable of automating complex development tasks from start to finish. More than just code suggestions, goose can build entire projects from scratch, write and execute code, debug failures, orchestrate workflows, and interact with external APIs - _autonomously_.
|
||||
goose is a general-purpose AI agent that runs on your machine. Not just for code — use it for research, writing, automation, data analysis, or anything you need to get done.
|
||||
|
||||
Whether you're prototyping an idea, refining existing code, or managing intricate engineering pipelines, goose adapts to your workflow and executes tasks with precision.
|
||||
A native desktop app for macOS, Linux, and Windows. A full CLI for terminal workflows. An API to embed it anywhere. Built in Rust for performance and portability.
|
||||
|
||||
Designed for maximum flexibility, goose works with any LLM and supports multi-model configuration to optimize performance and cost, seamlessly integrates with MCP servers, and is available as both a desktop app as well as CLI - making it the ultimate AI assistant for developers who want to move faster and focus on innovation.
|
||||
goose works with 15+ providers — Anthropic, OpenAI, Google, Ollama, OpenRouter, Azure, Bedrock, and more. Use API keys or your existing Claude, ChatGPT, or Gemini subscriptions via [ACP](https://goose-docs.ai/docs/guides/acp-providers). Connect to 70+ extensions via the [Model Context Protocol](https://modelcontextprotocol.io/) open standard.
|
||||
|
||||
[](https://youtu.be/D-DpDunrbpo)
|
||||
goose is part of the [Agentic AI Foundation (AAIF)](https://aaif.io/) at the Linux Foundation.
|
||||
|
||||
# Quick Links
|
||||
# Get started
|
||||
|
||||
**[Download the desktop app](https://goose-docs.ai/docs/getting-started/installation)** for macOS, Linux, and Windows.
|
||||
|
||||
Or install the CLI:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
|
||||
```
|
||||
|
||||
# Quick links
|
||||
- [Quickstart](https://goose-docs.ai/docs/quickstart)
|
||||
- [Installation](https://goose-docs.ai/docs/getting-started/installation)
|
||||
- [Tutorials](https://goose-docs.ai/docs/category/tutorials)
|
||||
- [Documentation](https://goose-docs.ai/docs/category/getting-started)
|
||||
- [Governance](https://github.com/aaif-goose/goose/blob/main/GOVERNANCE.md)
|
||||
- [Custom Distributions](https://github.com/aaif-goose/goose/blob/main/CUSTOM_DISTROS.md) - build your own goose distro with preconfigured providers, extensions, and branding
|
||||
- [Custom Distributions](https://github.com/aaif-goose/goose/blob/main/CUSTOM_DISTROS.md) — build your own goose distro with preconfigured providers, extensions, and branding
|
||||
|
||||
## Need Help?
|
||||
## Need help?
|
||||
- [Diagnostics & Reporting](https://goose-docs.ai/docs/troubleshooting/diagnostics-and-reporting)
|
||||
- [Known Issues](https://goose-docs.ai/docs/troubleshooting/known-issues)
|
||||
|
||||
|
|
@ -40,10 +52,8 @@ Designed for maximum flexibility, goose works with any LLM and supports multi-mo
|
|||
>
|
||||
> Because it always helps them "migrate" their code to production! 🚀
|
||||
|
||||
# goose around with us
|
||||
# goose around with us
|
||||
- [Discord](https://discord.gg/goose-oss)
|
||||
- [YouTube](https://www.youtube.com/@goose-oss)
|
||||
- [LinkedIn](https://www.linkedin.com/company/goose-oss)
|
||||
- [Twitter/X](https://x.com/goose_oss)
|
||||
- [Bluesky](https://bsky.app/profile/opensource.block.xyz) <!-- TODO: update social handle after transfer -->
|
||||
- [Nostr](https://njump.me/opensource@block.xyz) <!-- TODO: update social handle after transfer -->
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ For cases when it's a large pull request, or I don't understand what is going on
|
|||
E.g
|
||||
|
||||
```
|
||||
Hey Goose, this pull request https://github.com/block/goose/pull/1949, has a lot of changes. Can you summarize into a changelog for me?
|
||||
Hey Goose, this pull request https://github.com/aaif-goose/goose/pull/1949, has a lot of changes. Can you summarize into a changelog for me?
|
||||
```
|
||||
|
||||
## Knowledge Graph Memory: Context on Steroids
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ Wanna see it in action?
|
|||
|
||||
Download [goose](/docs/quickstart#install-goose), give an MCP server a UI facelift of your own, and see the magic for yourself. Boring text prompts will never hit the same again.
|
||||
|
||||
*Got questions?* Explore our [docs](/docs/category/guides), browse the [blog](/blog), or join the conversation in our [Discord](https://discord.gg/goose-oss) and [GitHub Discussions](https://github.com/block/goose/discussions). We’d love to have you.
|
||||
*Got questions?* Explore our [docs](/docs/category/guides), browse the [blog](/blog), or join the conversation in our [Discord](https://discord.gg/goose-oss) and [GitHub Discussions](https://github.com/aaif-goose/goose/discussions). We’d love to have you.
|
||||
|
||||
|
||||
<head>
|
||||
|
|
|
|||
38
documentation/blog/2026-04-07-goose-moves-to-aaif/index.md
Normal file
38
documentation/blog/2026-04-07-goose-moves-to-aaif/index.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
title: "goose repo and site migrating to aaif"
|
||||
description: "goose has moved to the Agentic AI Foundation (aaif) at the Linux Foundation"
|
||||
authors:
|
||||
- mic
|
||||
---
|
||||
|
||||
goose has moved! The project now lives under the [Agentic AI Foundation (AAIF)](https://aaif.io/) at the Linux Foundation.
|
||||
|
||||
There is also a new docs site [https://goose-docs.ai/](https://goose-docs.ai/) with a nice .ai TLD!
|
||||
|
||||
<!-- truncate -->
|
||||
|
||||
## What's changed
|
||||
|
||||
The GitHub repository and related projects have moved from `block/goose` to a new org:
|
||||
|
||||
**[https://github.com/aaif-goose/goose](https://github.com/aaif-goose/goose)**
|
||||
|
||||
This includes related repositories in the [aaif-goose](https://github.com/aaif-goose) organization.
|
||||
|
||||
Everything else — the project, the community, the mission — remains the same. goose is still open source, still actively developed, and still the same agent you know.
|
||||
|
||||
## Migration in progress
|
||||
|
||||
We're still working through some migration issues (broken links, redirects, CI, etc). If you hit anything that seems off, please reach out on [Discord](https://discord.gg/goose-oss) and let us know.
|
||||
|
||||
## Update your remotes
|
||||
|
||||
If you have a local clone, update your git remote:
|
||||
|
||||
```bash
|
||||
git remote set-url origin git@github.com:aaif-goose/goose.git
|
||||
```
|
||||
|
||||
## Learn more
|
||||
|
||||
Visit [aaif.io](https://aaif.io/) to learn more about the foundation and its mission.
|
||||
|
|
@ -44,7 +44,7 @@ import styles from '@site/src/components/Card/styles.module.css';
|
|||
<Card
|
||||
title="GitHub Issues"
|
||||
description="Browse existing issues, contribute to discussions, or create new bug reports and feature requests on our GitHub repository."
|
||||
link="https://github.com/block/goose/issues"
|
||||
link="https://github.com/aaif-goose/goose/issues"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
34
documentation/package-lock.json
generated
34
documentation/package-lock.json
generated
|
|
@ -250,6 +250,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.42.0.tgz",
|
||||
"integrity": "sha512-NZR7yyHj2WzK6D5X8gn+/KOxPdzYEXOqVdSaK/biU8QfYUpUuEA0sCWg/XlO05tPVEcJelF/oLrrNY3UjRbOww==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@algolia/client-common": "5.42.0",
|
||||
"@algolia/requester-browser-xhr": "5.42.0",
|
||||
|
|
@ -387,6 +388,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
|
||||
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.28.5",
|
||||
|
|
@ -2176,6 +2178,7 @@
|
|||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
|
|
@ -2198,6 +2201,7 @@
|
|||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
|
|
@ -2307,6 +2311,7 @@
|
|||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
|
||||
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
|
|
@ -2728,6 +2733,7 @@
|
|||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
|
||||
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
|
|
@ -3688,6 +3694,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz",
|
||||
"integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "3.9.2",
|
||||
"@docusaurus/logger": "3.9.2",
|
||||
|
|
@ -5032,6 +5039,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz",
|
||||
"integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/mdx": "^2.0.0"
|
||||
},
|
||||
|
|
@ -5366,6 +5374,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
|
||||
"integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.21.3",
|
||||
"@svgr/babel-preset": "8.1.0",
|
||||
|
|
@ -5728,6 +5737,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
|
||||
"integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
|
|
@ -6078,6 +6088,7 @@
|
|||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
|
|
@ -6163,6 +6174,7 @@
|
|||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
|
||||
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-uri": "^3.0.1",
|
||||
|
|
@ -6208,6 +6220,7 @@
|
|||
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.42.0.tgz",
|
||||
"integrity": "sha512-X5+PtWc9EJIPafT/cj8ZG+6IU3cjRRnlHGtqMHK/9gsiupQbAyYlH5y7qt/FtsAhfX5AICHffZy69ZAsVrxWkQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@algolia/abtesting": "1.8.0",
|
||||
"@algolia/client-abtesting": "5.42.0",
|
||||
|
|
@ -6706,6 +6719,7 @@
|
|||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"baseline-browser-mapping": "^2.8.19",
|
||||
"caniuse-lite": "^1.0.30001751",
|
||||
|
|
@ -7634,6 +7648,7 @@
|
|||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
|
||||
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
|
|
@ -7946,7 +7961,8 @@
|
|||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/debounce": {
|
||||
"version": "1.2.1",
|
||||
|
|
@ -9031,6 +9047,7 @@
|
|||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
|
||||
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
|
|
@ -13681,6 +13698,7 @@
|
|||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
|
||||
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
|
|
@ -14251,6 +14269,7 @@
|
|||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.11",
|
||||
"picocolors": "^1.1.1",
|
||||
|
|
@ -15263,6 +15282,7 @@
|
|||
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
|
||||
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cssesc": "^3.0.0",
|
||||
"util-deprecate": "^1.0.2"
|
||||
|
|
@ -16080,6 +16100,7 @@
|
|||
"resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz",
|
||||
"integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
|
@ -16089,6 +16110,7 @@
|
|||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz",
|
||||
"integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"scheduler": "^0.27.0"
|
||||
},
|
||||
|
|
@ -16161,6 +16183,7 @@
|
|||
"resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
|
||||
"integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/react": "*"
|
||||
},
|
||||
|
|
@ -16216,6 +16239,7 @@
|
|||
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
|
||||
"integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.12.13",
|
||||
"history": "^4.9.0",
|
||||
|
|
@ -18190,7 +18214,8 @@
|
|||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"license": "0BSD"
|
||||
"license": "0BSD",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/turndown": {
|
||||
"version": "7.2.2",
|
||||
|
|
@ -18262,6 +18287,7 @@
|
|||
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
|
||||
"devOptional": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
|
|
@ -18603,6 +18629,7 @@
|
|||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
|
||||
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
|
|
@ -18810,6 +18837,7 @@
|
|||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz",
|
||||
"integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.7",
|
||||
"@types/estree": "^1.0.8",
|
||||
|
|
@ -19423,6 +19451,7 @@
|
|||
"integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
|
||||
"devOptional": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"yaml": "bin.mjs"
|
||||
},
|
||||
|
|
@ -19462,6 +19491,7 @@
|
|||
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
|
||||
"integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import Link from "@docusaurus/Link";
|
|||
import { IconDownload } from "@site/src/components/icons/download";
|
||||
import { useState, useEffect } from "react";
|
||||
|
||||
const FALLBACK_URL = "https://github.com/block/goose/releases/latest";
|
||||
const FALLBACK_URL = "https://github.com/aaif-goose/goose/releases/latest";
|
||||
|
||||
const LinuxDesktopInstallButtons = () => {
|
||||
const [downloadUrls, setDownloadUrls] = useState({
|
||||
|
|
@ -26,7 +26,7 @@ const LinuxDesktopInstallButtons = () => {
|
|||
}
|
||||
|
||||
// Fetch latest release from GitHub API
|
||||
const response = await fetch('https://api.github.com/repos/block/goose/releases/latest');
|
||||
const response = await fetch('https://api.github.com/repos/aaif-goose/goose/releases/latest');
|
||||
if (!response.ok) throw new Error('API request failed');
|
||||
|
||||
const release = await response.json();
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ const DesktopInstallButtons = () => {
|
|||
<div className="pill-button" style={{ display: 'flex', gap: '0.5rem', flexWrap: 'wrap' }}>
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to="https://github.com/block/goose/releases/download/stable/Goose.zip"
|
||||
to="https://github.com/aaif-goose/goose/releases/download/stable/Goose.zip"
|
||||
>
|
||||
<IconDownload /> macOS Silicon
|
||||
</Link>
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to="https://github.com/block/goose/releases/download/stable/Goose_intel_mac.zip"
|
||||
to="https://github.com/aaif-goose/goose/releases/download/stable/Goose_intel_mac.zip"
|
||||
>
|
||||
<IconDownload /> macOS Intel
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ const SupportedEnvironments = () => {
|
|||
The goose CLI currently works on <strong>macOS</strong> and <strong>Linux</strong> systems and supports both <strong>ARM</strong> and <strong>x86</strong> architectures.
|
||||
On <strong>Windows</strong>, goose CLI can run via WSL, and goose Desktop is natively supported. If you'd like to request support for additional operating systems, please{" "}
|
||||
<a
|
||||
href="https://github.com/block/goose/discussions/867"
|
||||
href="https://github.com/aaif-goose/goose/discussions/867"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ const WindowsDesktopInstallButtons = () => {
|
|||
<div className="pill-button">
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to="https://github.com/block/goose/releases/download/stable/Goose-win32-x64.zip"
|
||||
to="https://github.com/aaif-goose/goose/releases/download/stable/Goose-win32-x64.zip"
|
||||
>
|
||||
<IconDownload /> Windows
|
||||
</Link>
|
||||
|
|
|
|||
|
|
@ -1,98 +1,411 @@
|
|||
/**
|
||||
* CSS files with the .module.css suffix will be treated as CSS modules
|
||||
* and scoped locally.
|
||||
*/
|
||||
* Homepage styles
|
||||
*/
|
||||
|
||||
.header {
|
||||
padding: 4rem 2rem;
|
||||
}
|
||||
|
||||
|
||||
.wrapper {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 3rem;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 400px;
|
||||
}
|
||||
|
||||
.textColumn {
|
||||
flex: 1 1 300px;
|
||||
max-width: 500px;
|
||||
/* Hero */
|
||||
.hero {
|
||||
padding: 5rem 2rem 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.heroInner {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: -40px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
.heroBadge {
|
||||
display: inline-block;
|
||||
padding: 0.35rem 1rem;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
font-size: 0.8rem;
|
||||
color: var(--text-subtle);
|
||||
margin-bottom: 2rem;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
.heroLogo {
|
||||
max-width: 300px;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.heroSubtitle {
|
||||
font-size: 1.35rem;
|
||||
line-height: 1.6;
|
||||
color: var(--text-standard);
|
||||
max-width: 600px;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.heroActions {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
margin-bottom: 3rem;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.secondaryButton {
|
||||
border-color: var(--border-standard);
|
||||
color: var(--text-standard);
|
||||
}
|
||||
|
||||
.heroStats {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.stat {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
.statNumber {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.statLabel {
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-subtle);
|
||||
}
|
||||
|
||||
.statDivider {
|
||||
width: 1px;
|
||||
height: 2.5rem;
|
||||
background: var(--border-subtle);
|
||||
}
|
||||
|
||||
/* Sections */
|
||||
.section {
|
||||
padding: 4rem 2rem;
|
||||
}
|
||||
|
||||
.sectionAlt {
|
||||
background: var(--background-subtle);
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 1100px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.sectionTitle {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.sectionSubtitle {
|
||||
text-align: center;
|
||||
max-width: 700px;
|
||||
margin: 0 auto 2.5rem;
|
||||
color: var(--text-subtle);
|
||||
font-size: 1.05rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Features — top row (3 big cards) */
|
||||
.featuresGridTop {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.featureCard {
|
||||
padding: 1.75rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--background-app);
|
||||
transition: border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.featureCard:hover {
|
||||
border-color: var(--border-standard);
|
||||
}
|
||||
|
||||
.featureIcon {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.featureTitle {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.featureDescription {
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-subtle);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.featureDescription p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.featureDescription a {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Features — bottom row (4 smaller cards) */
|
||||
.featuresGridBottom {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.smallCard {
|
||||
padding: 1.25rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--background-app);
|
||||
transition: border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.smallCard:hover {
|
||||
border-color: var(--border-standard);
|
||||
}
|
||||
|
||||
.smallCardIcon {
|
||||
font-size: 1.25rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.smallCardTitle {
|
||||
font-size: 0.95rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.4rem;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.smallCardDescription {
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-subtle);
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.smallCardDescription p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.smallCardDescription a {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Standards Grid */
|
||||
.standardsGrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 2rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.standardCard {
|
||||
padding: 1.5rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--background-app);
|
||||
}
|
||||
|
||||
.standardCard h3 {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.75rem;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.standardCard p {
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-subtle);
|
||||
line-height: 1.6;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.standardCard a {
|
||||
font-size: 0.9rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Community Grid */
|
||||
.communityGrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.communityCard {
|
||||
padding: 1.5rem;
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--background-app);
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
transition: border-color 0.2s ease, transform 0.2s ease;
|
||||
}
|
||||
|
||||
.communityCard:hover {
|
||||
border-color: var(--border-standard);
|
||||
transform: translateY(-2px);
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.communityCard h3 {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--text-prominent);
|
||||
}
|
||||
|
||||
.communityCard p {
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-subtle);
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* Install */
|
||||
.installBlock {
|
||||
max-width: 700px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.installDesktop {
|
||||
text-align: center;
|
||||
margin-bottom: 1.5rem;
|
||||
max-width: 30ch;
|
||||
}
|
||||
|
||||
.videoColumn {
|
||||
flex: 1 1 400px;
|
||||
.installPlatforms {
|
||||
margin-top: 0.75rem;
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-subtle);
|
||||
}
|
||||
|
||||
.installDivider {
|
||||
text-align: center;
|
||||
margin-bottom: 1.5rem;
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-subtle);
|
||||
}
|
||||
|
||||
.installTerminal {
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--grey-10);
|
||||
}
|
||||
|
||||
.terminalBar {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
padding: 12px 16px;
|
||||
background: var(--grey-20);
|
||||
}
|
||||
|
||||
.terminalDot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
background: var(--grey-50);
|
||||
}
|
||||
|
||||
.terminalBody {
|
||||
padding: 1.25rem 1.5rem;
|
||||
margin: 0;
|
||||
font-size: 0.85rem;
|
||||
line-height: 1.7;
|
||||
color: #e0e0e0;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.installNote {
|
||||
text-align: center;
|
||||
margin-top: 1.25rem;
|
||||
font-size: 0.9rem;
|
||||
color: var(--text-subtle);
|
||||
}
|
||||
|
||||
/* Video */
|
||||
.videoWrapper {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
aspect-ratio: 16 / 9;
|
||||
}
|
||||
|
||||
.video {
|
||||
width: 100%;
|
||||
max-width: 640px;
|
||||
height: 100%;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.aspect-ratio{
|
||||
aspect-ratio: 16 / 9;
|
||||
width: 100%;
|
||||
}
|
||||
/* Responsive */
|
||||
@media (max-width: 996px) {
|
||||
.featuresGridTop {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
|
||||
.featuresGridBottom {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 996px) {
|
||||
.heroBanner {
|
||||
padding: 2rem;
|
||||
.standardsGrid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.communityGrid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.header {
|
||||
padding: 1rem 1rem;
|
||||
@media (max-width: 640px) {
|
||||
.hero {
|
||||
padding: 3rem 1.5rem 2rem;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
gap: 1rem;
|
||||
padding: 1rem 1rem;
|
||||
}
|
||||
|
||||
.textColumn {
|
||||
text-align: center;
|
||||
max-width: 100%;
|
||||
flex: 1 1 400px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
.heroSubtitle {
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.5;
|
||||
margin: 0 auto 1.5rem;
|
||||
}
|
||||
|
||||
.ctaButton {
|
||||
font-size: 1rem;
|
||||
width: auto;
|
||||
.heroStats {
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.videoColumn {
|
||||
flex: 1 1 180px;
|
||||
aspect-ratio: 16 / 9;
|
||||
width: 100%;
|
||||
.statDivider {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.featuresGridTop {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.featuresGridBottom {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.standardsGrid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.communityGrid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.section {
|
||||
padding: 3rem 1.5rem;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,47 +2,363 @@ import type { ReactNode } from "react";
|
|||
import Link from "@docusaurus/Link";
|
||||
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
||||
import Layout from "@theme/Layout";
|
||||
import HomepageFeatures from "@site/src/components/HomepageFeatures";
|
||||
|
||||
import styles from "./index.module.css";
|
||||
import { GooseLogo } from "../components/GooseLogo";
|
||||
|
||||
function HomepageHeader() {
|
||||
const { siteConfig } = useDocusaurusContext();
|
||||
function HeroSection() {
|
||||
return (
|
||||
<header className={styles.header}>
|
||||
<div className={styles.wrapper}>
|
||||
<div className={styles.textColumn}>
|
||||
<div className="hero--logo">
|
||||
<GooseLogo />
|
||||
</div>
|
||||
<p className={styles.subtitle}>{siteConfig.tagline}</p>
|
||||
<Link className="button button--primary button--lg" to="docs/getting-started/installation">
|
||||
install goose
|
||||
<header className={styles.hero}>
|
||||
<div className={styles.heroInner}>
|
||||
<div className={styles.heroBadge}>
|
||||
Open Source · Apache 2.0 · Linux Foundation
|
||||
</div>
|
||||
<div className={styles.heroLogo}>
|
||||
<GooseLogo />
|
||||
</div>
|
||||
<p className={styles.heroSubtitle}>
|
||||
Your native open source AI agent. Desktop app, CLI, and API — for code,
|
||||
workflows, and everything in between.
|
||||
</p>
|
||||
<div className={styles.heroActions}>
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to="docs/getting-started/installation"
|
||||
>
|
||||
Install goose
|
||||
</Link>
|
||||
<Link
|
||||
className={`button button--outline button--lg ${styles.secondaryButton}`}
|
||||
to="docs/quickstart"
|
||||
>
|
||||
Quickstart
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className={styles.videoColumn}>
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/D-DpDunrbpo"
|
||||
className="aspect-ratio"
|
||||
title="vibe coding with goose"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
></iframe>
|
||||
<div className={styles.heroStats}>
|
||||
<div className={styles.stat}>
|
||||
<span className={styles.statNumber}>38k+</span>
|
||||
<span className={styles.statLabel}>GitHub stars</span>
|
||||
</div>
|
||||
<div className={styles.statDivider} />
|
||||
<div className={styles.stat}>
|
||||
<span className={styles.statNumber}>400+</span>
|
||||
<span className={styles.statLabel}>Contributors</span>
|
||||
</div>
|
||||
<div className={styles.statDivider} />
|
||||
<div className={styles.stat}>
|
||||
<span className={styles.statNumber}>70+</span>
|
||||
<span className={styles.statLabel}>MCP extensions</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
type FeatureCardProps = {
|
||||
title: string;
|
||||
description: ReactNode;
|
||||
icon: string;
|
||||
};
|
||||
|
||||
function FeatureCard({ title, description, icon }: FeatureCardProps) {
|
||||
return (
|
||||
<div className={styles.featureCard}>
|
||||
<div className={styles.featureIcon}>{icon}</div>
|
||||
<h3 className={styles.featureTitle}>{title}</h3>
|
||||
<div className={styles.featureDescription}>{description}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
type SmallCardProps = {
|
||||
title: string;
|
||||
description: ReactNode;
|
||||
icon: string;
|
||||
};
|
||||
|
||||
function SmallCard({ title, description, icon }: SmallCardProps) {
|
||||
return (
|
||||
<div className={styles.smallCard}>
|
||||
<div className={styles.smallCardIcon}>{icon}</div>
|
||||
<h3 className={styles.smallCardTitle}>{title}</h3>
|
||||
<div className={styles.smallCardDescription}>{description}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function FeaturesSection() {
|
||||
return (
|
||||
<section className={styles.section}>
|
||||
<div className={styles.container}>
|
||||
<h2 className={styles.sectionTitle}>What goose does</h2>
|
||||
<p className={styles.sectionSubtitle}>
|
||||
goose is a general-purpose AI agent that runs on your machine. Not
|
||||
just for code — use it for research, writing, automation, data
|
||||
analysis, or anything you need to get done.
|
||||
</p>
|
||||
<div className={styles.featuresGridTop}>
|
||||
<FeatureCard
|
||||
icon="🖥️"
|
||||
title="Desktop app, CLI, and API"
|
||||
description={
|
||||
<p>
|
||||
A native desktop app for macOS, Linux, and Windows. A full CLI
|
||||
for terminal workflows. An API to embed it anywhere. Built
|
||||
in Rust for performance and portability.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
<FeatureCard
|
||||
icon="🔌"
|
||||
title="Extensible"
|
||||
description={
|
||||
<p>
|
||||
Connect to 70+ extensions — databases, APIs, browsers, GitHub,
|
||||
Google Drive, and more — via the{" "}
|
||||
<a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener">
|
||||
Model Context Protocol
|
||||
</a>{" "}
|
||||
open standard. Add community{" "}
|
||||
<Link to="/skills">skills</Link>, or{" "}
|
||||
<Link to="/docs/tutorials/custom-extensions">build your own</Link>.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
<FeatureCard
|
||||
icon="🤖"
|
||||
title="Any LLM, including your subscriptions"
|
||||
description={
|
||||
<p>
|
||||
Works with 15+ providers — Anthropic, OpenAI, Google, Ollama,
|
||||
OpenRouter, Azure, Bedrock, and more. Use API keys or your
|
||||
existing Claude, ChatGPT, or Gemini subscriptions via{" "}
|
||||
<Link to="/docs/guides/acp-providers">ACP</Link>.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<div className={styles.featuresGridBottom}>
|
||||
<SmallCard
|
||||
icon="📋"
|
||||
title="Recipes"
|
||||
description={
|
||||
<p>
|
||||
Capture workflows as portable YAML configs. Share with your
|
||||
team, run in CI, include instructions, extensions, parameters,
|
||||
and{" "}
|
||||
<Link to="/docs/guides/recipes/session-recipes">subrecipes</Link>.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
<SmallCard
|
||||
icon="🧩"
|
||||
title="MCP Apps"
|
||||
description={
|
||||
<p>
|
||||
Extensions can render interactive UIs directly inside goose
|
||||
Desktop — buttons, forms, visualizations. A new way to build{" "}
|
||||
<Link to="/docs/tutorials/building-mcp-apps">
|
||||
agent-powered tools
|
||||
</Link>.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
<SmallCard
|
||||
icon="🔀"
|
||||
title="Subagents"
|
||||
description={
|
||||
<p>
|
||||
Spawn independent{" "}
|
||||
<Link to="/docs/guides/subagents">subagents</Link> to handle
|
||||
tasks in parallel — code review, research, file processing —
|
||||
keeping the main conversation clean.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
<SmallCard
|
||||
icon="🔒"
|
||||
title="Security"
|
||||
description={
|
||||
<p>
|
||||
Prompt injection detection, tool permission controls, sandbox
|
||||
mode, and an{" "}
|
||||
<Link to="/docs/guides/security/adversary-mode">
|
||||
adversary reviewer
|
||||
</Link>{" "}
|
||||
that watches for unsafe actions.
|
||||
</p>
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function StandardsSection() {
|
||||
return (
|
||||
<section className={`${styles.section} ${styles.sectionAlt}`}>
|
||||
<div className={styles.container}>
|
||||
<h2 className={styles.sectionTitle}>Built on open standards</h2>
|
||||
<div className={styles.standardsGrid}>
|
||||
<div className={styles.standardCard}>
|
||||
<h3>Model Context Protocol</h3>
|
||||
<p>
|
||||
<a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener">MCP</a>{" "}
|
||||
is the open standard for connecting AI agents to tools and data
|
||||
sources. goose was one of the earliest adopters and has one of the
|
||||
deepest integrations in the ecosystem — with 70+ documented
|
||||
extensions and growing.
|
||||
</p>
|
||||
<Link to="/docs/category/mcp-servers">Browse MCP extensions →</Link>
|
||||
</div>
|
||||
<div className={styles.standardCard}>
|
||||
<h3>Agent Client Protocol</h3>
|
||||
<p>
|
||||
<a href="https://agentclientprotocol.com/" target="_blank" rel="noopener">ACP</a>{" "}
|
||||
is a standard for communicating with coding agents. goose works as
|
||||
an ACP server — connect from Zed, JetBrains, or VS Code — and can
|
||||
use ACP agents like Claude Code and Codex as providers.
|
||||
</p>
|
||||
<Link to="/docs/guides/acp-clients">goose as ACP server →</Link>
|
||||
</div>
|
||||
<div className={styles.standardCard}>
|
||||
<h3>Agentic AI Foundation</h3>
|
||||
<p>
|
||||
goose is part of the{" "}
|
||||
<a href="https://aaif.io/" target="_blank" rel="noopener">
|
||||
Agentic AI Foundation
|
||||
</a>{" "}
|
||||
at the Linux Foundation — ensuring the project remains
|
||||
vendor-neutral, community-governed, and open for the long term.
|
||||
</p>
|
||||
<a href="https://aaif.io/" target="_blank" rel="noopener">
|
||||
Learn about AAIF →
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function CommunitySection() {
|
||||
return (
|
||||
<section className={styles.section}>
|
||||
<div className={styles.container}>
|
||||
<h2 className={styles.sectionTitle}>Community</h2>
|
||||
<p className={styles.sectionSubtitle}>
|
||||
An active community of developers, contributors, and users building
|
||||
extensions, sharing recipes, and pushing the boundaries of what local
|
||||
AI agents can do.
|
||||
</p>
|
||||
<div className={styles.communityGrid}>
|
||||
<a
|
||||
href="https://discord.gg/goose-oss"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
className={styles.communityCard}
|
||||
>
|
||||
<h3>💬 Discord</h3>
|
||||
<p>
|
||||
Ask questions, share what you've built, get help from the
|
||||
community.
|
||||
</p>
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/aaif-goose/goose"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
className={styles.communityCard}
|
||||
>
|
||||
<h3>🐙 GitHub</h3>
|
||||
<p>
|
||||
Star, fork, file issues, contribute code. goose is built in the
|
||||
open.
|
||||
</p>
|
||||
</a>
|
||||
<Link to="/extensions" className={styles.communityCard}>
|
||||
<h3>🧩 Extensions</h3>
|
||||
<p>Browse community-built MCP extensions and add your own.</p>
|
||||
</Link>
|
||||
<Link to="/blog" className={styles.communityCard}>
|
||||
<h3>📝 Blog</h3>
|
||||
<p>Tutorials, deep dives, release notes, and community spotlights.</p>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function InstallSection() {
|
||||
return (
|
||||
<section className={`${styles.section} ${styles.sectionAlt}`}>
|
||||
<div className={styles.container}>
|
||||
<h2 className={styles.sectionTitle}>Get started</h2>
|
||||
<div className={styles.installBlock}>
|
||||
<div className={styles.installDesktop}>
|
||||
<Link
|
||||
className="button button--primary button--lg"
|
||||
to="docs/getting-started/installation"
|
||||
>
|
||||
Download the desktop app
|
||||
</Link>
|
||||
<p className={styles.installPlatforms}>
|
||||
Available for macOS, Linux, and Windows
|
||||
</p>
|
||||
</div>
|
||||
<div className={styles.installDivider}>
|
||||
<span>or install the CLI</span>
|
||||
</div>
|
||||
<div className={styles.installTerminal}>
|
||||
<div className={styles.terminalBar}>
|
||||
<span className={styles.terminalDot} />
|
||||
<span className={styles.terminalDot} />
|
||||
<span className={styles.terminalDot} />
|
||||
</div>
|
||||
<pre className={styles.terminalBody}>
|
||||
<code>
|
||||
{`curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash`}
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function VideoSection() {
|
||||
return (
|
||||
<section className={styles.section}>
|
||||
<div className={styles.container}>
|
||||
<h2 className={styles.sectionTitle}>See goose in action</h2>
|
||||
<div className={styles.videoWrapper}>
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/D-DpDunrbpo"
|
||||
className={styles.video}
|
||||
title="vibe coding with goose"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
export default function Home(): ReactNode {
|
||||
return (
|
||||
<Layout description="your open source AI agent, automating engineering tasks seamlessly">
|
||||
<HomepageHeader />
|
||||
<Layout description="Your native open source AI agent. Desktop app, CLI, and API — for code, workflows, and everything in between.">
|
||||
<HeroSection />
|
||||
<main>
|
||||
<HomepageFeatures />
|
||||
<FeaturesSection />
|
||||
<StandardsSection />
|
||||
<CommunitySection />
|
||||
<InstallSection />
|
||||
<VideoSection />
|
||||
</main>
|
||||
</Layout>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@ function PageActionsMenu(): ReactNode {
|
|||
|
||||
const handleViewMarkdown = () => {
|
||||
const source = metadata?.source?.replace('@site/', '') || '';
|
||||
window.open(`https://raw.githubusercontent.com/block/goose/refs/heads/main/documentation/${source}`, '_blank');
|
||||
window.open(`https://raw.githubusercontent.com/aaif-goose/goose/refs/heads/main/documentation/${source}`, '_blank');
|
||||
setDropdownOpen(false);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -61,9 +61,9 @@ function validPayload(overrides = {}) {
|
|||
iat: now - 10,
|
||||
exp: now + 300,
|
||||
jti: `test-jti-${++jtiCounter}`,
|
||||
repository: "block/goose",
|
||||
repository: "aaif-goose/goose",
|
||||
ref: "refs/heads/main",
|
||||
sub: "repo:block/goose:ref:refs/heads/main",
|
||||
sub: "repo:aaif-goose/goose:ref:refs/heads/main",
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ function testEnv(overrides = {}) {
|
|||
UPSTREAM_URL: "https://api.anthropic.com",
|
||||
UPSTREAM_AUTH_HEADER: "x-api-key",
|
||||
UPSTREAM_API_KEY: "sk-ant-real-key",
|
||||
ALLOWED_REPOS: "block/goose",
|
||||
ALLOWED_REPOS: "aaif-goose/goose",
|
||||
MAX_TOKEN_AGE_SECONDS: "1200",
|
||||
MAX_REQUESTS_PER_TOKEN: "200",
|
||||
RATE_LIMIT_PER_SECOND: "2",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue