goose/ui/desktop
2025-04-19 10:46:32 +10:00
..
components/ui styles: updated more-menu (#1578) 2025-03-21 22:00:26 -04:00
scripts fix windows extensions (#1968) 2025-04-08 10:07:37 -07:00
src GUI warning when installing extension from deeplink (#2260) 2025-04-19 10:46:32 +10:00
tests/e2e Fix e2e tests (#2256) 2025-04-18 10:23:03 -07:00
.env feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
.eslintrc.json Fix ESLint warnings and and enable max warnings 0 to fail builds (#2101) 2025-04-09 15:13:53 -07:00
.gitignore fix windows extensions (#1968) 2025-04-08 10:07:37 -07:00
.goosehints feat: move configure goosehints to the MoreMenu (#1474) 2025-03-03 13:10:28 -05:00
.npmrc feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
.nvmrc Added nvmrc for our node version (#2120) 2025-04-10 10:57:28 -07:00
.prettierignore feat: hook extensions up in settings-v2 (#1447) 2025-02-28 21:27:55 -05:00
.prettierrc.json feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
components.json feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
entitlements.plist feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
eslint.config.js (bug-fix: 1984) Update search highlighter to use overlay (#2035) 2025-04-04 13:43:03 -07:00
forge.config.ts fix: update Debian desktop build process (#2070) 2025-04-14 09:30:44 -07:00
forge.env.d.ts feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
image.d.ts ui: providers new design (#1446) 2025-02-28 21:04:50 -05:00
index.html Fix ESLint warnings and and enable max warnings 0 to fail builds (#2101) 2025-04-09 15:13:53 -07:00
openapi-ts.config.ts feat: hook extensions up in settings-v2 (#1447) 2025-02-28 21:27:55 -05:00
openapi.json fix: use env keys (#2258) 2025-04-18 14:01:46 -07:00
package-lock.json chore(release): release version 1.0.19 (#2273) 2025-04-18 15:36:44 -07:00
package.json chore(release): release version 1.0.19 (#2273) 2025-04-18 15:36:44 -07:00
playwright.config.ts Added Playwright E2E testing setup (#1893) 2025-03-28 08:20:14 -07:00
postcss.config.js feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
README.md Updated desktop readme with nvm info (#2137) 2025-04-10 13:59:02 -07:00
tailwind.config.ts styles: settings extensions tweaks (#2173) 2025-04-11 19:33:34 -04:00
test-extension-dialog.js GUI warning when installing extension from deeplink (#2260) 2025-04-19 10:46:32 +10:00
tsconfig.json Added missing electron-types package and cleaned up tsconfig (#2222) 2025-04-16 09:23:47 -04:00
tsconfig.node.json Added missing electron-types package and cleaned up tsconfig (#2222) 2025-04-16 09:23:47 -04:00
vite.config.mts fix: reload crashes the app (#1020) 2025-02-10 14:08:21 -05:00
vite.main.config.ts feat: V1.0 (#734) 2025-01-24 13:04:43 -08:00
vite.preload.config.ts fix windows native uvx (#1775) 2025-03-24 09:50:28 -07:00
vite.renderer.config.ts feat: [alpha] Providers grid refactor (#1345) 2025-02-24 13:03:13 -05:00

Goose Desktop App

Native desktop app for Goose built with Electron and ReactJS.

Prerequisites

  • nvm (recommended for managing node versions easier but not required)
  • node major version equal to or greater than specified in .nvmrc and package.json
  • rust (for building the server)
git clone git@github.com:block/goose.git
cd goose/ui/desktop
nvm use
npm install
npm run start

Building notes

This is an electron forge app, using vite and react.js. gooosed runs as multi process binaries on each window/tab similar to chrome.

see package.json:

npm run bundle:default will give you a Goose.app/zip which is signed/notarized but only if you setup the env vars as per forge.config.ts (you can empty out the section on osxSign if you don't want to sign it) - this will have all defaults.

npm run bundle:preconfigured will make a Goose.app/zip signed and notarized, but use the following:

            f"        process.env.GOOSE_PROVIDER__TYPE = '{os.getenv("GOOSE_BUNDLE_TYPE")}';",
            f"        process.env.GOOSE_PROVIDER__HOST = '{os.getenv("GOOSE_BUNDLE_HOST")}';",
            f"        process.env.GOOSE_PROVIDER__MODEL = '{os.getenv("GOOSE_BUNDLE_MODEL")}';"

This allows you to set for example GOOSE_PROVIDER__TYPE to be "databricks" by default if you want (so when people start Goose.app - they will get that out of the box). There is no way to set an api key in that bundling as that would be a terrible idea, so only use providers that can do oauth (like databricks can), otherwise stick to default goose.

Running with goosed server from source

Set VITE_START_EMBEDDED_SERVER=yes to no in .env. Run cargo run -p goose-server from parent dir. npm run start will then run against this. You can try server directly with ./test.sh