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