Skip to content
RustPluginGenerator

How to Install Rust Plugins on an Oxide or Carbon Server

To install a Rust plugin, upload its .cs file to oxide/plugins (Oxide) or carbon/plugins (Carbon) on your server; the framework compiles and loads it automatically, with no restart needed. After loading, edit the generated config in the config folder and grant the plugin's permissions to the groups that should use it.

6 min readUpdated Oct 26, 2026

Upload the plugin's .cs file into oxide/plugins on an Oxide server or carbon/plugins on a Carbon server. The framework detects the file, compiles it and loads it without a restart. Afterwards you edit its config, grant permissions and confirm it loaded.

This guide assumes the framework is already running. If not, start with installing Oxide on a Rust server.

Where plugin files go

ItemOxideCarbon
Plugins (.cs)oxide/pluginscarbon/plugins
Config filesoxide/config/<Name>.jsoncarbon/configs
Data filesoxide/datacarbon/data
Language filesoxide/lang/<lang>/<Name>.jsoncarbon/lang
Logsoxide/logscarbon/logs

Both folders live in the server's root directory, next to the RustDedicated binary. Carbon loads Oxide plugins, so the same .cs file works in either place.

Step-by-step installation

  1. Download the plugin as a single .cs file.
  2. Check that the file name matches the main class name inside it. BetterChat.cs must contain public class BetterChat. Do not rename the file, because a mismatch causes a filename error. Browsers sometimes append (1) to repeat downloads, so check for that.
  3. Upload it to the plugins folder.
  4. Watch the server console or log. A successful load prints Loaded plugin <Title> v<Version> by <Author>. There is no separate "compiled successfully" message.
  5. Configure it and set permissions (below).

Uploading with a hosting panel

Most Rust hosts offer a web file manager, and the steps are the same everywhere:

  • Open the file manager and browse to the server's oxide/plugins folder (or carbon/plugins). If the folder is missing, the framework is not installed yet or the server has never started with it.
  • Use Upload and select the .cs file, or create a new file and paste the code.
  • Use the panel's console to watch for the load message, or send oxide.plugins.

With FTP or SFTP, drag the file into the same folder. Upload in binary or auto mode; a corrupted transfer produces strange compile errors. Some panels cannot show the console of a running server, so check oxide/logs instead.

Automatic loading and reloading

Oxide and Carbon watch the plugins folder:

  • A new .cs file is compiled and loaded.
  • A saved change to an existing file reloads that plugin.
  • A deleted file unloads it.

You can also manage plugins manually from the server console or RCON:

Text
oxide.plugins
oxide.load MyPlugin
oxide.reload MyPlugin
oxide.unload MyPlugin
oxide.reload *

oxide.plugins lists loaded plugins with their versions, authors and the time they spend. Carbon accepts these same commands. More are covered in Oxide console commands.

During a load the plugin goes through Init, config and language loading, then Loaded, and then OnServerInitialized. On a server that is already running, OnServerInitialized is called right away with false. On reload or unload, Unload runs first so the plugin can clean up.

Configuring a plugin

Many plugins create a JSON config the first time they load. Look for oxide/config/<PluginName>.json (or the matching file in carbon/configs).

  1. Edit the file in your panel or editor.
  2. Keep it valid JSON: quotes around keys, commas between entries, no trailing commas.
  3. Reload with oxide.reload <PluginName> so the values are read.

If the file is invalid, the plugin typically falls back to defaults and warns you, or logs a corrupt config error. Deleting the config file and reloading regenerates defaults. How plugins read these files is explained in Rust plugin config files.

Player-facing text is usually stored under oxide/lang/<language>/<PluginName>.json. Edit it to translate or reword messages. See Rust plugin localization.

Setting permissions after install

Most plugins register permissions named <pluginname>.<action>, such as myplugin.use. Nobody has them until you grant them.

