Files
tkmind_go/crates/goose-sdk/README.md
T
2026-07-22 18:48:30 +00:00

40 lines
1.4 KiB
Markdown

# goose-sdk
The bindings layer for Goose. It houses the shared types used for both ACP and
SDK access, and exposes a cross-language version of the Goose API.
With `--features uniffi` the crate compiles to native bindings for Python and
Kotlin (namespace `goose` / `io.github.aaif_goose`). The UniFFI surface lets
callers construct providers, stream provider completions, perform non-streaming
completion, and pass rich message/tool content across the FFI boundary.
```bash
just python # build bindings + run examples/uniffi/provider.py
just kotlin # build the Maven artifact + run examples/uniffi/kotlin
```
## Python package
The PyPI package is published as `goose-sdk` and imports as `goose`.
Build a local wheel from the repository root with:
```bash
just --justfile crates/goose-sdk/justfile python-wheel
```
This regenerates the UniFFI Python bindings, copies the release native library
into the package, and writes the wheel to `crates/goose-sdk/python/dist/`.
## Maven package
The Maven Central artifact is published as `io.github.aaif-goose:gdk` and uses
the Rust crate version from `crates/goose-sdk/Cargo.toml`.
```bash
just --justfile crates/goose-sdk/justfile maven-package
```
This regenerates the UniFFI Kotlin bindings and packages them with the native
library in a JVM jar. CI builds the native libraries for supported platforms and
can optionally publish the combined artifact to Maven Central.