Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .github/workflows/pr-smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,33 +88,52 @@ jobs:
runs-on: ubuntu-latest
needs: build-binary
steps:
- name: Check Anthropic secret
id: check-secrets
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
if [ -n "$ANTHROPIC_API_KEY" ]; then
echo "has_anthropic=true" >> "$GITHUB_OUTPUT"
else
echo "has_anthropic=false" >> "$GITHUB_OUTPUT"
echo "Skipping smoke tests because ANTHROPIC_API_KEY is not configured for this repository."
fi

- name: Checkout Code
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.inputs.branch || github.ref }}

- name: Download Binary
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: goose-binary
path: target/debug

- name: Make Binary Executable
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: chmod +x target/debug/goose

- name: Set up Node.js
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/setup-node@v4
with:
node-version: '22'

- name: Install agentic providers
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: npm install -g @anthropic-ai/claude-code @zed-industries/claude-agent-acp @zed-industries/codex-acp

- name: Install Node.js Dependencies
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: source ../../bin/activate-hermit && pnpm install --frozen-lockfile
working-directory: ui/desktop

- name: Run Smoke Tests (Normal Mode)
if: steps.check-secrets.outputs.has_anthropic == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Expand All @@ -137,14 +156,17 @@ jobs:
working-directory: ui/desktop

- name: Set up Python
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install uv
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0

- name: Run MCP Tests
if: steps.check-secrets.outputs.has_anthropic == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Expand All @@ -161,6 +183,7 @@ jobs:
bash scripts/test_mcp.sh

- name: Run Subrecipe Tests
if: steps.check-secrets.outputs.has_anthropic == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOSE_PROVIDER: anthropic
Expand Down Expand Up @@ -219,29 +242,47 @@ jobs:
runs-on: ubuntu-latest
needs: build-binary
steps:
- name: Check Anthropic secret
id: check-secrets
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
if [ -n "$ANTHROPIC_API_KEY" ]; then
echo "has_anthropic=true" >> "$GITHUB_OUTPUT"
else
echo "has_anthropic=false" >> "$GITHUB_OUTPUT"
echo "Skipping compaction tests because ANTHROPIC_API_KEY is not configured for this repository."
fi

- name: Checkout Code
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.inputs.branch || github.ref }}

- name: Download Binary
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: goose-binary
path: target/debug

- name: Make Binary Executable
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: chmod +x target/debug/goose

- name: Set up Python
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install uv
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: astral-sh/setup-uv@61cb8a9741eeb8a550a1b8544337180c0fc8476b # v7.2.0

- name: Run Compaction Tests
if: steps.check-secrets.outputs.has_anthropic == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOSE_PROVIDER: anthropic
Expand All @@ -259,25 +300,42 @@ jobs:
runs-on: ubuntu-latest
needs: build-binary
steps:
- name: Check Anthropic secret
id: check-secrets
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
if [ -n "$ANTHROPIC_API_KEY" ]; then
echo "has_anthropic=true" >> "$GITHUB_OUTPUT"
else
echo "has_anthropic=false" >> "$GITHUB_OUTPUT"
echo "Skipping goose server HTTP integration tests because ANTHROPIC_API_KEY is not configured for this repository."
fi

- name: Checkout Code
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.inputs.branch || github.ref }}

- name: Download Binary
if: steps.check-secrets.outputs.has_anthropic == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: goosed-binary
path: target/debug

- name: Make Binary Executable
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: chmod +x target/debug/goosed

- name: Install Node.js Dependencies
if: steps.check-secrets.outputs.has_anthropic == 'true'
run: source ../../bin/activate-hermit && pnpm install --frozen-lockfile
working-directory: ui/desktop

- name: Run Integration Tests
if: steps.check-secrets.outputs.has_anthropic == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOSED_BINARY: ../../target/debug/goosed
Expand Down
88 changes: 42 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,57 @@
> **🦆 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.
# ApeMind Agent

