# Addons

What the SocketSVC addon system is, and the one distinction everything else follows from

Source: https://socketsvc.vercel.app/addons
SocketSVC can install, switch and remove extra things from inside the game — from the **Addons** tab of the voice settings (`V`, or `/ssvc addons`).

It manages two different kinds of thing, and the difference decides everything else.

## Addons and mods

| | **Addon** | **Mod** |
| --- | --- | --- |
| What it is | built against SocketSVC's own [addon API](/addons/writing) | an ordinary Fabric/NeoForge/Forge mod |
| Lives in | `config/socketsvc/addons/` | `mods/` |
| Enable, disable, delete | **live, while you play** | **on the next restart** |
| Can register keybinds, items, mixins | no | yes |
| SocketSVC can unload it | yes | never |

The kind is declared by the thing itself and known before anything is downloaded. Every row in the manager shows it, because a screen where one toggle is instant and the next silently means "next restart" teaches people the toggles do not work.

<Callout title="Why a mod can never hot-load">
  Everything a mod registers with the loader — keybinds, packets, HUD layers, commands, mixins, items — happens **once, during startup**. A mod you enable from a settings screen has missed all of it by minutes, and no amount of wanting changes that. So SocketSVC does not pretend: a mod's row says what it *will* be, and the game has to restart for it to be true.
</Callout>

## Where to go next

| | |
| --- | --- |
| [Using addons](/addons/using) | Installing, switching, removing, and what the restart gate means |
| [Servers and addons](/addons/servers) | A server saying what it uses, and the rule that a server can never say where to get it |
| [Writing one](/addons/writing) | The API, what an addon cannot do, and releasing everything on disable |
| [Publishing](/addons/publishing) | GitHub releases, the index, and why not Modrinth |
| [Cinema and video](/addons/cinema) | Screens that play a stream, and the pipeline behind them |

## What SocketSVC will never do

**Touch a jar it did not put there.** `config/socketsvc/addons/installed.json` records what it installed; a mod you added yourself is invisible to the manager. Deleting somebody's other mods because it thought it was managing them is the one failure here that cannot be apologised for.

**Restart your game.** It says what is needed. Closing an unsaved world to apply a toggle is not a voice chat mod's decision to make.

**Take a download location from a server.** A server can name an addon by id; where to fetch it from comes from the index *you* configured. See [Servers and addons](/addons/servers).