Matt Toohey 4889539ebb feat(observability): trace provider/model at every reply hand-off
- Always populate Message.metadata.inference in reply_internal so the
  client has a per-message ground truth even when fetch_model_info()
  cannot resolve a canonical model (resolved_model: None is now a
  legitimate carried value).
- Add gen_ai.provider and gen_ai.request.model fields to the existing
  tracing::instrument on stream_response_from_provider, which wraps
  every Provider::stream call. (Instrumenting the trait method
  directly is not possible: it has no body for tracing-attributes to
  wrap and the in-tree comment at base.rs explicitly forbids it.)
- Add structured tracing::info! at the four reply hand-off points,
  tagged with session.id for end-to-end correlation:
  * /reply entry, after the session is loaded
    (goose-server/src/routes/reply.rs)
  * restore_provider_from_session, with provider_source and
    model_source = "session" | "config_default"
    (goose/src/agents/agent.rs)
  * update_provider, with source = "explicit_update"
    (goose/src/agents/agent.rs)
  * just before provider.stream(...)
    (goose/src/agents/reply_parts.rs)
  * MessageEvent::Message emit, with the message's inference metadata
    (goose-server/src/routes/reply.rs)
- ACP path: add symmetric entry and emit logs in
  GooseAcpAgent::on_prompt (goose/src/acp/server.rs). The actual LLM
  call site is shared via Agent::reply, so the agent-level changes
  cover both /reply and ACP.

Together these allow correlating one log chain per session and
locating where the requested model and the actually-used model
diverge.

Verified: cargo build -p goose -p goose-server, cargo clippy
--all-targets -p goose -p goose-server -- -D warnings, and
cargo test -p goose --lib conversation:: all pass. Pre-existing
sqlx-runtime-feature test failures under cargo test -p goose --lib
are unrelated to this change (confirmed via git stash).

Signed-off-by: Matt Toohey <contact@matttoohey.com>
2026-06-01 10:33:02 +10:00
2026-05-26 16:09:03 +00:00
2026-05-22 16:24:47 +00:00

🦆 goose has moved! This project has moved from block/goose to the Agentic AI Foundation (AAIF) at the Linux Foundation. Some links and references are still being updated — please bear with us during the transition.

goose

your native open source AI agent — desktop app, CLI, and API — for code, workflows, and everything in between

Discord CI Packaging status

goose is a general-purpose AI agent that runs on your machine. Not just for code — use it for research, writing, automation, data analysis, or anything you need to get done.

A native desktop app for macOS, Linux, and Windows. A full CLI for terminal workflows. An API to embed it anywhere. Built in Rust for performance and portability.

goose works with 15+ providers — Anthropic, OpenAI, Google, Ollama, OpenRouter, Azure, Bedrock, and more. Use API keys or your existing Claude, ChatGPT, or Gemini subscriptions via ACP. Connect to 70+ extensions via the Model Context Protocol open standard.

goose is part of the Agentic AI Foundation (AAIF) at the Linux Foundation.

Get started

Download the desktop app for macOS, Linux, and Windows.

Or install the CLI:

curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash

Quick links

Need help?

a little goose humor 🪿

Why did the developer choose goose as their AI agent?

Because it always helps them "migrate" their code to production! 🚀

goose around with us

S
Description
an open-source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM
Readme Apache-2.0 2 GiB
Languages
Rust 63.5%
TypeScript 29.7%
JavaScript 1.7%
Shell 1.6%
Python 1.5%
Other 1.8%