<div align="center">
ApeMind Agent is an ApeCloud desktop agent distribution based on upstream
[Goose](https://github.com/aaif-goose/goose). It runs on the user's own machine
and provides a local desktop entry point for agent workflows.

# goose
The first PoC focuses on desktop branding and safe packaging defaults while
keeping the fork shallow enough to continue tracking upstream.

_your native open source AI agent — desktop app, CLI, and API — for code, workflows, and everything in between_
## What This Fork Changes

<p align="center">
<a href="https://opensource.org/licenses/Apache-2.0"
><img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg"></a>
<a href="https://discord.gg/goose-oss"
><img src="https://img.shields.io/discord/1287729918100246654?logo=discord&logoColor=white&label=Join+Us&color=blueviolet" alt="Discord"></a>
<a href="https://github.com/aaif-goose/goose/actions/workflows/ci.yml"
><img src="https://img.shields.io/github/actions/workflow/status/aaif-goose/goose/ci.yml?branch=main" alt="CI"></a>
<a href="https://insights.linuxfoundation.org/project/goose"><img src="https://insights.linuxfoundation.org/api/badge/health-score?project=goose"></a>
<a href="https://repology.org/project/goose-cli/versions"><img src="https://repology.org/badge/tiny-repos/goose-cli.svg" alt="Packaging status"></a>
</p>
</div>
- ApeMind Agent product name and desktop-facing copy.
- ApeCloud/ApeMind visual assets for desktop packaging.
- Build defaults that avoid telemetry, OTel, and AWS provider features unless
explicitly enabled.

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.
Packaging artifact names for desktop installers, CLI downloads, and Docker
images are tracked separately as distribution work.

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.
## What Stays Upstream-Compatible

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.
- Core agent loop.
- Tool execution behavior.
- Provider runtime internals.
- MCP runtime internals.
- Cargo crate names and repository path.

goose is part of the [Agentic AI Foundation (AAIF)](https://aaif.io/) at the Linux Foundation.
## Target Users

# Get started
The main user entry point is the desktop app:

**[Download the desktop app](https://goose-docs.ai/docs/getting-started/installation)** for macOS, Linux, and Windows.
- macOS Desktop for internal team validation.
- Windows Desktop for customer validation.
- CLI for debugging and automation.
- Docker for distribution and automated smoke checks.

Or install the CLI:
## Build Notes

The PoC CLI profile uses upstream feature flags and release settings:

```bash
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
source ./bin/activate-hermit >/tmp/hermit.log 2>&1
CARGO_PROFILE_RELEASE_LTO=true \
CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 \
CARGO_PROFILE_RELEASE_OPT_LEVEL=z \
CARGO_PROFILE_RELEASE_STRIP=true \
cargo build --release --package goose-cli --bin goose \
--no-default-features --features rustls-tls
```

# 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

## Need help?
- [Diagnostics & Reporting](https://goose-docs.ai/docs/troubleshooting/diagnostics-and-reporting)
- [Known Issues](https://goose-docs.ai/docs/troubleshooting/known-issues)

# a little goose humor 🪿

> Why did the developer choose goose as their AI agent?
>
> Because it always helps them "migrate" their code to production! 🚀

# 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)
This keeps AWS provider, telemetry, and OTel out of the default PoC build.

## Upstream

This project is a branded distribution of Goose, an Apache-2.0 licensed open
source project from the Agentic AI Foundation at the Linux Foundation. Keep the
upstream license and notices intact when distributing ApeMind Agent.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ source: crates/goose/src/agents/prompt_manager.rs
assertion_line: 458
expression: system_prompt
---
You are a general-purpose AI agent called goose, created by AAIF (Agentic AI Foundation).
goose is being developed as an open-source software project.
You are a general-purpose AI agent called ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project.
ApeMind Agent is designed to run on the user's own machine.

# Extensions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
source: crates/goose/src/agents/prompt_manager.rs
expression: system_prompt
---
You are a general-purpose AI agent called goose, created by AAIF (Agentic AI Foundation).
goose is being developed as an open-source software project.
You are a general-purpose AI agent called ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project.
ApeMind Agent is designed to run on the user's own machine.

# Extensions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
source: crates/goose/src/agents/prompt_manager.rs
expression: system_prompt
---
You are a general-purpose AI agent called goose, created by AAIF (Agentic AI Foundation).
goose is being developed as an open-source software project.
You are a general-purpose AI agent called ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project.
ApeMind Agent is designed to run on the user's own machine.

# Extensions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
source: crates/goose/src/agents/prompt_manager.rs
expression: system_prompt
---
You are a general-purpose AI agent called goose, created by AAIF (Agentic AI Foundation).
goose is being developed as an open-source software project.
You are a general-purpose AI agent called ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project.
ApeMind Agent is designed to run on the user's own machine.

# Extensions

Expand All @@ -26,6 +26,7 @@ extension_A supports resources.
### Instructions
<instructions on how to use extension B (no resources)>


# Suggestion

The user has 6 extensions with 51 tools enabled, exceeding recommended limits (5 extensions or 50 tools).
Expand Down
11 changes: 9 additions & 2 deletions crates/goose/src/prompts/subagent_system.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,41 @@
You are a specialized subagent within the goose AI framework, created by AAIF (Agentic AI Foundation). You were spawned by the main goose agent to handle a specific task efficiently.
You are a specialized subagent within ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project. You were spawned by the main agent to handle a specific task efficiently.

# Your Role

You are an autonomous subagent with these characteristics:

- **Independence**: Make decisions and execute tools within your scope
- **Specialization**: Focus on specific tasks assigned by the main agent
- **Efficiency**: Use tools sparingly and only when necessary
- **Bounded Operation**: Operate within defined limits (turn count, timeout)
- **Security**: Cannot spawn additional subagents
The maximum number of turns to respond is {{max_turns}}.
The maximum number of turns to respond is {{max_turns}}.

{% if subagent_id is defined %}
**Subagent ID**: {{subagent_id}}
{% endif %}

{% if task_instructions %}

# Task Instructions

{{task_instructions}}
{% endif %}

# Tool Usage Guidelines

**CRITICAL**: Be efficient with tool usage. Use tools only when absolutely necessary to complete your task. Here are the available tools you have access to:
You have access to {{tool_count}} tools: {{available_tools}}

**Tool Efficiency Rules**:

- Use the minimum number of tools needed to complete your task
- Avoid exploratory tool usage unless explicitly required
- Stop using tools once you have sufficient information
- Provide clear, concise responses without excessive tool calls

# Communication Guidelines

- **Progress Updates**: Report progress clearly and concisely
- **Completion**: Clearly indicate when your task is complete
- **Scope**: Stay focused on your assigned task
Expand Down
5 changes: 3 additions & 2 deletions crates/goose/src/prompts/system.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
You are a general-purpose AI agent called goose, created by AAIF (Agentic AI Foundation).
goose is being developed as an open-source software project.
You are a general-purpose AI agent called ApeMind Agent, an ApeCloud desktop agent distribution based on the open-source Goose project.
ApeMind Agent is designed to run on the user's own machine.
{% if not code_execution_mode %}

# Extensions
Expand Down Expand Up @@ -31,6 +31,7 @@ No extensions are defined. You should let the user know that they should add ext

{% if extension_tool_limits is defined and not code_execution_mode %}
{% with (extension_count, tool_count) = extension_tool_limits %}

# Suggestion

The user has {{extension_count}} extensions with {{tool_count}} tools enabled, exceeding recommended limits ({{max_extensions}} extensions or {{max_tools}} tools).
Expand Down
4 changes: 2 additions & 2 deletions crates/goose/src/prompts/tiny_model_system.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
You are goose, an autonomous AI agent created by AAIF (Agentic AI Foundation). You act on the user's
You are ApeMind Agent, an autonomous AI agent that runs on the user's
behalf — you do not explain how to do things, you DO them directly.

The OS is {{os}}, the shell is {{shell}}, and the working directory is {{working_directory}}
Expand All @@ -19,4 +19,4 @@ $ ls -1 /tmp | wc -l
After a command runs, you will see its output. Use the output to answer the user
or take the next step. Do not repeat commands you have already run.

Do not use shell commands if you already know the answer.
Do not use shell commands if you already know the answer.
Loading
Loading