Skip to content

Repository files navigation

beet

An Atmospheric OS for homegrown tech

Crates.io version Download docs.rs docs

Beet is an operating system that lets you access your data and tools wherever you like, however you like.

Beet is built on the Bevy Engine and its Entity Component System, and user data stores are designed around the ATProto PDS. A repo's entry point is main.bsx, the data driven entry point to the program, and a runtime does nothing until given one. See the website documentation for more info.

🚧 Mind your step! 🚧

Beet is under construction, if this project is of interest please come and say hi in the Beet Roomy space.

Crates

The beet project closely resembles the bevy project with modules divided into crates which can be selected via feature flags.

readiness meter

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

The beet crate re-exports the crates below behind feature flags. Each can also be used standalone.

Core

Cross-platform primitives shared by every other crate.

Crate Status Description
beet_core 🦢 Cross-platform types, extension traits and testing
beet_net 🐣 Transport agnostic networking
beet_action 🐣 Entities as functions
beet_ui 🐉 Interface agnostic XML-like UI trees
beet_router 🐉 Transport agnostic routing
beet_infra 🐉 Infrastructure as code, built on OpenTofu
beet_async 🐉 Vendored bevy_async bridge for wasm and exclusive world access

Agents & Behavior

Behaviors built on beet_action, for paradigms like behavior trees, utility AI and agentic systems.

# #[cfg(feature = "action")]
# async fn run() -> beet::prelude::Result {
use beet::prelude::*;

let outcome = AsyncPlugin::world()
  .spawn((Sequence::new(), children![
    Log::new("hello"),
    Log::new("world"),
  ]))
  .call::<(), Outcome>(())
  .await?;
# Ok(()) }
Crate Status Description
beet_thread 🐉 Multi-actor chat for humans and agents
beet_spatial 🐉 Spatial actions: movement, steering and robotics
beet_ml 🐉 Machine learning actions: embeddings and RL

Apps & Tooling

Crate Status Description
beet-cli 🐉 The primary entrypoint for a vanilla beet app
beet_extra 🐉 Extra components and systems for high-level examples

Bevy Versions

bevy beet
0.19 0.0.9
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

Installation

Install the beet cli with cargo binstall (or plain cargo install), with --all-features for the full spectrum of examples:

cargo binstall beet-cli --all-features
# or from a checkout, building every capability in
cargo install --path crates/beet-cli --all-features

Every example documents itself with a beet command, eg:

beet --main=examples/hello

--features verifies the installed binary was compiled with those cargo features, and entries declare their own requirements with <RequireCfg>, so a leaner install fails fast with the full missing list instead of unresolved tags.

Local Development

Running

When editing beet itself, run the cli from source: cargo run -p beet-cli --features=feat1,feat2 -- <args>.

Note that testing all 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.

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

About

A malleable engine built on interoperable standards.

Topics

Resources

Contributing

Stars

134 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages