mirror of
https://github.com/aljazceru/goose.git
synced 2026-01-05 15:34:30 +01:00
Co-authored-by: Michael Neale <michael.neale@gmail.com> Co-authored-by: Wendy Tang <wendytang@squareup.com> Co-authored-by: Jarrod Sibbison <72240382+jsibbison-square@users.noreply.github.com> Co-authored-by: Alex Hancock <alex.hancock@example.com> Co-authored-by: Alex Hancock <alexhancock@block.xyz> Co-authored-by: Lifei Zhou <lifei@squareup.com> Co-authored-by: Wes <141185334+wesrblock@users.noreply.github.com> Co-authored-by: Max Novich <maksymstepanenko1990@gmail.com> Co-authored-by: Zaki Ali <zaki@squareup.com> Co-authored-by: Salman Mohammed <smohammed@squareup.com> Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com> Co-authored-by: Alec Thomas <alec@swapoff.org> Co-authored-by: lily-de <119957291+lily-de@users.noreply.github.com> Co-authored-by: kalvinnchau <kalvin@block.xyz> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Rizel Scarlett <rizel@squareup.com> Co-authored-by: bwrage <bwrage@squareup.com> Co-authored-by: Kalvin Chau <kalvin@squareup.com> Co-authored-by: Alice Hau <110418948+ahau-square@users.noreply.github.com> Co-authored-by: Alistair Gray <ajgray@stripe.com> Co-authored-by: Nahiyan Khan <nahiyan.khan@gmail.com> Co-authored-by: Alex Hancock <alexhancock@squareup.com> Co-authored-by: Nahiyan Khan <nahiyan@squareup.com> Co-authored-by: marcelle <1852848+laanak08@users.noreply.github.com> Co-authored-by: Yingjie He <yingjiehe@block.xyz> Co-authored-by: Yingjie He <yingjiehe@squareup.com> Co-authored-by: Lily Delalande <ldelalande@block.xyz> Co-authored-by: Adewale Abati <acekyd01@gmail.com> Co-authored-by: Ebony Louis <ebony774@gmail.com> Co-authored-by: Angie Jones <jones.angie@gmail.com> Co-authored-by: Ebony Louis <55366651+EbonyLouis@users.noreply.github.com>
102 lines
3.6 KiB
Markdown
102 lines
3.6 KiB
Markdown
# Contributing
|
|
|
|
Goose is Open Source!
|
|
|
|
We welcome Pull Requests for general contributions! If you have a larger new feature or any questions on how to develop a fix, we recommend you open an [issue][issues] before starting.
|
|
|
|
## Prerequisites
|
|
|
|
Goose includes rust binaries alongside an electron app for the GUI. To work
|
|
on the rust backend, you will need to [install rust and cargo][rustup]. To work
|
|
on the App, you will also need to [install node and npm][nvm] - we recommend through nvm.
|
|
|
|
We provide a shortcut to standard commands using [just][just] in our `justfile`.
|
|
|
|
## Getting Started
|
|
|
|
### Rust
|
|
|
|
First let's compile goose and try it out
|
|
|
|
```
|
|
cargo build
|
|
```
|
|
|
|
when that is done, you should now have debug builds of the binaries like the goose cli:
|
|
|
|
```
|
|
./target/debug/goose --help
|
|
```
|
|
|
|
If you haven't used the CLI before, you can use this compiled version to do first time configuration:
|
|
|
|
```
|
|
./target/debug/goose configure
|
|
```
|
|
|
|
And then once you have a connection to an LLM provider working, you can run a session!
|
|
|
|
```
|
|
./target/debug/goose session
|
|
```
|
|
|
|
These same commands can be recompiled and immediately run using `cargo run -p goose-cli` for iteration.
|
|
As you make changes to the rust code, you can try it out on the CLI, or also run checks and tests:
|
|
|
|
```
|
|
cargo check # do your changes compile
|
|
cargo test # do the tests pass with your changes.
|
|
```
|
|
|
|
### Node
|
|
|
|
Now let's make sure you can run the app.
|
|
|
|
```
|
|
just run-ui
|
|
```
|
|
|
|
The start gui will both build a release build of rust (as if you had done `cargo build -r`) and start the electron process.
|
|
You should see the app open a window, and drop you into first time setup. When you've gone through the setup,
|
|
you can talk to goose!
|
|
|
|
You can now make changes in the code in ui/desktop to iterate on the GUI half of goose.
|
|
|
|
## Env Vars
|
|
|
|
You may want to make more frequent changes to your provider setup or similar to test things out
|
|
as a developer. You can use environment variables to change things on the fly without redoing
|
|
your configuration.
|
|
|
|
> [!TIP]
|
|
> At the moment, we are still updating some of the CLI configuration to make sure this is
|
|
> respected.
|
|
|
|
You can change the provider goose points to via the `GOOSE_PROVIDER` env var. If you already
|
|
have a credential for that provider in your keychain from previously setting up, it should
|
|
reuse it. For things like automations or to test without doing official setup, you can also
|
|
set the relevant env vars for that provider. For example `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`,
|
|
or `DATABRICKS_HOST`. Refer to the provider details for more info on required keys.
|
|
|
|
## Enable traces in Goose with [locally hosted Langfuse](https://langfuse.com/docs/deployment/self-host)
|
|
|
|
- Run `just langfuse-server` to start your local Langfuse server. It requires Docker.
|
|
- Go to http://localhost:3000 and log in with the default email/password output by the shell script (values can also be found in the `.env.langfuse.local` file).
|
|
- Set the environment variables so that rust can connect to the langfuse server
|
|
|
|
```
|
|
export LANGFUSE_INIT_PROJECT_PUBLIC_KEY=publickey-local
|
|
export LANGFUSE_INIT_PROJECT_SECRET_KEY=secretkey-local
|
|
```
|
|
|
|
Then you can view your traces at http://localhost:3000
|
|
|
|
## Conventional Commits
|
|
|
|
This project follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification for PR titles. Conventional Commits make it easier to understand the history of a project and facilitate automation around versioning and changelog generation.
|
|
|
|
[issues]: https://github.com/block/goose/issues
|
|
[rustup]: https://doc.rust-lang.org/cargo/getting-started/installation.html
|
|
[nvm]: https://github.com/nvm-sh/nvm
|
|
[just]: https://github.com/casey/just?tab=readme-ov-file#installation
|