A 3D editor built for and with Bevy. Very early in dev, expect bugs and changes! A BSN-friendly branch exists on the bsn-editor branch (the flow is to read/write to the BSN AST and then sync to the ECS for rendering the UI and viewport).
We have also recently refactored our UX/UI to be very similar to the official Bevy Editor Figma design, to keep things consistent. Link here
From bevy_editor_prototypes repo:
2026-04-09.21-37-20.mp4
2026-04-09.21-39-12.mp4
2026-04-09.21-40-19.mp4
2026-04-09.21-46-33.mp4
- Brush-based geometry draw, edit, and CSG-combine convex brushes with vertex/edge/face/clip editing modes
- Material system VERY wip - texture browser, material definitions with ORM auto-detection, per-face application
- Terrain heightmap sculpting and texture painting, very WIP :)
- Scene serialization save/load scenes in the
.bsnformat with full asset references. Older.jsnscenes are migrated on open. - Transform tools translate, rotate, scale with grid snapping and axis constraints
- Undo/redo full command history - some bugs atm with this
- Extensible register custom components, add inspector panels, integrate with your game
Install cmake, via package manager, or VisualStudio on Windows
Download a signed release bundle, or install all required executables from source:
cargo install --git https://github.com/jbuehler23/jackdaw jackdaw --lockedTake the release bundle if you can. It ships the prebuilt SDK, so you can
create a project straight away; cargo install builds that SDK first,
which is about half an hour, once per Jackdaw version. Either way your
project's own first build is around nine minutes, because it compiles Bevy
like any other Bevy project. Rebuilds after that are 1 to 4 seconds.
This installs jackdaw, jd, jackdaw-runner, and
jackdaw-rustc-wrapper. Open Jackdaw and use New Game or Import Bevy
Project; the import preview shows every proposed change before applying it.
The same flows are available from the terminal:
jd new my-game && jd open my-game # create
jd import /path/to/game # preview integration for an existing game
jd import /path/to/game --apply
jd doctor --project /path/to/game # why isn't this working?
jd upgrade /path/to/game --apply # after a Jackdaw updateImport never edits your Cargo manifest, lockfile, toolchain, or target/, so
cargo run keeps behaving exactly as it did.

Jackdaw is a standalone editor. Game applications depend only on
jackdaw_runtime. To build a custom standalone editor, depend on
jackdaw_editor:
use bevy::prelude::*;
use jackdaw_editor::prelude::*;
fn main() -> AppExit {
App::new()
.add_plugins((
DefaultPlugins.set(editor_window_plugin()),
EnhancedInputPlugin,
PhysicsPlugins::default(),
JackdawEditorPlugins::default(),
))
.run()
}Runtime extensions use the focused jackdaw_extension crate and install as
signed .jdext bundles. In precompiled/shared-SDK builds, install, update,
disable, and uninstall take effect without restarting; superseded native
mappings are reclaimed when Jackdaw exits.
To load a scene you authored into your own game, depend on jackdaw_runtime
and spawn a JackdawSceneRoot:
use bevy::prelude::*;
use jackdaw_runtime::prelude::*;
fn spawn_scene(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn(JackdawSceneRoot(asset_server.load("scene.bsn")));
}See the examples for more advanced usage.
| Key | Action |
|---|---|
| RMB + Drag | Look around |
| WASD | Move |
| Q / E | Move up / down |
| Shift | Double speed |
| Scroll | Dolly forward / back |
| F | Focus selected |
| Key | Action |
|---|---|
| Esc / R / T | Translate / Rotate / Scale mode |
| B / C | Draw brush (add / cut) |
| 1-4 | Brush edit: Vertex / Edge / Face / Clip |
| Ctrl+D | Duplicate |
| Delete | Delete selected |
| Ctrl+Z / Ctrl+Shift+Z | Undo / Redo |
| Ctrl+S | Save scene |
For the full shortcuts reference, see the book.
See CONTRIBUTING.md for development setup and PR guidelines.
Dual-licensed under MIT or Apache-2.0, at your option.