> For the complete documentation index, see [llms.txt](https://visionstore.gitbook.io/visionstore-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://visionstore.gitbook.io/visionstore-docs/scripts/crafting/installation.md).

# Installation

Get Vision Crafting running on your server in about five minutes.

## Requirements

| Resource                                                          | Required | Notes                                                                 |
| ----------------------------------------------------------------- | -------- | --------------------------------------------------------------------- |
| **OneSync**                                                       | ✅ Yes    | Used for routing buckets (`set onesync on` or txAdmin).               |
| [**ox\_lib**](https://github.com/overextended/ox_lib)             | ✅ Yes    | Keybinds, notifications, callbacks.                                   |
| [**oxmysql**](https://github.com/overextended/oxmysql)            | ✅ Yes    | Benches, queue, progression and mastery are saved in MySQL.           |
| [**ox\_inventory**](https://github.com/overextended/ox_inventory) | ✅ Yes    | Items, bench metadata and bench stashes.                              |
| Framework                                                         | Optional | Qbox, QBCore or ESX are detected automatically. Standalone works too. |
| [**ox\_target**](https://github.com/overextended/ox_target)       | Optional | Needed to talk to the hidden NPC vendors.                             |
| **object\_gizmo**                                                 | Optional | Only for the drag-and-drop placement mode.                            |

{% hint style="warning" %}
**Game build:** the default bench prop (`xm3_prop_xm3_bench_04b`) needs **game build 2944 or newer**. On older builds the bench automatically falls back to a base-game prop, so nothing breaks.
{% endhint %}

## Install

{% stepper %}
{% step %}

### Add the resource

Download the asset from [portal.cfx.re](https://portal.cfx.re) and put the `Chapo_Crafting` folder in your `resources` folder (for example `resources/[vision]/Chapo_Crafting`).

{% hint style="warning" %}
Keep the folder name **exactly** `Chapo_Crafting`. The bench items call `Chapo_Crafting.usePortableBench`, and the exports use this name.
{% endhint %}
{% endstep %}

{% step %}

### Start it in server.cfg

Add it **after** its dependencies and your framework:

```properties
ensure ox_lib
ensure oxmysql
ensure ox_inventory
ensure qbx_core        # or qb-core / es_extended (skip for standalone)
ensure ox_target       # optional, for the hidden NPC vendors
# ...
ensure Chapo_Crafting
```

{% endstep %}

{% step %}

### Add the items to ox\_inventory

Open `install/ox_inventory_items.lua` and paste the blocks you need into `ox_inventory/data/items.lua` (inside the returned table). The file has three sections:

| Section                               | What it is                                                                                                                                                                    | Needed?                 |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| **1. Bench items + maintenance kits** | `crafting_bench`, `tools_crafting_bench`, `medical_crafting_bench`, `weapons_crafting_bench`, `workbench_service_kit`, `industrial_maintenance_kit`, `precision_overhaul_kit` | ✅ Required              |
| **2. Materials**                      | `metalscrap`, `steel`, `iron`, `aluminum`, `copper`, `plastic`, `rubber`, `glass`, `cloth`, `gunpowder`, `electronickit`                                                      | For the starter recipes |
| **3. Crafted items**                  | `screwdriverset`, `advancedlockpick`, `repairkit`, `advancedrepairkit`, `drill`, `thermite`, `painkillers`, `firstaid`, `ifaks`                                               | For the starter recipes |

Skip any item your server already has (many Qbox / QBCore servers already include most of them). Weapons, ammo and attachments used by the starter recipes are stock ox\_inventory items and need nothing.

A bench item must look like this. **`stack = false`** and **`consume = 0`** are required:

```lua
['tools_crafting_bench'] = {
    label = 'Tools Bench',
    weight = 15000,
    stack = false,
    close = true,
    consume = 0,
    description = 'A portable tools bench. Use it to place it.',
    server = { export = 'Chapo_Crafting.usePortableBench' },
},
```

Item images go in `ox_inventory/web/images/<item name>.png`. The bench shows a placeholder for any item without one.

{% hint style="info" %}
Not sure what's missing? Just start the server. The console lists every item that doesn't exist in ox\_inventory, with the recipe that uses it. That recipe is switched off (not broken) until you add the item.
{% endhint %}
{% endstep %}

{% step %}

### Database

Nothing to do: every table is created (and later upgraded) automatically on first start. If you prefer, import `install/chapo_crafting.sql` first. Every statement is `IF NOT EXISTS`, so it's safe to run twice.

The tables all start with `crafting_`, for example `crafting_bench_instances`, `crafting_queue` and `crafting_mastery`.
{% endstep %}

{% step %}

### Start the server and check the console

You should see something like:

```
[Chapo_Crafting] framework: qbox
[Chapo_Crafting] ready — 32 recipe(s), 3 bench type(s), 0 deployed bench(es)
```

The framework is detected automatically (Qbox → QBCore → ESX → standalone). To force one, set `Config.Framework` in `config/config.lua` to `'qbox'`, `'qb-core'`, `'esx'` or `'standalone'`.
{% endstep %}

{% step %}

### Give staff access

Crafting admins are the groups in `Config.Permissions.adminGroups` (default `god` and `admin`), checked through your framework. The ACE permission `crafting.admin` works too:

```properties
add_ace group.admin crafting.admin allow
```

Then in game: **`/crafting give <your id> tools`**. You're ready: follow the [Quick start](/visionstore-docs/scripts/crafting/quick-start.md).
{% endstep %}
{% endstepper %}

{% hint style="info" %}
**Standalone servers** have no jobs or money. Identity is the player's license, so progression still saves. Bench access can only use `full`, `ace`, `identifiers` and NPC unlocks, and anything with a price (bench stash levels, NPC entry fees) only works when that price is `0`. You can connect your own framework in `bridge/framework/` (see [Bridges](/visionstore-docs/scripts/crafting/developers/bridges.md)).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://visionstore.gitbook.io/visionstore-docs/scripts/crafting/installation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
