FiveM servers
Updated Oct 13, 2026 Open the tool
Linking a FiveM server lets you push a finished resource from zoov.dev straight into that server's resources folder and start it, without downloading and uploading a ZIP by hand. Linking uses the free zoovdev_sync resource and a one-time token. Deploying needs a Pro or Max subscription.
Where deploy lives
Deploy is available wherever a resource ZIP is produced: the "Deploy to Server" button in the Model to Prop editor (/app/convert?to=ydr and the Prop, Weapon and Clothing creators) and the "Deploy" button in the Code Agent at /app/code. Both open the same "Deploy" dialog with a "Server" dropdown ("Select a linked server").
If you have no linked server yet, the dialog closes and shows "Link a FiveM server before deploying a resource", then opens the "Zoovdev Sync Setup" guide described below.
Weapon and clothing exports are subscriber-only, so their "Deploy to Server" button is disabled together with "Export Resource" until the plan gate is met.
Deploying from the workspace (2026-09-19, not released)
The workspace has one deploy dialog for everything (src/lib/workspace/deploy/, opened with deploy.show(source) and mounted once by the (app) layout). It deploys a Code project (the rocket beside Download in /app/code) and, new, a model resource: a conversion folder in the library has Deploy to server in its menu and a Deploy button on each version in its project window (the Versions dialog until 2026-10-02), so a prop no longer has to be downloaded and carried to the server by hand. The resource ZIP is the one Download resource builds, built when Deploy is pressed.
The dialog lists the linked servers as rows (state dot, "Online", "Link again", "No answer", "this machine only", "seen 4m ago"), has Link another server, and Start it after (on by default). With no server linked it opens on the four linking steps instead of sending the person to the legacy site. While it runs it says what it is doing: "Building the resource", "Packing the files", "Uploading · 42%", "Sending to manualsync <id> in a row that copies on a click ("Run this in its console within 15 minutes") and the button becomes Deploy again. A server that refuses its token says to link it again. Below Pro the dialog says "Deploying is part of Pro and Max" with Plans; linking stays free.
It tries the server on the same machine first (127.0.0.1:<port>, then the server address itself when the browser is allowed to call it), one address at a time, and only then asks the site to push. The legacy dialog ran the local and the site routes together and asked 127.0.0.1 and localhost at once, so a reachable server could be deployed to and restarted twice.
Linking a server (token flow)
Linking a server is done from the "Zoovdev Sync Setup" dialog ("Link a FiveM server to your account so you can deploy resources directly from zoov.dev."). It has four steps:
- "Download the Zoovdev Sync resource". Click "Download zoovdev_sync.zip" and extract it anywhere inside your server's
/resourcesfolder or a subfolder. - "Setup permissions in your server.cfg". Paste this line into
server.cfgorpermissions.cfg:add_ace resource.zoovdev_sync command allow. - "Setup the resource". Add
ensure zoovdev_synctoserver.cfgorresources.cfg, or typerefreshin the server console and start the resource directly. - "Link your account". Click "Generate token". The dialog shows a command like
sync <token>; copy it and run it in your FiveM server console (not in-game chat).
The token is single use and expires 10 minutes after it is generated. The dialog counts down ("Expires in 9:42") and polls every 2 seconds. Status text: "Waiting for sync command" while pending, "Server linked successfully" when done, "Token expired" if time ran out ("This token expired before the server completed sync. Generate a new one to try again."). "Generate new token" creates a fresh one at any time.
When the server runs sync <token>, it calls zoov.dev with its own sync token, port and public IP, and zoov.dev records the server under your account with its name, endpoint (http://<ip>:<port>), link time and last-seen time. A server that was linked before is updated in place rather than duplicated.
Errors the server console may print from zoov.dev: "Invalid link token", "Link token has already been used", "Link token has expired". Generate a new token and try again.
Plan requirement
Deploying requires a Pro or Max subscription. Users below that can open the Deploy dialog and see their linked servers, but the footer reads "Pro required to deploy" with "Upgrade to deploy resources directly to your FiveM server." and an "Upgrade to Pro" button that goes to /app?plans=all. The "Deploy" button is hidden.
Linking a server itself has no plan check. Downloading zoovdev_sync.zip is free. Standard users can link a server and use the resource but cannot deploy from the site until they upgrade.
A Pro Team seat counts as Pro for this gate, because joining a team sets the Pro flag on the member's account.
Deploying a resource
Deploying a resource works like this after you press Deploy in the workspace's Deploy dialog:
- zoov.dev stages your resource as a ZIP in temporary storage under your account. The link the server fetches it from is valid for 15 minutes.
- Your browser first tries to hand the resource to a server on the same machine (
127.0.0.1:<port>, then the server's own address when the browser is allowed to call it), one address at a time. - Only if that does not work, zoov.dev contacts the server's public endpoint (
/zoovdev_sync/deploy) with a 30 second timeout. - The
zoovdev_syncresource downloads the ZIP, unpacks it into the resources folder and, withStart it afteron (the default), starts or restarts it.
Success reads "Deployed". If the site cannot reach the server, the dialog says "The site could not reach the server, so the server fetches it. Run this in its console within 15 minutes." with manualsync <deployment id>. The server then fetches the staged ZIP itself. After 15 minutes the console reports "No download URL stored for this deployment, it may have already expired" and you must deploy again.
Every attempt is logged as a deployment with a success or failed status and the error message. The old site's deploy dialog, which tried the local and the site routes at the same time, and its routes are gone (the dialog on 2026-09-26, the routes on 2026-10-13); the workspace dialog is the only one.
Resource names and artifacts
The resource name is taken from the export and sanitized: lowercased, file extension removed, anything other than a-z, 0-9, _ and - replaced with _, leading and trailing underscores removed. An empty result becomes resource. Name your export the way you want the folder to be called.
The staged artifact is the same ZIP you would download: a folder with fxmanifest.lua at the root and the game files under stream/. For props that include a YTYP, the manifest already declares it. Deploy artifacts are stored under your account only; nobody else can fetch them, and the download link stops working after 15 minutes.
The zoovdev_sync resource is downloaded from zoov.dev storage. The site can report the latest version (its upload date) so the dialog can tell you when a newer build exists (where this is surfaced: verify).
Image to prop jobs started through the FiveM prop API can also be converted to a YDR resource and auto-deployed to a linked server when the generation finishes. That path is used by API integrations (Max plan API keys), not the website buttons. Since 2026-09-23 each of these jobs leaves the same trail in the staff prop channel as a prop generated in a browser (what was asked for, then whether it was queued or refused and why), and a picture Meshy turns down comes back as a sentence the caller can act on instead of "Failed to start 3D generation". See the API keys doc for the fields.
Server status and auth errors
Server status is shown when the site probes each linked server: "healthy" (the server answered the auth check), "relink" ("Server auth check rejected the stored sync token"), "offline" (unreachable within 5 seconds), or "unknown" ("zoov_sync auth check endpoint is not available on this server", usually an old resource version).
If a deploy returns an unauthorized error, the message is extended with "Re-link the server or update zoov_sync auth to accept Authorization or X-Zoov-Sync-Token." Fix: update zoovdev_sync to the latest ZIP, restart it, then run a new sync <token> from the setup dialog.
If the endpoint is blocked with "Endpoint blocked for security reasons", the server registered with a private or local IP (for example 192.168.x.x, 10.x.x.x, 127.0.0.1). zoov.dev cannot reach it from the internet; use the local deploy path by opening zoov.dev on the same machine, or use manualsync.
Security notes for server owners
Security notes worth telling every server owner:
- The
sync <token>link token is single use and dies after 10 minutes. Sharing it is low risk, but only paste it into your own server console. - After linking, your server's sync token is stored by zoov.dev and is sent to your browser only for the server you deploy to, when the deploy starts, so the browser can hand the resource to a server on the same machine (since 2026-10-13 the old server list that sent every token is gone). Anyone with that token and access to your server's HTTP port could push resources to your server. Do not share screenshots of the deploy dialog's network requests, and re-link if you suspect a leak (whether the resource issues a new sync token on every
sync: verify). add_ace resource.zoovdev_sync command allowgrants the resource permission to run console commands (it needs this toensureandrestartresources). Review the resource before installing it if your policy requires it.- Deploy pushes files into your resources folder and can restart resources. Only link servers you own or administer.
- The server's HTTP port must be reachable from the internet for direct deploys. If you keep it firewalled, deploys still work from a browser on the same machine or through
manualsync. - zoov.dev refuses to contact private, loopback and link-local addresses, and only speaks
httporhttpsto registered endpoints. - Uploaded resources are staged under your account and expire after 15 minutes. Deployment history stays on your account.
Common questions
The deploy dialog says to sign in. Since 2026-09-22 the message has a Sign in link right after it; it signs you in and brings you back to the same page. Open the deploy dialog again afterwards.
Do I need a paid plan to link my server?
No. Linking and the zoovdev_sync resource are free. Deploying from the site needs Pro or Max; below that the dialog says "Pro required to deploy".
Where do I run the sync command?
In the FiveM server console (txAdmin console or the server terminal), not in-game chat. The command is sync <token> and the token expires 10 minutes after you click "Generate token".
The dialog says "Token expired".
The server did not run the command in time. Click "Generate new token" and run the new sync command. Make sure zoovdev_sync is started (ensure zoovdev_sync) first.
Deploy failed and shows a manualsync command.
zoov.dev could not reach your server directly. Run manualsync <id> in the server console within 15 minutes; the server pulls the staged ZIP itself. After that window, deploy again.
My server shows "relink" or deploy says unauthorized.
The stored token no longer matches the server. Download the latest zoovdev_sync.zip, restart the resource and run a fresh sync <token> from the setup dialog.
Will deploying overwrite my existing resource?
The ZIP is unpacked into the resources folder under the sanitized resource name, replacing files of the same name, and the resource is restarted when Start it after is on. Details of how zoovdev_sync handles existing folders: not documented, ask staff.
Can I link more than one server? Yes. Each server is a separate row on your account, and the Deploy dialog lets you pick which one to target.
Languages
Since 2026-09-20 this part of the site is available in English, French, German, Spanish, Portuguese, Polish and Dutch. It follows the browser's language on a first visit, and the language menu (the icon beside the profile in /app, or in the top navigation on public pages) changes it. Nothing about how it works, what it costs or what a plan includes differs by language; only the words do. File names, format names (GLB, YDR, YTD), product and model names, code, and some error lines that come from the server stay in English. Details and known gaps: Languages and translation.