I’m excited to introduce Pesto, a new open-source tool designed to seamlessly bridge the gap between Roblox Studio and Visual Studio Code. (AND EVERY OTHER IDE)
If you have ever felt that existing synchronization tools were too heavy, difficult to configure, or didn’t handle Instance Properties and Attributes the way you needed, Pesto was built for you. It is a robust Rojo alternative focused on simplicity and data fidelity.
Showcase
Normal Export
In this preview I do the following:
Export my roblox project to VSC.
Add a part.
Rename the part .
And then Export to VSC again.
Normal Import
In this preview I do the following:
Rename a part in VSC.
Import the change back into Roblox.
Smart Sync
In this preview I do the following:
Rename a part in VSC.
Change a script inside that part in VSC.
View the changes being synced to roblox automatically.
While other tools focus primarily on scripts, Pesto aims for complete Instance synchronization.
True Bi-Directional Sync: Work where you are most comfortable. Edit scripts in VS Code and push to Roblox, or change properties in Studio and pull them back to your local file system.
Full Property Serialization: Pesto goes beyond just .luau files. It synchronizes Properties, Attributes, and Tags for every Instance. (Supports complex types like Vector3, CFrame, Color3, and more!)
Smart Diffing: Pesto intelligently checks for changes before updating, ensuring your workflow remains fast and your console spam-free.
Start the Pesto Server by clicking the button on the bottom right in VSC (If you downloaded the .exe file directly, please view the README.md included in the repository)
In Roblox Studio press Export.
Now you can start Auto Sync or use any other Pesto features included in your purchase.
Start the Pesto Server by clicking the button on the bottom right in VSC (If you downloaded the .exe file directly, please view the README.md included in the repository)
In Roblox Studio press Export.
Now you can start Auto Sync or use any other Pesto features included in your purchase.
Install Pesto Lite [Free]
Download the plugin.
You can download the plugin here.
Start the Pesto Server by clicking the button on the bottom right in VSC (If you downloaded the .exe file directly, please view the README.md included in the repository)
In Roblox Studio press Export.
Now you can start Auto Sync or use any other Pesto features included in your purchase.
How It Works
Pesto uses a local Python server to communicate with a custom Roblox Studio plugin.
Pesto runs completely locally.
Pesto also uses helpers developed in Go for super high speeds during Import and Export!
Yes! Rojo focuses mostly on just scripting, this plugin has EVERYTHING, all instances, all classes, and there is a Visual Studio Code plugin available right now that also makes everything LOOK like the roblox editor. Making it easier to switch and making it able to use things like CoPilot in VSC to code your project.
Im updating it daily so if you buy and download it id recommend running pesto Update each time.
I previously used the instances name’s to track if they where updated, but im now moving to a PestoID attribute system, this way you should be able to move, rename etc with instances and it should update accordingly.
If you need any help installing Pesto im happy to help and explain.
Heres a screenshot showing how it looks in Visual Studio Code
I just released version 0.1.0, this version changes the tracking of instances from names to PestoID.
This way you can rename, move, and edit properties of instances without them being duplicated or other things happening. Here is a more ordered list of additions and updates:
Additions & Changes
pesto Update command to easily pull and update pesto.
pesto Uninstall command to easily uninstall and remove pesto from your system.
Pesto now tracks instances with PestoID and PestoTracked tags and attributes.
This means that instances can now be renamed, moved, properties changed and even deleted without Pesto losing track of wich instance this was.
Roblox Project Explorer extension for Visual Studio Code now allows you to drag files wich automatically updates their parent.
And much much more.
Upcoming Changes
Live Sync (Updating relevant instances automatically)
Smarter diffing (Only sending data for actual changes, not just all data everytime)
Progress bar (To display how long it will take before its done)
Extra filter for Pesto logs (To be able to see how long it will take before importing or exporting is done)
Questions
If you have any questions please feel free to reach out in the replies.
I just released version 0.1.1, this is a smaller update implementing some of the upcoming promised features:
Additions & Changes
Progress Bar Now whenever pressing import it shows you what the server is doing in the terminal, before you saw nothing and had to wait and hope it worked. Now it shows exactly whats happening.
Version checking, the plugin now verifies if its compatible with the installed version of Pesto, this is to make sure that whenever I update one or both they still work together.
Currently In Progress
Right now im working on implementing the filter for your roblox Output, this now gets very cluttered very fast.
Upcoming Changes
Live Sync (Updating relevant instances automatically)
Smarter diffing (Only sending data for actual changes, not just all data everytime)
Extra filter for Pesto logs (To be able to see how long it will take before importing or exporting is done)
Versioning
I also added the first Version tag to the github Repo (I forgot to do this before )
Questions
If you have any questions please feel free to reach out in the replies.
Just make a gamepass and prompt the user to buy it before they can use or connect with the plugin. Can also make tiers and free trial with this. (Pls free)
Why not? Just make the plugin free on Creator Store and make an if statement like this:
local MarketplaceService = game:GetService("MarketplaceService")
local hasPurchased = MarketplaceService:UserOwnsGamePassAsync(player.UserId, 12345678)
if not hasPurchased then
MarketplaceService:PromptGamePassPurchase(player, 12345678)
end
I just released version 0.1.2!! This version introduces Smart Importing!
Additions & Changes
Smart Import Previously the Import function could take 1-5 minutes based on the size of a project. Now with Smart Import it will take around 20 seconds for the entire process and all changes to import to roblox.
Every print made my Pesto will now be prefixed with [Pesto] there currently is no better way to filter print statements in the terminal.
Currently In Progress
Smart Export is currently being looked into.
Upcoming Changes
Live Sync (Updating relevant instances automatically)
Settings Menu
Versioning
Version 0.1.2 is also tagged in Github now.
Questions
If you have any questions please feel free to reach out in the replies.
Looks great! Could you say make documentation on how to install this for beginnerss? You can use something like Scribe to do it automatically whilst you install it.
The README.md file in the github repository explains how to install and use it. Along with additional information. If you have any other questions about how to install ill be here to answer them!
I just released version 0.1.3!! This version introduces Auto Sync!
Additions & Changes
Auto Sync You can now enable or disable Auto Sync this pushes and pulls all new changes automatically for you. This way you can even use things like Team Create and Pesto at the same time. Note: Team Create has not yet been tested.
Windows Installer has been updated to match the Linux/MacOs Installer
The Visual Studio Code Extension has also been updated to now correctly display Vector3 properties. In the future this will also include Editing these values, please wait for version 0.1.5 to release.
Currently In Progress
Smart Export is currently being looked into.
Pesto Terminal is currently being worked on, to provide a better error logging and clearer output in the users terminal overall.
Vector3/Color3/CFrame/ETC... support in the Visual Studio Code Extension
Upcoming Changes
Settings Menu
Versioning
Version 0.1.3 is also tagged in Github now.
Questions
If you have any questions please feel free to reach out in the replies.