Hey everyone! ![]()
I hope you like it!
This is my first post on DevForum and I have a big surprise for you!!
I’d like to share a tool I’ve been building: Yeet, a bidirectional code sync system between Roblox Studio and external editors like VS Code and Antigravity.
Upfront disclaimer
Yeet was built using vibe coding (AI-assisted, fast prototyping, heavy iteration). What that means:
- It works and I’m using it in real projects, but it likely has bugs and edge cases I haven’t hit yet.
- Anything you report will be fixed as fast as I can — open an issue on GitHub or reply to this thread.
- Current version is v0.3.1, still early-stage. Expect frequent changes.
I’d rather be honest about that from the start than oversell it.
What is Yeet?
Yeet lets you edit your scripts in VS Code (or Antigravity) and have changes reflected in Studio in real time — and the other way around. Genuinely bidirectional sync.
The on-disk folder layout is compatible with Rojo, so if you already use Rojo, you’ll feel at home. But Yeet is not a Rojo wrapper — it’s a separate implementation with slightly different goals:
- Full-tree sync in both directions (not just disk → Studio).
- 3-pane hunk merge inside Studio when there’s a conflict.
- Reverse bootstrap: take an existing Studio project and generate the on-disk structure straight from the plugin UI.
How it works under the hood
Yeet has three components that talk to each other:
- Rust daemon — runs locally and acts as the sync brain. It watches the filesystem, keeps state, and exposes a WebSocket on port
34872. Written in Rust for performance and reliability (tokio,tungstenite,rmp-serde). - Luau plugin (
--!strict) — installed in Roblox Studio. Connects to the daemon over WebSocket, pushes Studio-side changes, and applies disk-side changes. - TypeScript extension (strict) — for VS Code and Antigravity. Handles the editor experience, commands, and IDE integration.
Current wire format is JSON (Phase 0); plan is to migrate to MessagePack to cut overhead.
Mini documentation
Install
1. Daemon (required) Grab the daemon binary from the latest GitHub release:
GitHub - conception-world/Yeet · GitHub
Drop yeet-daemon somewhere accessible (project folder or PATH). It runs in the background and handles the sync.
2. Studio plugin Install from the Creator Store:
https://create.roblox.com/store/asset/126422641897714/Yeet
3. VS Code / Antigravity extension Install from the Marketplace:
Yeet - Visual Studio Marketplace
Basic usage
- Open your project in VS Code (or Antigravity).
- Start the daemon (the extension can do this for you).
- Open Roblox Studio and enable the Yeet plugin — it will connect to the daemon.
- Edit a
.lua/.luaufile on either side → the change shows up on the other. - On conflict, the plugin opens a 3-pane view (disk version, Studio version, merged result) so you can resolve it manually.
Starting from scratch or from an existing project
- New project: create the folder structure following the Rojo layout (
src/,default.project.json, etc.) and let Yeet populate Studio. - Existing Studio project: use Reverse Bootstrap from the plugin UI. It generates the on-disk files from the current DataModel.
Useful links
Full documentation: Yeet
Source code (GitHub): GitHub - conception-world/Yeet · GitHub
Studio plugin: https://create.roblox.com/store/asset/126422641897714/Yeet
VS Code / Antigravity extension: Yeet - Visual Studio Marketplace
How I’m using Yeet in my own projects
I currently use Yeet to develop several games in parallel, and this is one of the tool’s biggest strengths in my workflow.
1. Instant code migration between Studio and editor
Before Yeet, every time I wanted to work on a project outside of Studio I had to download a copy of the place, export scripts, set up Rojo, and so on. With Yeet I just connect and all the code goes straight into Antigravity — no manual export step. That dramatically lowers the friction of starting (or picking back up) work on any project.
2. Reusing packages without Rojo + Wally
This was the biggest win for me. I used to rely on Rojo + Wally to manage packages, and that added a lot of complexity whenever I spun up a new project.
My workflow today is much simpler:
- I keep one central folder with all my packages already organized.
- When I start a new project (or want to bring a package into another project), I use a few Claude Code skills to automatically migrate packages from one folder to another.
- Yeet then syncs everything into Studio.
The result: zero Wally configuration, zero Rojo setup, zero headaches when creating new projects. I literally open a new project, drop in the packages I need, and I’m already coding.

