START HERE·YOUR FIRST RESOURCE·Verified June 2026 · Lua 5.4 · ox_lib 3.x
Learning with an AI assistant?
Copies this whole lesson - every step, code block, and the exact console errors - plus 2026 ground rules (no lua54 'yes', Cfx.re Portal, correct callback signatures) as a ready-to-paste mentor prompt.
Start Here · Your first resource

fxmanifest.lua: the file that names your resource

Last lesson you learned that a resource is just a folder. But a folder full of code does nothing on its own. Something has to tell FiveM, this folder is mine, here are my files, run them. That something is one small file called fxmanifest.lua. It is the label card that turns a plain folder into a resource FiveM will actually load. In this lesson you read that file line by line until none of it is a mystery.

You'll learn
What fxmanifest.lua is, why every resource needs one, and what each line in it controls.
Time
~12 minutes
Difficulty
Beginner. No code experience needed.
You need
Your practice resource qu_hello from the last lesson, a text editor, and a server you can restart.
BEFORE YOU START

What fxmanifest.lua is

fxmanifest.lua is a single required file that sits at the top, or root, of every resource folder. Root just means it is the first file inside the folder, not buried in a subfolder. FiveM looks for that exact file name. If the folder does not have one, FiveM treats the folder as if it were not there at all. No error, no warning, just silence. The folder is invisible.

So the rule is short: no fxmanifest.lua, no resource. The name must be spelled exactly, all lowercase, with no spaces. Not manifest.lua, not fxmanifest.txt, and not the old name __resource.lua you might still see in ancient tutorials.

Vocabulary

manifest
A file that lists what is inside something and how to handle it. A ship's manifest lists its cargo. Your fxmanifest.lua lists your resource's files and how FiveM should load them.
fx_version
A line in the manifest that says which version of the manifest format you are writing. It tells FiveM how to read the rest of the file. The current value is 'cerulean'.
game
A line that says which game this resource targets. For FiveM it is always 'gta5'. (RedM, the Red Dead version, uses 'rdr3'.)
directive
A single instruction line in the manifest, like server_script 'server.lua'. It is FiveM telling itself what to do, not code that runs in your game.
dependency
Another resource that must already be running before yours starts. You list it so FiveM refuses to start your resource until its requirement is ready.

Why it exists

Think about what FiveM faces when your server boots. It scans a folder that may hold a hundred different resources. Each one is a pile of files. FiveM has no way to guess which files are code, which are images, which should run, or where each one belongs. It cannot just run everything, because some files are meant for the server and some are meant for each player's computer, and mixing those up would break things instantly.

So FiveM does not guess. It reads a manifest first. The manifest is your resource answering three questions before any code runs:

  • Which files in this folder should I load?
  • Which of those run on the server, and which run on each player?
  • Does anything else need to be running before me?

Picture a new employee on their first day. You do not hand them a key to the building and say, figure it out. You hand them an onboarding sheet: here is your desk, here are the tasks that are yours, here is the person you report to. fxmanifest.lua is that onboarding sheet for your resource. FiveM reads it once, learns the plan, and only then starts the work. No sheet means the employee never gets through the door.

A complete manifest, line by line

Here is a full, realistic fxmanifest.lua. Read it once top to bottom, then we break down every single line underneath.

lua
fx_version 'cerulean'
game 'gta5'
 
author 'you'
description 'My first resource'
version '1.0.0'
 
shared_script 'config.lua'
client_script 'client.lua'
server_script 'server.lua'
 
dependency 'oxmysql'

fx_version 'cerulean'

This is the format version of the manifest itself. FiveM has changed how manifests are read over the years, and cerulean is the current format. You always start a manifest with this line. The word cerulean is just a code name, like how software releases get names. You do not need to understand why it is called that. You only need to type it. Without this line, FiveM does not know how to read the rest of the file and refuses to load the resource.

game 'gta5'

This says which game your resource is built for. FiveM is Grand Theft Auto V multiplayer, so the value is gta5. You will see rdr3 in Red Dead resources, but for everything you build here it is always gta5. These first two lines, fx_version and game, are the only truly required lines. Everything below them is you adding files and details.

author, description, version (optional metadata)

lua
author 'you'
description 'My first resource'
version '1.0.0'

These three lines are metadata, which means information about your resource rather than instructions that change how it runs. author is who made it. description is one short sentence saying what it does. version is a number you bump up each time you release a change, so people can tell which copy they have. None of these are required and FiveM ignores them when deciding how to run your code. They exist for humans, and for the txAdmin panel and resource lists that display them. Fill them in anyway. It is a good habit and it makes your work look finished.

shared_script, client_script, server_script

This is the heart of the manifest. Each of these directives points at a file and tells FiveM where that file should run.

