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

# Installation & Configuration

Install Striga Core first. Every Striga script needs it.

{% stepper %}
{% step %}

### Add the resource

Put the `striga-core` folder in your `resources` folder (for example `resources/[striga]/striga-core`).
{% endstep %}

{% step %}

### Start it in server.cfg

`ensure striga-core` comes **after** ox\_lib, oxmysql and your framework, and **before** every other Striga script:

```
ensure ox_lib
ensure oxmysql
ensure qb-core          # or qbx_core / es_extended

ensure striga-core      # first Striga resource
ensure striga-notify    # then the Striga scripts you own
ensure striga-tokyo-hud
```

{% endstep %}

{% step %}

### Check config.json

Open `striga-core/config.json`. The defaults (`"auto"`) work on most servers. See [config.json reference](#config.json-reference) below.
{% endstep %}

{% step %}

### Restart the server

Restart the whole server. In the server console you see:

```
striga-core 0.1.0 ready (framework: qbcore, inventory: qb, notify: framework)
```

{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**ox\_lib must start before your framework.** If the framework does not start within 30 seconds, core stays off and the console says `... did not start, striga-core stays disabled`.
{% endhint %}

{% hint style="info" %}
**txAdmin:** after you replace files that change `fxmanifest.lua`, type `refresh` in the console first, then `ensure striga-core`. Without `refresh`, FiveM keeps using the old manifest.
{% endhint %}

***

## Versions and updates

Every Striga script has a line like `striga_core_min '0.1.0'` in its `fxmanifest.lua`. That is the oldest striga-core it works with. All Striga scripts `1.0.0` need striga-core `0.1.0` or newer.

| Case                      | What happens                                                   |
| ------------------------- | -------------------------------------------------------------- |
| striga-core is missing    | The Striga script does not start (striga-core is a dependency) |
| striga-core is too old    | Core stops the script and prints a red line in the console     |
| striga-core is new enough | The script starts as normal                                    |

```
[striga-core] <script> needs striga-core >= <min> (installed <yours>). Update striga-core.
```

Core also checks GitHub for updates (10 seconds after start, then every 6 hours) and prints a red `UPDATE` line with the download link. Turn it off with `"versionCheck": false`.

{% content-ref url="/pages/yGREkGui961z8NSGqAfh" %}
[Updates & Versions](/docs/updates-and-versions.md)
{% endcontent-ref %}

***

## config.json reference

File: `config.json`. This is the only file you edit. If a value has the wrong type, core prints a warning and uses the default.

### Systems

| Option       | Default       | What it does                                                                                                                                                                     |
| ------------ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `framework`  | `"auto"`      | `auto`, `qbcore`, `qbox`, `esx`, `standalone`. See [Frameworks](/docs/striga-core/integration/frameworks.md)                                                                     |
| `inventory`  | `"auto"`      | `auto`, `striga`, `ox`, `qb`, `esx`, `none`, or a custom adapter name. See [Inventory](/docs/striga-core/integration/inventory.md)                                               |
| `notify`     | `"framework"` | `framework`, `ox_lib`, `striga-notify`, or a custom adapter name. See [Notify](/docs/striga-core/integration/notify.md)                                                          |
| `textui`     | `"auto"`      | `auto`, `ox_lib`, `qb-core`, `esx_textui`, `striga-text-ui`, or a custom adapter name. See [Text UI](/docs/striga-core/integration/text-ui.md)                                   |
| `appearance` | `"auto"`      | `auto`, `illenium-appearance`, `fivem-appearance`, `qb-clothing`, `skinchanger`, `none`, or a custom adapter name. See [Appearance](/docs/striga-core/integration/appearance.md) |

### Options

| Option                   | Default                                                                  | What it does                                                                                                                         |
| ------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `notifyOptions.position` | `""`                                                                     | Default notification position. `""` = the notify system's own setting                                                                |
| `notifyOptions.duration` | `5000`                                                                   | Duration in ms when a script gives none (1000 to 30000)                                                                              |
| `textuiOptions.position` | `"left"`                                                                 | Default text UI position: `left`, `right`, `top`, `bottom`                                                                           |
| `itemImagePath`          | `""`                                                                     | `""` = the inventory's own images. Else a path with one `%s` (item name), e.g. `"nui://my-inv/images/%s.png"`                        |
| `inventoryMaxWeight`     | `120000`                                                                 | Bag limit used on the client when the inventory does not give one                                                                    |
| `fuel.adapter`           | `"auto"`                                                                 | `auto` = built-in reader, or a custom adapter name. See [Fuel](/docs/striga-core/integration/fuel.md)                                |
| `fuel.resources`         | `["ox_fuel", "LegacyFuel", "cdn-fuel", "ps-fuel", "qb-fuel", "lc_fuel"]` | Fuel scripts the built-in reader looks for, in order. First one running wins. None = game fuel                                       |
| `staff.groups`           | `["owner", "god", "admin", "mod", "helper"]`                             | Staff groups, highest first                                                                                                          |
| `staff.ace`              | `"striga.staff"`                                                         | Anyone with this ACE counts as staff. `""` = off                                                                                     |
| `versionCheck`           | `true`                                                                   | Update check on GitHub. `false` = off                                                                                                |
| `locale`                 | `"en"`                                                                   | Server language for every Striga script: `ar` `de` `en` `es` `fr` `it` `nl` `pl` `pt` `ru` `tr`. See [Languages](/docs/languages.md) |
| `debug`                  | `false`                                                                  | Test commands and event logs. Keep `false` on a live server                                                                          |

### ESX only

| Option               | Default        | What it does                                                |
| -------------------- | -------------- | ----------------------------------------------------------- |
| `esx.statusResource` | `"esx_status"` | Resource that gives hunger and thirst                       |
| `esx.charPrefix`     | `"char"`       | Character id prefix (`char1:...`)                           |
| `esx.dateFormat`     | `"DD/MM/YYYY"` | Birth date format: `DD/MM/YYYY`, `MM/DD/YYYY`, `YYYY-MM-DD` |
| `esx.defaultHeight`  | `180`          | Default height of a new character                           |

{% hint style="success" %}
**Staff quick setup:** `add_ace group.admin striga.staff allow` in `server.cfg` makes every admin staff for all Striga scripts.
{% endhint %}

### Default file

```json
{
    "framework": "auto",
    "inventory": "auto",
    "notify": "framework",
    "debug": false,
    "versionCheck": true,
    "inventoryMaxWeight": 120000,
    "fuel": {
        "adapter": "auto",
        "resources": ["ox_fuel", "LegacyFuel", "cdn-fuel", "ps-fuel", "qb-fuel", "lc_fuel"]
    },
    "appearance": "auto",
    "esx": {
        "statusResource": "esx_status",
        "charPrefix": "char",
        "dateFormat": "DD/MM/YYYY",
        "defaultHeight": 180
    },
    "staff": {
        "groups": ["owner", "god", "admin", "mod", "helper"],
        "ace": "striga.staff"
    },
    "notifyOptions": {
        "position": "",
        "duration": 5000
    },
    "textui": "auto",
    "textuiOptions": {
        "position": "left"
    },
    "itemImagePath": ""
}
```

***

## Language

`"locale"` in `config.json` is the language of **every** Striga script. Each script follows it while its own `Config.Locale` is `'auto'` (the default).

Change it live, without a restart:

```
strigalocale tr      # set the server language to Turkish
strigalocale         # show the active language and the list
```

* Works from the server console, or in game for players with the staff ACE (`striga.staff`) or `command.strigalocale`.
* The change is **not saved**. After a restart the server uses `config.json` again.

{% content-ref url="/pages/APHgUN2yLjvjrHO1Gyad" %}
[Languages](/docs/languages.md)
{% endcontent-ref %}

***

## Player settings and theme

Striga scripts register their player settings with core. Nothing to set up.

* Players change them in the script's **own panel** (for example `/notifysettings`) **and** in the Tokyo HUD **`/hud`** menu when Striga Tokyo HUD runs. Both stay in sync.
* To lock a script's settings, set `Config.Ui.Settings = false` in that script's `editable/config.lua` (where the script has that option).
* **Accent color:** Striga UIs follow the Tokyo HUD theme color, unless the player picked their own color in that script.

Developers: see [Settings Hub & Theme](/docs/striga-core/settings-hub-and-theme.md).

***

## Debug commands

Only when `"debug": true`.

| Command               | What it does                                                                                            |
| --------------------- | ------------------------------------------------------------------------------------------------------- |
| `strigacore <id>`     | Prints what core sees for that player: server side in the server console, client side in their F8       |
| `strigacoretest <id>` | Runs a full API test on that player and undoes its changes. The player must be in game with a character |

Both work from the server console. To use them in game, give the ACE:

```
add_ace group.admin command.strigacore allow
add_ace group.admin command.strigacoretest allow
```

{% content-ref url="/pages/zSTe3qWUo2xh1mSiaIqX" %}
[Integration](/docs/striga-core/integration.md)
{% endcontent-ref %}


---

# 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://striga.gitbook.io/docs/striga-core/installation-and-configuration.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.
