voxell-tech/velyst

Interactive Typst content creator using Vello and Bevy.

Rust

270

107 commits

updated Sep 22, 2026

See the code

README

Velyst

License Crates.io Downloads Docs CI Discord

Interactive Typst content creator using Vello and Bevy.

hello world

Associated example here!

Quickstart

Velyst renders Typst content using Typst functions. This example shows you how to render a simple white box in the center of the screen. To get started rendering a simple box, create a function inside a .typ file:

#let main() = {
  place(center + horizon)[
    #box(width: 10em, height: 10em, fill: white)
  ]
}

Then, in your .rs file, load your Typst asset file and register your function.

use bevy::prelude::*;
use bevy_vello::prelude::*;
use velyst::prelude::*;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            bevy_vello::VelloPlugin::default(),
            velyst::VelystPlugin,
        ))
        .register_typst_func::<MainFunc>()
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((Camera2d, VelloView));

    commands.spawn((
        VelystFunc::new(
            asset_server.load("typst/box.typ"),
            MainFunc::default(),
        ),
        WorldScene::default(),
    ));
}

typst_func!(
    "main",
    #[derive(Default)]
    struct MainFunc {},
);

Associated example here!

Interactions

Velyst is also compatible with bevy_ui interactions.

game ui

Associated example here!

Join the community!

You can join us on the Voxell discord server.

License

velyst is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

bevy
typst
vector-graphics
vello

Contributors

nixonyh

100 commits

Omnivex3

2 commits

Sheerwin02

2 commits

Languages

Rust

100.0%

voxell-tech/velyst

Interactive Typst content creator using Vello and Bevy.

Rust

270

107 commits

updated Sep 22, 2026

See the code

README

Velyst

License Crates.io Downloads Docs CI Discord

Interactive Typst content creator using Vello and Bevy.

hello world

Associated example here!

Quickstart

Velyst renders Typst content using Typst functions. This example shows you how to render a simple white box in the center of the screen. To get started rendering a simple box, create a function inside a .typ file:

#let main() = {
  place(center + horizon)[
    #box(width: 10em, height: 10em, fill: white)
  ]
}

Then, in your .rs file, load your Typst asset file and register your function.

use bevy::prelude::*;
use bevy_vello::prelude::*;
use velyst::prelude::*;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            bevy_vello::VelloPlugin::default(),
            velyst::VelystPlugin,
        ))
        .register_typst_func::<MainFunc>()
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((Camera2d, VelloView));

    commands.spawn((
        VelystFunc::new(
            asset_server.load("typst/box.typ"),
            MainFunc::default(),
        ),
        WorldScene::default(),
    ));
}

typst_func!(
    "main",
    #[derive(Default)]
    struct MainFunc {},
);

Associated example here!

Interactions

Velyst is also compatible with bevy_ui interactions.

game ui

Associated example here!

Join the community!

You can join us on the Voxell discord server.

License

velyst is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

bevy
typst
vector-graphics
vello

Contributors

nixonyh

100 commits

Omnivex3

2 commits

Sheerwin02

2 commits

Languages

Rust

100.0%