Skip to content

mrchantey/beet

Repository files navigation

beet

A malleable application framework

Crates.io version Download docs.rs docs

Beet is a framework for building technologies that can people can share, access and make their own like other forms of folk culture like music and story. Beet uses the Entity Component System architecture of Bevy, a modular game engine, to provide a common agnostic paradigm for state and behavior across domains like web, games and robotics.

🚧 Mind your step! 🚧

Beet is under construction, if this project is of interest please come and say hi in the Beetmash Discord Server.

readiness meter

  • 🦢 ready to go: documented and tested
  • 🐣 near stable: incomplete docs
  • 🐉 highly experimental: here be dragons

Beet crates fall into a few main categories.

Utils

General patterns and tools for application development.

Crate Status Description
beet_utils 🦢 Base level utilities for beet crates
beet_core 🦢 Core utilities and types for other beet crates
beet_net 🐣 Cross-platform networking utilities
sweet 🐣 A delightful cross-platform test runner
sweet-cli 🐣 A delightful cross-platform test runner

Control Flow

Control flow crates for use in behavior paradigms like behavior trees, utility AI or agentic systems.

world
  .spawn((
    Name::new("My Behavior"),
    Sequence,
    children![
      (
        Name::new("Hello"),
        EndWith(Outcome::Pass),
      ),
      (
        Name::new("World"),
        EndWith(Outcome::Pass),
      ),
    ],
  ))
  .trigger_target(GetOutcome)
  .flush();
Crate Status Description
beet_flow 🦢 An ECS control flow library
beet_spatial 🐣 Spatial actions built upon beet_flow
beet_ml 🐉 Machine Learning actions built upon beet_flow
beet_sim 🐉 Game AI simulation primitives built upon beet_flow

Web

Crates for building and deploying web apps. These crates are very experimental and changing frequently.

#[template]
fn Counter(initial: i32) -> impl Bundle {
  let (get, set) = signal(initial);

  rsx! {
    <button onclick=move |_| set(get() + 1)>
      Cookie Count: {get}
    </button>
  }
}
Crate Status Description
beet_dom 🐉 Utilities for dom rendering and interaction
beet_parse 🐉 Parsers for various text and token formats
beet_rsx 🐉 An Astro inspired templating system built with bevy
beet_rsx_combinator 🐉 JSX-like parser combinator for Rust
beet_router 🐉 ECS router and server utilities
beet_build 🐉 Codegen and compilation tooling for beet
beet_design 🐉 Design system and components for beet rsx
beet-cli 🐉 Tools for building and deploying beet apps
beet_site 🐉 The beet website, built with beet

Experiments

Crate Status Description
beet_agent 🐉 ECS agentic workflow patterns
beet_examples 🐉 Bits and pieces for substantial beet examples
emby 🐉 the beetmash ambassador
beet_mcp 🐉 Experimental mcp server

Bevy Versions

This chart is for matching a bevy version against a particular beet version.

bevy beet
0.17 0.0.7
0.16 0.0.6
0.15 0.0.4
0.14 0.0.2
0.12 0.0.1

Local Development

Required Tools

  • Rust nightly
  • Just

Running

Note that testing all crates involves compiling many crates, doing so from scratch usually results in a stack overflow in the rust compiler. To prevent this either run with RUST_MIN_STACK='some_gigantic_number', or just keep re-running the command until its all compiled. I usually just do the latter.

git clone https://github.com/mrchantey/beet
cd beet
just init-repo
just test-all

About

A malleable application framework

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 3

  •  
  •  
  •