Skip to main content

GDK

Build agents that run across native applications, servers, and the browser, resume from persisted state, and give you control over how they work.

GDK is the set of reusable agent-runtime components used to build goose. It provides model integrations, a composable state machine, tools, context management, and the interfaces needed to run an agent inside your application.

Explore GDK​

Getting Started​

Build a small Rust agent that can run shell commands, stream responses, and save its conversation between runs. The walkthrough explains how to connect a provider, tools, and a state machine, and which parts your application owns. Start here to see the pieces working together before choosing how to adapt them.

Demos​

Explore working projects that use GDK for personal wikis, phone calls, screen understanding, voice conversations, and custom interfaces to goose. Each demo links to its source and explains the architectural idea behind it, along with what you need to run it. Use them to see how the same components fit very different applications.

Concepts​

Understand the state machine, operations, providers, and authentication, and how they fit together. These guides explain the problems each component solves, the choices behind its design, and the implementations available today. Worked examples show how to compose agent behavior and when to write your own operation or provider.

Reference​

Look up the generated Rust APIs for the agent runtime, providers, and context management. Explore the shared provider bindings through the Python API and Kotlin API, with runnable examples in Python and Kotlin. For apps using goose as a backend, consult the ACP reference. Use the reference when you need exact types, methods, and configuration details while building.

GDK and goose​

goose is a complete agent application and the main reference implementation for GDK. Use goose when you want a ready-to-run agent. Use GDK when you want to build agent behavior into your own product.

The pre-built goose binary can also serve as the agent behind any ACP application you build. goose Desktop works this way, connecting to a local goose server over ACP.