beet-cli

beet-cli is the beet command-line tool, and it is itself a beet runtime whose commands are declared in an entry document. Rather than treating the CLI as a special case, every command is an [Action] served as a route on a beet_router backed by a CliServer. So beet --help lists the routes and beet <command> dispatches one, the same dispatch a beet HTTP server would use. The command line is just another interface over the same routing tree.

CommandDescription
serveServe a no-code site over http/tui/ssh
run-wasmCargo runner for wasm32-unknown-unknown targets
build-wasmBuild a package for the browser (eg the beet-min/beet-full browser binaries)
export-staticWrite a site's static dist/
export-pdfRender a route to PDF
qrcodeGenerate a QR code (qrcode feature)
cargo binstall beet-cli    # or cargo install beet-cli --all-features
beet --help

Running an entry is the zero-command path: beet discovers a main.bsx by walking the cwd and its ancestors, --entry names an entry file or a directory holding one, and --required-features=a,b verifies the installed binary was compiled with those cargo features (entries also declare their own requirements with <RequireCfg>):

beet --entry=examples/hello
beet --entry=examples/perceive_act/main-v1.bsx

A flag no command takes is refused rather than ignored: every CliServer is strict by requirement, so a typo like deploy --elevate answers did you mean --elevated? before anything runs, while a site served over http keeps accepting whatever a link carries (the beet_router README, Params).