lua
shared_script 'config.lua'
client_script 'client.lua'
server_script 'server.lua'
  • server_script 'server.lua' loads a file that runs once, on the server machine. The server is the central computer everyone connects to. Server scripts handle anything players must not control directly: money, saving to a database, deciding who is allowed to do what.
  • client_script 'client.lua' loads a file that runs on each player's own PC, once for every connected player. Client scripts handle what a player sees and does locally: drawing things on screen, reading their key presses, the menus in front of them.
  • shared_script 'config.lua' loads a file that runs on both sides, server and every client. You use shared scripts for plain settings and constants that both sides need to agree on, like a config table. Keep real logic out of shared files.

The file name inside the quotes is a path relative to the resource folder. 'server.lua' means a file named server.lua sitting right next to fxmanifest.lua. If you put your code in subfolders, you write the path, like 'server/main.lua'. The next lesson goes deep on why this client and server split matters. For now, just know the directive picks the file and the side.

dependency

lua
dependency 'oxmysql'

A dependency is another resource that must already be running before yours starts. Here it says, do not start me until oxmysql is running. You only add this when your resource genuinely needs another one to work, like needing a database tool before your code can save anything. If you need to require several at once, there is a plural form, dependencies { 'ox_lib', 'oxmysql' }, that takes a list. A brand-new practice resource usually needs no dependencies at all, so you can leave this line out entirely.

Write your own

You already have the practice resource qu_hello from the last lesson. Now you will write its manifest by hand so you feel every line do its job.

Open the manifest file

The fxmanifest.lua of qu_hello is open in your editor.

In your resources folder, open qu_hello, and open the file named fxmanifest.lua in your text editor. If it has old content in it, clear it out so you start from an empty file.

Add the two required lines

FiveM can now read the manifest format and target game.

Type these two lines at the very top. Every manifest you ever write starts here.

lua
fx_version 'cerulean'
game 'gta5'

Add one server script line

The manifest now loads one file, on the server.

Add a blank line, then point the manifest at a server file. Your full manifest now reads:

lua
fx_version 'cerulean'
game 'gta5'
 
server_script 'server.lua'

Make sure a file named exactly server.lua exists in the qu_hello folder. It already has the line print('[qu_hello] resource started') from the last lesson, so leave that in: it is your visible proof the manifest loaded the file.

Save, then restart the resource

The server re-reads your manifest and loads the file.

Save the file. Open the txAdmin Live Console, the text box at the bottom of the txAdmin web panel where you type server commands, and type this, then press Enter:

text
ensure qu_hello

ensure starts the resource, and restarts it if it was already running, so it always works.

Confirm it loaded

The console shows the resource starting with no manifest errors.

Watch the txAdmin Live Console. You should see a line confirming the resource started, and right after it the print line from your server.lua. No red error means your manifest is valid.

Common beginner mistakes

These are the manifest errors almost everyone hits at least once. Read them now so you recognise them later.

SymptomFix
Could not load resource qu_hello (or the resource never starts)The fx_version line is missing or misspelled. Without fx_version 'cerulean' at the top, FiveM cannot read the manifest and will not start the resource. Add it as the first line.
Couldn't load script server.lua: No such fileThe file name in your script line does not match a real file. server_script 'server.lua' needs a file named exactly server.lua in the folder. Check spelling, capital letters, and the .lua ending.
Manifest looks copied from an old guideYou added a lua54 line. Lua 5.4 is the only runtime as of 2025, so that setting is deprecated and ignored. Delete the line.
Something draws on screen but nothing appears for the playerYou loaded a drawing file with server_script. On-screen code is client code and must use client_script, because drawing happens on each player's PC, not on the server.
Why should you NOT add lua54 'yes' to a 2026 manifest?

Because as of 2025 Lua 5.4 is the only runtime FiveM uses. There is no older version to switch away from, so there is nothing for lua54 'yes' to turn on. The setting is deprecated, which means retired, and FiveM ignores it completely. Adding it does nothing and only signals that the manifest was copied from outdated material. A 2026 manifest starts with fx_version 'cerulean' and game 'gta5' and leaves the lua54 line out.

Try it yourself

What you can do now

  • Explain that fxmanifest.lua is the required file that turns a folder into a resource FiveM will load.
  • Write the two required lines, fx_version 'cerulean' and game 'gta5', from memory.
  • Read a manifest and say what each line does, including the optional metadata lines.
  • Choose server_script, client_script, or shared_script for a file on purpose.
  • Know never to add a lua54 line, because Lua 5.4 is the only runtime and the setting is ignored.

You can now turn any folder into a resource and tell FiveM exactly which files to load. The one thing we kept brushing past is the deepest idea in FiveM: the difference between the server and the client, and why a shared file is special. That split decides where every line of your code is allowed to run. Next up: "Client, server, and shared files."