beet 0.0.8

Malleable Application Framework
docs.rs failed to build beet-0.0.8
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: beet-0.0.7

beet

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_core ðŸĶĒ Core utilities and types for other beet crates
beet_net ðŸĢ Cross-platform networking utilities

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

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

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