Discover / LLM Ops & Observability
Weave
by wandbPython
Toolkit to track, evaluate, and monitor LLM applications by W&B.
Maturity: experimental because latest release v0.53.2 is pre 1.0. Derived from release and commit history, not a rating.
- Stars
- 1.1k
- Forks
- 161
- Downloads / mo
- 947k
- Last commit
- 2026-08-01
- License
- Apache-2.0
- Open issues
- 263
Market and trust evidence
Edition not yet matchedNo exact skills.sh identity match is available for this repository. Repository adoption and freshness remain visible above; install momentum is not inferred.
Trust analysis is a screening signal, not a security warranty. Read the ranking and trust methodology.
In practice
Written by AI from this repository’s README · high confidenceGenerative AI development is experimental, and there is no record of which inputs produced which outputs.
Use it when
Use it when you want to decorate Python functions and get a trace tree plus rigorous evaluations of LLM use cases.
Not the right pick when
The README says the Weave engine and Weave boards code is on pause while the team focuses on tracing and evaluations.
Capabilities
- log and debug language model inputs, outputs and traces
- build apples to apples evaluations for language model use cases
- organize information across the LLM workflow from experimentation to production
- trace any function with the weave.op decorator
- generate a trace tree of nested function inputs and outputs
Requirements
- Python 3.10 or higher
- a Weights & Biases account, free tier available
Cost: Open source with a paid cloud option
Install
Derived from the published package name in the repository, not from a model.
Video walkthroughs
How to Use Weavy AI — Full Guide + Workflow Included (Figma Weave)
Figma Weave Tutorial: STOP Wasting Credits (Weavy Ai)
Third-party YouTube uploads matched to this tool by title, channel and repository name on 2026-08-03. Not made, reviewed or endorsed by SkillPilot. View counts and publish months are as of the match date and the month is approximate. Nothing loads from YouTube until you press play.
What the repository ships
Detected from the actual files in the repository root.
Latest release v0.53.2
Published 2026-07-16
What's Changed
- perf(weave): per-source union-all for custom-attrs schema query by @gtarpenning in https://github.com/wandb/weave/pull/7502
- perf(weave): compute numeric-histogram bounds once (3 map scans -> 2) by @gtarpenning in https://github.com/wandb/weave/pull/7504
- perf(weave): page-prefetch two-pass for agents list-view attribution by @gtarpenning in https://github.com/wandb/weave/pull/7449
- perf(weave): prune the agents cost list-read via the two-pass by @gtarpenning in https://github.com/wandb/weave/pull/7453
- chore(inference): fix 500 in catalog API by @jamie-rasmussen in https://github.com/wandb/weave/pull/7515
- fix(weave_ts): re-route agent spans to the active project on weave.init() by @fixit-agent[bot] in https://github.com/wandb/weave/pull/7512
- chore(weave_ts): Bump version, update changelog. by @drtangible in https://github.com/wandb/weave/pull/7520
- perf(weave): two-pass filter CTE for calls_complete heavy reads by @gtarpenning in https://github.com/wandb/weave/pull/7486
- chore(weave): add column_visibility to ComparisonViewDefinition by @gtarpenning in https://github.com/wandb/weave/pull/7519
- perf(weave): add tuned skip indexes on calls_complete (trace_id + attributes_dump) by @gtarpenning in https://github.com/wandb/weave/pull/7510
- fix(weave): soft-delete calls_complete via lightweight UPDATE, reclaim async by @gtarpenning in https://github.com/wandb/weave/pull/7509
- feat(weave): Base64 and Data URL content ref conversion by @zbirenbaum in https://github.com/wandb/weave/pull/7489
- chore(weave_ts): Move type to keep typedoc on Turn by @drtangible in https://github.com/wandb/weave/pull/7521
- feat(weave_ts): nest LLM/Tool/SubAgent under a SubAgent by @rgao-coreweave in https://github.com/wandb/weave/pull/7077
- chore(weave): require the (weave_ts) PR-title scope for TS SDK changes by @fixit-agent[bot] in https://github.com/wandb/weave/pull/7522
- perf(weave): cache published content refs to dedupe repeat base64 blobs on ingest by @gtarpenning in https://github.com/wandb/weave/pull/7527
- feat(weave): first-class sdk feedback for agent spans + turns by @gtarpenning in https://github.com/wandb/weave/pull/7524
- fix(weave): capture Bedrock cache tokens in streaming converse by @fixit-agent[bot] in https://github.com/wandb/weave/pull/7525
- fix(weave): pass through external refs embedded in JSON strings on read by @gtarpenning in https://github.com/wandb/weave/pull/7530
- chore(weave): rename Turn/SubAgent factory methods to start_*() by @rgao-coreweave in https://github.com/wandb/weave/pull/7526
- chore(weave): update costs by @jwlee64 in https://github.com/wandb/weave/pull/7533
- perf(weave): batch content object inserts in calls_complete by @gtarpenning in https://github.com/wandb/weave/pull/7528
- perf(weave): negative-cache mimetype-rejected base64 blobs on ingest by @gtarpenning in https://github.com/wandb/weave/pull/7529
- fix(weave): map request-input validation failures to 400 not 500 by @gtarpenning in https://github.com/wandb/weave/pull/7409
- perf(weave): narrow eval cost pricing to predict calls by @ro31337 in https://github.com/wandb/weave/pull/7536
- fix(weave): idempotent migrations, additive 029, and partial-migration auto-recovery by @gtarpenning in https://github.com/wandb/weave/pull/7496
- fix(weave): use real Bedrock cache token field names by @ro31337 in https://github.com/wandb/weave/pull/7540
- fix(weave): drop stalling calls_complete reclaim DELETE by @gtarpenning in https://github.com/wandb/weave/pull/7542
- feat(weave): report deleted versions in ObjDeleteRes by @ruhiparvatam in https://github.com/wandb/weave/pull/7544
- perf(weave): skip latest alias write for content objects in calls_complete by @gtarpenning in https://github.com/wandb/weave/pull/7537
- fix(weave): stabilize client-side digests across non-string dict keys by @gtarpenning in https://github.com/wandb/weave/pull/7539
- chore(weave): cap openai below 2.45.0 for openai_agen
Tags
README
Weave by Weights & Biases
[](https://github.com/wandb/weave)
Weave is a toolkit for developing Generative AI applications, built by Weights & Biases.
You can use Weave to:
- Log and debug language model inputs, outputs, and traces
- Build rigorous, apples-to-apples evaluations for language model use cases
- Organize all the information generated across the LLM workflow, from experimentation to evaluations to production
Our goal is to bring rigor, best-practices, and composability to the inherently experimental process of developing Generative AI software, without introducing cognitive overhead.
Documentation
Our documentation site can be found here.
Prerequisites
- Python 3.10 or higher
- A Weights & Biases account (free tier available)
Quick Start
- Install Weave:
pip install weave
- Import and initialize:
import weave
weave.init("my-project-name")
- Trace your functions:
@weave.op
def my_function():
# Your tracked code!
pass
Usage
Tracing
You can trace any function using weave.op - from api calls to OpenAI, Anthropic, Google AI Studio etc to generation calls from Hugging Face and other open source models to any other validation functions or data transformations in your code you'd like to keep track of.
Decorate all the functions you want to trace, this will generate a trace tree of the inputs and outputs of all your functions:
import weave
weave.init("weave-example")
@weave.op
def sum_nine(value_one: int):
return value_one + 9
@weave.op
def multiply_two(value_two: int):
return value_two * 2
@weave.op
def main():
output = sum_nine(3)
final_output = multiply_two(output)
return final_output
main()
Fuller Example
import weave
import json
from openai import OpenAI
@weave.op
def extract_fruit(sentence: str) -> dict:
client = OpenAI()
response = client.chat.completions.create(
model="gpt-3.5-turbo-1106",
messages=[
{
"role": "system",
"content": "You will be provided with unstructured data, and your task is to parse it one JSON dictionary with fruit, color and flavor as keys."
},
{
"role": "user",
"content": sentence
}
],
temperature=0.7,
response_format={ "type": "json_object" }
)
extracted = response.choices[0].message.content
return json.loads(extracted)
weave.init('intro-example')
sentence = "There are many fruits that were found on the recently discovered planet Goocrux. There are neoskizzles that grow there, which are purple and taste like candy."
extract_fruit(sentence)
Contributing
Interested in pulling back the hood or contributing? Awesome, before you dive in, here's what you need to know.
We're in the process of 🧹 cleaning up 🧹. This codebase contains a large amount code for the "Weave engine" and "Weave boards", which we've put on pause as we focus on Tracing and Evaluations.
The Weave Tracing code is mostly in: weave/trace and weave/trace_server.
The Weave Evaluations code is mostly in weave/flow.