Text
oxide.grant group default myplugin.use
oxide.grant user 76561198000000000 myplugin.admin
oxide.show perms
oxide.show perm myplugin.use
  • default is the group every player belongs to; admin is the admin group.
  • Use oxide.usergroup add <player> <group> to place players in groups such as vip, after creating the group with oxide.group add vip.
  • oxide.show perms lists every registered permission, which is how you find a plugin's permission names. The plugin's description page usually lists them too.

Server owners in the console are not restricted by permissions, but in-game admins may still need them. Full details are in Oxide permissions and groups.

Updating a plugin

  1. Back up the old .cs file and the plugin's config and data files.
  2. Overwrite the file in the plugins folder with the new version. The plugin reloads automatically.
  3. Check the console for the new version in the Loaded plugin line.
  4. Compare your config with the new defaults. New versions can add keys. Many plugins save missing keys automatically, but not all do.

Keep the oxide/data file unless the release notes say otherwise; it holds player data such as balances or homes. If a game update broke plugins, see fixing Rust plugins after an update and the monthly hook change reports.

Removing a plugin

  1. Delete the .cs file from the plugins folder, or run oxide.unload <Name> first.
  2. Optionally delete its config, data and lang files.
  3. Optionally revoke its permissions. Granted permissions remain in the permission data even when the plugin is gone, and they are harmless.

Keep the data file if you may reinstall later. Deleting the .cs file is enough to stop the plugin from running.

Troubleshooting a plugin that does not load

Start with the console or oxide/logs, then work through this list.

SymptomLikely causeWhere to look
Error while compiling <Name>:Code error or missing referenceThe numbered messages show [1] message at line:column
Plugin missing from oxide.pluginsFile not in the right folder, wrong extension, or compile failureCheck the path and for .cs.txt extensions
Nothing at all in the consoleFramework not installed, or files uploaded to the wrong server directoryoxide.version
Plugin loads but does nothingMissing permissions, or a missing dependency pluginoxide.show perms, config
Failed to initialize pluginException in Init or LoadedFailed to initialize plugin
Failed to call hookRuntime error after loadingNullReferenceException in a hook

Common causes in more detail:

A file that fails to compile is skipped, and all other plugins still load. For a deeper workflow see debugging Rust plugins.

Plugins that fit your server

If you need a feature and cannot find a plugin for it, browse a category such as quality of life or admin, or build one from a recipe like auto broadcast. You can also describe the behavior you want in the plugin generator and install the resulting .cs file with the steps above. For writing your own, see how to make a Rust plugin.

FAQ

Do I need to restart the server after installing a plugin?

No. Oxide and Carbon watch the plugins folder, so a new or changed .cs file is compiled and loaded within moments. A restart is only needed when you install or update the framework itself. If a plugin does not appear, run oxide.plugins and check the console for compile errors.

Can I use Oxide plugins on a Carbon server?

Yes. Carbon loads Oxide plugins from carbon/plugins and accepts the oxide.* console commands such as oxide.grant and oxide.reload. Plugins written against Oxide's API generally run unchanged, but a plugin that depends on a specific Oxide-only behavior may still need fixing. See Oxide vs Carbon.

Why does my plugin config file not exist after installing?

The config file is written when the plugin loads successfully and saves its defaults. Not every plugin creates one, and a plugin that failed to compile never gets that far. Confirm the plugin loaded with oxide.plugins, then look in oxide/config (or carbon/configs) for a file named after the plugin.

Is it safe to install any plugin I download?

Plugins run as full server code, so only install files from sources you trust and read what you can. Be wary of plugins that make web requests or touch files. Never run a plugin you cannot review on a production server. See Rust plugin security.

How do I install a plugin that needs another plugin?

Install the dependency first, such as Economics or ImageLibrary, into the same plugins folder. Oxide reloads dependent plugins when the dependency loads. If the dependency is missing, the plugin may fail to load or silently lose features; the error page plugin requires missing dependency covers it.

Skip the C#: describe your plugin

Open generator