BUILDING_LINUX.md
This guide covers building the goose Desktop application from source on various Linux distributions.
Debian/Ubuntu:
sudo apt update
sudo apt install -y dpkg fakeroot build-essential clang libxcb1-dev libxcb-util-dev protobuf-compiler
Arch/Manjaro:
sudo pacman -S --needed dpkg fakeroot base-devel
Fedora/RHEL/CentOS:
sudo dnf install dpkg-dev fakeroot gcc gcc-c++ make libxcb-devel
openSUSE:
sudo zypper install dpkg fakeroot gcc gcc-c++ make
android / termux:
goose is not officially support termux build yet, you need some minor patch to fix build issues. We will publish goose (block-goose) into termux-packages. <!-- NOTE: package name kept for backwards compat --> If you want to try there is a non-official build, https://github.com/shawn111/goose/releases/download/termux/goose-termux-aarch64.tar.bz2 For more details, see: https://github.com/aaif-goose/goose/pull/3890
pkg install rust
pkg install cmake protobuf clang build-essential
cargo install just after Rust is installed. More infogit clone https://github.com/aaif-goose/goose.git
cd goose
Build Goose CLI:
cargo build --release -p goose-cli
Build Goose Server:
cargo build --release -p goose-server
This command should give you a list of possible packages in the workspace:
cargo test -p
cd ui/desktop
pnpm install
# Copy the server binary to the expected location
mkdir -p src/bin
cp ../../target/release/goosed src/bin/
Works on all Linux distributions:
pnpm run make --targets=@electron-forge/maker-zip
Output: out/make/zip/linux/x64/goose-linux-x64-{version}.zip
For Debian/Ubuntu systems:
pnpm run make --targets=@electron-forge/maker-deb
Output: out/make/deb/x64/goose_{version}_amd64.deb
pnpm run make
./out/goose-linux-x64/goose
sudo dpkg -i out/make/deb/x64/goose_*.deb
If you see errors about missing dpkg or fakeroot:
# Install the missing packages for your distribution (see Prerequisites above)
You may see warnings like:
GLib-GObject: instance has no handler with id
These are harmless and don't affect functionality. To suppress them, create a launcher script:
#!/bin/bash
cd /path/to/goose/ui/desktop/out/goose-linux-x64
./goose 2>&1 | grep -v "GLib-GObject" | grep -v "browser_main_loop"
If you see "Could not find goosed binary", ensure you've:
cargo build --release -p goose-servercp ../../target/release/goosed src/bin/pnpm run makeFlatpak builds are supported via CI. To build locally:
# Install flatpak and flatpak-builder
sudo apt install flatpak flatpak-builder
# Add Flathub remote
flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Build with Electron Forge
pnpm run make --targets=@electron-forge/maker-flatpak
Output: out/make/flatpak/x86_64/*.flatpak
Building as Snap packages is not currently supported but may be added in the future.
For active development:
cargo build --release -p goose-server and copy the binarypnpm run start for hot reload during developmentCreate ~/.local/share/applications/goose.desktop:
[Desktop Entry]
Name=goose AI Agent
Comment=Local AI agent for development tasks
Exec=/path/to/goose/ui/desktop/out/goose-linux-x64/goose %U
Icon=/path/to/goose/ui/desktop/out/goose-linux-x64/resources/app.asar.unpacked/src/images/icon.png
Terminal=false
Type=Application
Categories=Development;Utility;
StartupNotify=true
MimeType=x-scheme-handler/goose
To install system-wide:
sudo cp -r out/goose-linux-x64 /opt/goose
sudo ln -s /opt/goose/goose /usr/local/bin/goose-gui
When contributing changes that affect the Linux build process, please:
ui/desktop/README.md if needed