Skip to main content

A state machine for data projects

Project description

Burr

Burr makes it easy to develop applications that make decisions based on state (chatbots, agents, simulations, etc...) from simple python building blocks. Burr includes a UI that can track/monitor those decisions in real time.

Link to documentation. Quick video intro here.

🏃Quick start

Install from pypi:

pip install "burr[start]"

Then run the server:

burr

This will open up a demo -- to chat it requires the OPENAI_API_KEY environment variable to be set, but you can still see how it works if you don't have one.

🔩 How does Burr work?

With Burr you express your application as a state machine (i.e. a graph/flowchart). You can (and should!) use it for anything where managing state can be hard. Hint: managing state is always hard! This is true across a wide array of contexts, from building RAG applications to power a chatbot, to running ML parameter tuning/evaluation workflows, to conducting a complex forecasting simulation.

Burr includes:

  1. A (dependency-free) low abstraction python library that enables you to build and manage state machines with simple python functions
  2. A UI you can use view execution telemetry for introspection and debugging
  3. A set of integrations to make it easier to persist state, connect to telemetry, and integrate with other systems

Burr at work

💻️ What can you do with Burr?

Burr can be used to power a variety of applications, including:

  1. A simple gpt-like chatbot
  2. A stateful RAG-based chatbot
  3. A machine learning pipeline
  4. A simulation

And a lot more!

Using hooks and other integrations you can (a) integrate with any of your favorite vendors (LLM observability, storage, etc...), and (b) build custom actions that delegate to your favorite libraries (like Hamilton).

Burr will not tell you how to build your models, how to query APIs, or how to manage your data. It will help you tie all these together in a way that scales with your needs and makes following the logic of your system easy. Burr comes out of the box with a host of integrations including tooling to build a UI in streamlit and watch your state machine execute.

🏗 Start Building

See the documentation for getting started, and follow the example. Then read through some of the concepts and write your own application!

📃 Comparison against common frameworks

While Burr is attempting something (somewhat) unique, there are a variety of tools that occupy similar spaces:

Criteria Burr Langgraph temporal Langchain Superagent Hamilton
Explicitly models a state machine
Framework-agnostic
Asynchronous event-based orchestration
Built for core web-service logic
Open-source user-interface for monitoring
Works with non-LLM use-cases

🌯 Why the name Burr?

Burr is named after Aaron Burr, founding father, third VP of the United States, and murderer/arch-nemesis of Alexander Hamilton. What's the connection with Hamilton? This is DAGWorks' second open-source library release after the Hamilton library We imagine a world in which Burr and Hamilton lived in harmony and saw through their differences to better the union. We originally built Burr as a harness to handle state between executions of Hamilton DAGs (because DAGs don't have cycles), but realized that it has a wide array of applications and decided to release it more broadly.

🛣 Roadmap

While Burr is stable and well-tested, we have quite a few tools/features on our roadmap!

  1. Testing & eval curation. Curating data with annotations and being able to export these annotations to create unit & integration tests.
  2. Various efficiency/usability improvements for the core library (see planned capabilities for more details). This includes:
    1. Fully typed state with validation
    2. First-class support for retries + exception management
    3. More integration with popular frameworks (LCEL, LLamaIndex, Hamilton, etc...)
    4. Capturing & surfacing extra metadata, e.g. annotations for particular point in time, that you can then pull out for fine-tuning, etc.
  3. Cloud-based checkpointing/restart for debugging or production use cases (save state to db and replay/warm start, backed by a configurable database)
  4. Tooling for hosted execution of state machines, integrating with your infrastructure (Ray, modal, FastAPI + EC2, etc...)
  5. Storage integrations. More integrations with technologies like Redis, MongoDB, MySQL, etc. so you can run Burr on top of what you have available.

If you want to avoid self-hosting the above solutions we're building Burr Cloud. To let us know you're interested sign up here for the waitlist to get access.

🤲 Contributing

We welcome contributors! To get started on developing, see the developer-facing docs.

👪 Contributors

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

burr-0.9.0.tar.gz (9.2 MB view details)

Uploaded Source

Built Distribution

burr-0.9.0-py3-none-any.whl (4.0 MB view details)

Uploaded Python 3

File details

Details for the file burr-0.9.0.tar.gz.

File metadata

  • Download URL: burr-0.9.0.tar.gz
  • Upload date:
  • Size: 9.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for burr-0.9.0.tar.gz
Algorithm Hash digest
SHA256 c2baf4afd97e15b8b429c670bea3c8b5f286a10ac5beeae9ac2ef4b11b8b2554
MD5 0513533af4ae3df63eb45cc369bce659
BLAKE2b-256 653800b44d54c37f35813232167f5745ca37eac9ad13574e81e1f4e685acf5d5

See more details on using hashes here.

File details

Details for the file burr-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: burr-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for burr-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 16bf90f6da1659b995c740e71c9d7b464e440dff4ebded4cc0641f5c0d4ecb18
MD5 75ebf38919342d56cb7d0695ac952c54
BLAKE2b-256 f09bfba55f69cb0c12c303eccff15e444eca4b511b7b5f61cdce83491b92a329

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page