# Dependencies > Required and optional resources for ML Inventory Category: INVENTORY · Source: https://miciomods.it/docs/ml-inventory-dependencies · Last updated: 2026-10-02 # Dependencies ML Inventory installs inside your own ox_inventory folder, which the install renames `ml_inventory`. ## Required `ox_lib` gives both resources their client and server callbacks. The inventory registers its hold actions and item wheel keybinds through it. Both manifests declare it. Get it from [github.com/communityox/ox_lib](https://github.com/communityox/ox_lib). `oxmysql` is the database driver both resources load. The download carries no SQL file: your existing ox_inventory tables are used unchanged, and ML Clothing creates `ml_invadmin_audit` and `ml_clothing_stash_props` on first start. ox_inventory is your own copy. The download contains no ox_inventory file, so you install into the folder you already run, or into a fresh copy from [github.com/overextended/ox_inventory](https://github.com/overextended/ox_inventory). Tested on 2.47.7 through 2.47.9; releases outside that range have not been checked. ML Inventory and ML Clothing require `ml_bridge`. ML Clothing uses it for player identity, item calls, permissions and notifications. Start it before both resources. Get it from [portal.cfx.re](https://portal.cfx.re). ML Clothing is the second resource in the package. The clothing slots, the bag stashes, the armor plates and the admin panel come from it. Started alone, the inventory keeps slots 11 to 25 reserved and empty and the panel command does not exist. The inventory needs OneSync on and server artifact 6116 or newer. Its manifest declares both, so an older artifact or a server with OneSync off refuses to start the resource. > **INFO:** Credit > > ox_inventory is the work of Overextended, published under the GNU General Public License v3. ML Inventory adds files to the ox_inventory folder and ships none of ox_inventory's own. ## Server config load order **server.cfg** ```cfg ensure oxmysql ensure ox_lib ensure ml_bridge ensure ml_inventory ensure ml_clothing ``` Replace `ensure ox_inventory` with `ensure ml_inventory`. Keep the resource folders named `ml_inventory` and `ml_clothing`, with only one inventory installation enabled. The `ox_inventory` resource alias keeps existing `exports.ox_inventory` calls and dependencies available. > **WARNING:** Refresh before you start > > After you copy the folders in, run `refresh` and then `ensure`, or restart the server. A file added to a resource that is already running is not picked up by `restart` on its own. ## Framework setup **QBCore** **server.cfg** ```cfg setr inventory:framework "qbx" ensure qb-core ensure oxmysql ensure ox_lib ensure ml_bridge ensure ml_inventory ensure ml_clothing ``` - `inventory:framework`, default `esx`. Sets which framework layer ox_inventory loads and which database tables it reads player and vehicle inventories from. Accepted values: `esx`, `nd`, `ox`, `qbx`. `qbx` is the correct value on a qb-core server. It selects the qb-core layer ML Inventory adds and points ox_inventory at the `players` and `player_vehicles` tables qb-core uses. **Qbox** **server.cfg** ```cfg setr inventory:framework "qbx" ensure qbx_core ensure oxmysql ensure ox_lib ensure ml_bridge ensure ml_inventory ensure ml_clothing ``` - `inventory:framework`, default `esx`. Sets which framework layer ox_inventory loads and which database tables it reads player and vehicle inventories from. Accepted values: `esx`, `nd`, `ox`, `qbx`. **ESX** **server.cfg** ```cfg setr inventory:framework "esx" ensure es_extended ensure oxmysql ensure ox_lib ensure ml_bridge ensure ml_inventory ensure ml_clothing ``` - `inventory:framework`, default `esx`. Sets which framework layer ox_inventory loads and which database tables it reads player and vehicle inventories from. Accepted values: `esx`, `nd`, `ox`, `qbx`. **Standalone** **server.cfg** ```cfg ensure oxmysql ensure ox_lib ensure ml_bridge ensure ml_inventory ensure ml_clothing ``` ML Clothing resolves standalone through `ml_bridge`. The inventory half does not: ox_inventory reads `inventory:framework` for both its framework layer and its player and vehicle table names, and it accepts `esx`, `nd`, `ox` and `qbx` only. Keep that convar on the framework your copy already runs, with that framework resource started. On any other value the inventory never reads or writes player inventories. > **INFO:** Auto detection > > `ml_bridge` resolves the framework at runtime, so there is no framework option to set in `shared/config.lua`. The inventory follows the framework layer of the copy it installs into, selected by `inventory:framework`. When qb-core is running and that convar reads anything other than `qbx`, the server prints a warning at boot with the exact line to add. ## Optional ### Appearance scripts No appearance script is a dependency. ML Clothing checks for one at start, in this order: `4bit_appearance`, `illenium-appearance`, `bl_appearance`, `codem-appearance` (also under its `crm-appearance` name), `fivem-appearance`, `qb-clothing`. The first one started is the one it uses. An `illenium-appearance` folder that exposes the 4bit API is treated as `4bit_appearance`. With `illenium-appearance`, `bl_appearance`, `4bit_appearance` or `codem-appearance`, what the player wears is written back into that script on its own save path, so the outfit survives outside the inventory. `fivem-appearance` and `qb-clothing` are detected, but nothing is written back into them: worn clothing lives in the clothing slots as items, which is also what happens when no appearance script is started at all. The other direction, turning an outfit saved in an appearance menu into inventory items, is one call added inside the appearance script. See [Clothing Integration](https://miciomods.it/docs/ml-inventory-cloth-integration). ### ml_autocapture The Clothing tab of the admin panel has a button that opens the capture studio of `ml_autocapture`, a separate resource that is not part of this package. When `ml_autocapture` is not started, the button answers with an error notification. The catalog, the item list, the image list and giving clothing to a player do not go through it. Before starting the resources, add this permission if FXServer restricts cross-resource thumbnail writes: **server.cfg** ```cfg add_filesystem_permission ml_autocapture write ml_inventory ``` The catalog the Clothing tab lists is fetched over HTTP. **shared/invadmin_config.lua** ```lua Config.ClothingCatalogUrl = 'http://127.0.0.1:3960/api/catalog' ``` - `Config.ClothingCatalogUrl`, default `'http://127.0.0.1:3960/api/catalog'`. Endpoint the Clothing tab reads its catalog from. That endpoint is not part of the package: when it answers with anything other than 200, the tab shows an empty catalog. ### ox_target `ox_target` is used only when your ox_inventory runs in target mode. **server.cfg** ```cfg setr inventory:target true ``` - `inventory:target`, default `false`. Opens stashes and shops from an `ox_target` zone instead of a marker. In that mode a stash created in the admin panel carries the zone length, width, heading, label and icon you set, and its zone is rebuilt when you save the stash while the server runs. With target mode off, stashes and shops use their marker and `ox_target` is not called. ### Item placement Install a placement resource separately to enable item placement. The supplied hook uses ML ItemThrowing and uses normal drops when that resource is stopped. For another provider, edit `open/item_placement.lua` as described in Developer.