LLM Goose 🪿
LLM-powered testing, traces, and live chat for agent workflows
Goose is a Python library, CLI, and web dashboard for testing and debugging LLM agents.
Scaffold a gooseapp/, point Goose at your real query function, write
goose.case(...) tests, then expose tools and live chat when you want the full dashboard loop.
What it looks like
Why Goose?
- Natural-language expectations – Describe the behavior you want and let Goose validate it.
- Tool call assertions – Check what your agent actually did, not just what it said.
- Full execution traces – Inspect messages, tool calls, tool outputs, and validation results.
- Live chat for iteration – Try agents in the dashboard while you develop.
- Hot reload – Re-run against updated code without restarting the app.
Choose your path
- Framework-agnostic quickstart – integrate Goose into an existing Python app, regardless of framework:
docs/getting-started.md - LangChain / LangGraph integration – keep your existing LangChain-style agent and add Goose around it:
docs/integrations/langchain.md
If you are starting from zero, the framework-agnostic quickstart is the default path.
Core workflow
- Scaffold the app with
goose init - Point Goose at
query(...) -> AgentResponseingooseapp/conftest.py - Write cases in
gooseapp/tests/withgoose.case(...) - Run the first loop with
goose test listandgoose test run - Expand into tools, chat, and hot reload through
gooseapp/app.py
Install
Required for the first test run:
pip install llm-goose
Optional for the browser UI:
npm install -g @llm-goose/dashboard-cli
goose init creates the path
goose init
gooseapp/
├── README.md
├── __init__.py
├── app.py
├── conftest.py
└── tests/
├── __init__.py
└── test_example.py
app.pyconfigures tools, live chat agents, and hot reloadconftest.pywires the Goose fixture to your real query functiontests/holds the cases you run from the CLI or dashboard
See docs/goose-init.md for the full scaffold contract.
Minimal first test
from goose.testing import Goose
def test_agent_responds(goose: Goose) -> None:
goose.case(
query="Hello, what can you help me with?",
expectations=[
"Agent responds with a greeting or acknowledgment",
"Agent describes its capabilities or offers assistance",
],
)
goose is injected from the fixture you register in gooseapp/conftest.py. The full query -> fixture -> test path is
documented in docs/getting-started.md.
Key commands
goose init # scaffold gooseapp/
goose test list gooseapp.tests
goose test run gooseapp.tests
goose api
goose-dashboard
Where to go next
- Framework-agnostic quickstart:
docs/getting-started.md - LangChain / LangGraph integration:
docs/integrations/langchain.md - Scaffold details:
docs/goose-init.md - Writing tests:
docs/testing.md - Running the API and CLI loop:
docs/running-goose.md - Using the dashboard:
docs/dashboard.md
License
MIT License – see LICENSE for full text.
Metadata
Release files for llm-goose 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| llm_goose-0.2.0.tar.gz | 57.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| llm_goose-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 131.3 kB
Release files / llm_goose-0.2.0.tar.gz
| Download URL | llm_goose-0.2.0.tar.gz |
|---|---|
| Size | 57.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1322eeaf1f8ac9ec3a72d11707229cb8969ac261313d8d8b9fc41d3a367ad813
|
|
BLAKE2b-256 checksum How to use checksums |
101eef07a52d34e25a6da090d6e0e28ea7be4bce325b694f1ea8929fbb640f43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / llm_goose-0.2.0-py3-none-any.whl
| Download URL | llm_goose-0.2.0-py3-none-any.whl |
|---|---|
| Size | 74.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e63057df2420d1df3d3e5d72a5146fe3dbf87b022969cd75762cfbef96ca48d
|
|
BLAKE2b-256 checksum How to use checksums |
4ed3796f6db2b368302de74ee47e90bcb8cc776f3c4d9758061916e44ca2fbe5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|