> ## Documentation Index
> Fetch the complete documentation index at: https://docs.technified.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Install the integration with a code snippet from the dashboard.

Installation is one code snippet you copy from the dashboard and paste into the Roblox Studio command bar. It creates the plugin file in the right place, with your API key and Guild ID already filled in.

<Warning>
  **The Technified Manager Studio plugin has been removed.** Code snippets replace it. They are quicker to run, need no plugin install or permissions in Studio, and are far easier for us to maintain, so fixes reach you without waiting for a Studio plugin update.

  If you still have the Manager installed, you can delete it. Plugin files it installed keep working, and the snippet below replaces them cleanly.
</Warning>

## Prerequisites

* **Adonis** or **Guardsman** installed and working.
* Access to your server's **Technified dashboard**.
* **HTTP Requests** enabled in Game Settings > Security.

You do not need to create an API key up front. The dashboard creates one for you when you generate the snippet.

## Where to find it

The **Roblox Plugin** button sits in two places in the dashboard, both open the same dialog:

* On your server's **overview** page, next to the settings button.
* In **Settings**, in the registered games section.

## Install

<Steps>
  <Step title="Open the dialog">
    Click **Roblox Plugin**. The dialog asks **What admin system do you use?**.
  </Step>

  <Step title="Pick your admin system">
    Choose **Adonis** or **Guardsman**.

    An API key is created automatically and embedded in the snippet. It is only shown here once, so do not close the dialog before copying.
  </Step>

  <Step title="Copy the snippet">
    Click **Copy**. Your API key and Guild ID are already in it.
  </Step>

  <Step title="Run it in Studio">
    In Roblox Studio, open **View > Command Bar**, paste the snippet, and press Enter.

    The output console confirms the install, for example `[Technified] Installed Server-Technified into ...`
  </Step>
</Steps>

<Note>
  If all API key slots are in use, or you do not have permission to manage API keys, the dialog says so before you pick a system. The snippet is still generated, but it keeps `YOUR_API_KEY` as a placeholder for you to replace.
</Note>

## Where the file lands

<Tabs>
  <Tab title="Adonis">
    The snippet looks for a folder named `Plugins` inside a folder named `Config`, in ServerScriptService or ServerStorage, and creates a ModuleScript named `Server-Technified`:

    ```
    ServerScriptService/
    └── Adonis/
        └── Loader/
            └── Config/
                └── Plugins/
                    └── Server-Technified
    ```
  </Tab>

  <Tab title="Guardsman">
    The snippet looks for a folder named `plugins` that sits next to Guardsman's `config` and `loader`, and creates a ModuleScript named `Server-Technified`:

    ```
    ServerScriptService/
    └── Guardsman Loader/
        ├── config
        ├── loader
        └── plugins/
            └── Server-Technified
    ```

    Matching on the neighbouring `config` and `loader` means it still works if you renamed the Guardsman Loader folder.
  </Tab>
</Tabs>

## What the file contains

It is a small loader. The actual plugin code lives in a Roblox model asset and is fetched at runtime, which is why plugin updates reach you without any change to your game.

Everything you can configure sits in the `CONFIG` table at the top:

```lua theme={null}
local CONFIG = {
    API_KEY            = "technified_...",              -- Filled in by the dashboard
    GUILD_ID           = "1234567890123456789",         -- Filled in by the dashboard
    BASE_URL           = "https://api.technified.xyz/api/v1",
    REQUEST_TIMEOUT    = 10,

    -- Features
    SYNC_PERMISSIONS   = true,
    SYNC_BANS          = true,
    SYNC_MUTES         = true,
    SYNC_SHIELD        = false,
    BIDIRECTIONAL_SYNC = true,
    LOG_ACTIONS        = true,
    TRACK_SESSIONS     = true,
    SESSION_MIN_LEVEL  = 100,
    DEBUG              = false,
}
```

See [Configuration](/roblox-integration/configuration) for what every option does.

## Installing by hand

If you would rather not run a snippet, create the ModuleScript yourself in the location above and paste the loader from the snippet into it. Set `API_KEY` and `GUILD_ID` manually.

<Steps>
  <Step title="Get an API key">
    In the dashboard, go to **Settings > API Keys**, click **Create API Key**, and copy the full key. It starts with `technified_`.
  </Step>

  <Step title="Get your Guild ID">
    In Discord, open **User Settings > Advanced** and turn on **Developer Mode**. Then right-click your server name and click **Copy ID**.
  </Step>
</Steps>

## Confirm it works

The plugin is quiet by default. To see what it is doing, set `DEBUG = true` in the `CONFIG` table, play the game in Studio, and open the output console (F9). A successful start looks like this:

```
[Technified] Initializing vBeta 8.5...
[Technified] Guild: 1234567890... | Permissions: true | Bans: true | Mutes: true | Bidir: true | Sessions: true | Actions: true
[Technified] Commands registered: :tbans, :tmutes, :tsync, :tstatus
[Technified] Initialized successfully! vBeta 8.5
```

Set `DEBUG` back to `false` once you are done. Errors are only printed while debug logging is on.

## Updating

There is nothing to update. The loader fetches the current plugin code from the Roblox model asset every time your server starts, so fixes and new features apply on the next server restart.

Re-run the snippet only if you want to reset the file, for example after changing your API key. It replaces the existing file rather than creating a duplicate.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Adonis not found (no Config/Plugins folder)">
    The snippet looks for a folder named `Plugins` inside a folder named `Config`, in ServerScriptService or ServerStorage. Install Adonis first, or check that its Loader has not been renamed.
  </Accordion>

  <Accordion title="Guardsman not found (no plugins folder)">
    The snippet looks for a folder named `plugins` whose parent also contains `config` and `loader`. Install Guardsman first, and check that those two have not been renamed.
  </Accordion>

  <Accordion title="API Key is not configured">
    Set `API_KEY` in the `CONFIG` table. It should start with `technified_`.
  </Accordion>

  <Accordion title="Guild ID is not configured">
    Set `GUILD_ID` to your Discord server ID, a long number.
  </Accordion>

  <Accordion title="HttpService is not available">
    Enable HTTP Requests in Game Settings > Security.
  </Accordion>

  <Accordion title="Authentication failed">
    Your API key may be invalid or revoked. Generate a new one in the dashboard and re-run the snippet.
  </Accordion>

  <Accordion title="Nothing appears in the output console">
    The plugin only logs when `DEBUG = true`. Turn it on to see what is happening.
  </Accordion>

  <Accordion title="Plugin not loading">
    Check the ModuleScript is in the correct folder and that your admin system itself is loading.
  </Accordion>
</AccordionGroup>
