Beet is a framework for building user-modifiable applications, like smalltalk or hypercard. Everything from the CLI to client applications is a""Bevy App"", and all structure and behavior is written in Entity Component System architecture.
π§ 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.
General patterns and tools for application development.
| Crate | Status | Description |
|---|---|---|
beet_core |
π¦’ | Core utilities and types for other beet crates |
beet_net |
π£ | Transport agnostic networking for bevy applications. |
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 |
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 |
π | Transport agnostic routing for bevy applications |
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 |
| Crate | Status | Description |
|---|---|---|
beet_clanker |
π | Structured context and tool calling for llms |
beet_examples |
π | Bits and pieces for substantial beet examples |
emby |
π | the beetmash ambassador |
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 |
- Rust nightly
- Just
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