Skip to content

CLI Commands ​

Every command supports these global flags:

FlagEffect
-y, --yesAuto-confirm all prompts
--verboseEnable verbose output
--quietSuppress non-essential output
--jsonOutput structured JSON (see JSON Output)
--json-streamOutput events as NDJSON (see JSON Output)
--no-colorDisable colored output

venpm install ​

Install a plugin and its dependencies.

Usage ​

venpm install <plugin> [options]

Arguments ​

ArgumentDescription
pluginPlugin name as listed in a configured repo

Options ​

FlagDescription
--version <ver>Install a specific semver version (pins in lockfile)
--from <repo>Install from a named repo (when multiple repos have the same plugin)
--local <path>Symlink a local directory instead of fetching
--gitForce git clone (even if tarball is available)
--tarballForce tarball download
--no-buildSkip Vencord rebuild after install
--rebuildForce rebuild (overrides never config)

Examples ​

bash
venpm install channelTabs
venpm install channelTabs --version 0.5.0
venpm install channelTabs --from kamaras
venpm install myPlugin --local ./plugins/myPlugin --no-build

Exit Codes ​

CodeMeaning
0Plugin installed successfully
1Plugin not found, resolution failure, or cancelled
3Environment error (Vencord not found, git missing, build failed)

See Error Codes for the full list of structured error codes returned with each error.

Tip: If the plugin name has a typo, venpm suggests close matches: "Did you mean: BetterVolume?"


venpm uninstall ​

Remove an installed plugin.

Usage ​

venpm uninstall <plugin>

Behavior ​

Checks for reverse dependencies — if other installed plugins depend on the one being removed, venpm warns you and asks for confirmation. Removes the plugin directory from <vencord>/src/userplugins/ and updates the lockfile.

Exit Codes ​

CodeMeaning
0Plugin removed
1Plugin not installed, or user cancelled

See Error Codes for the full list of structured error codes returned with each error.

Tip: If the plugin name has a typo, venpm suggests close matches: "Did you mean: BetterVolume?"


venpm update ​

Update installed plugins to latest versions.

Usage ​

venpm update [plugin]

Without arguments, updates all non-pinned, non-local plugins. With a plugin name, updates only that plugin.

Behavior ​

Fetches fresh indexes from all repos, compares installed versions against latest, and re-fetches updated plugins. Pinned plugins (installed with --version) and local plugins are skipped.

Exit Codes ​

CodeMeaning
0Update complete (even if nothing was updated)
1Plugin not found or cancelled
3Environment error (Vencord not found, git missing, build failed)

See Error Codes for the full list of structured error codes returned with each error.


venpm list ​

List installed plugins.

Usage ​

venpm list

Output Format ​

  Installed plugins (3):

  Name          Version  Method  Repo              Flags
  channelTabs   0.5.0    git     kamaras
  settingsHub   0.3.4    git     kamaras
  myPlugin      local    local   local             pinned

Exit Codes ​

CodeMeaning
0Always

Search for plugins across all configured repos.

Usage ​

venpm search <query>

Behavior ​

Matches query against plugin names and descriptions in all cached indexes. Results show name, version, description, and repo name.

Exit Codes ​

CodeMeaning
0Always (empty results are not errors)

venpm info ​

Show detailed information about a plugin from the index.

Usage ​

venpm info <plugin>

Output ​

Shows version, description, authors, license, dependencies, optional dependencies, Discord/Vencord version ranges, source types, and available versions.

Exit Codes ​

CodeMeaning
0Plugin found
1Plugin not found in any repo

See Error Codes for the full list of structured error codes returned with each error.

Tip: If the plugin name has a typo, venpm suggests close matches: "Did you mean: BetterVolume?"


venpm repo ​

Manage plugin repository sources.

venpm repo add ​

venpm repo add <url> [--name <alias>]

Add a plugin repository. The URL must point to a valid plugins.json. If --name is not provided, venpm derives a name from the URL hostname.

venpm repo remove ​

venpm repo remove <name>

Remove a repository by name.

venpm repo list ​

venpm repo list

List all configured repositories (name and URL).

Exit Codes ​

CodeMeaning
0Operation succeeded
1Repo not found (remove), or URL invalid (add)

venpm config ​

Read and write configuration values.

venpm config set ​

venpm config set <key> <value>

Set a config value using dotted key paths. Values are type-coerced: null, true, false are parsed as their JSON types; strings and numbers are detected automatically.

Examples:

bash
venpm config set vencord.path /home/you/src/Vencord
venpm config set rebuild always
venpm config set discord.restart never
venpm config set discord.binary null

venpm config get ​

venpm config get <key>

Read a config value by dotted key path.

venpm config path ​

venpm config path

Print the config directory path.

Exit Codes ​

CodeMeaning
0Operation succeeded
1Invalid key or value

venpm create ​

Scaffold a plugin repo or plugin.

Usage ​

venpm create <path> [options]

Options ​

FlagDescription
--tsxUse .tsx entry point (React support)
--cssInclude style.css
--nativeInclude native.ts (Node.js / Electron main)

Behavior ​

Walks up the directory tree from <path> looking for a plugins.json with the venpm schema. If found, scaffolds a plugin. If not found, scaffolds a repo.

Examples ​

bash
venpm create ~/src/my-plugins                           # scaffold a repo
venpm create ~/src/my-plugins/plugins/myPlugin          # scaffold a plugin
venpm create ~/src/my-plugins/plugins/myPlugin --tsx --css

Exit Codes ​

CodeMeaning
0Scaffold created
1Path already exists, or filesystem error

venpm rebuild ​

Rebuild Vencord and restart Discord.

Usage ​

venpm rebuild [options]

Options ​

FlagDescription
--restartRestart Discord after rebuilding without prompting
--no-restartSkip Discord restart without prompting

Runs pnpm build in the Vencord source tree, copies the output to Discord's load path (~/.config/Vencord/dist/), and optionally restarts Discord based on the discord.restart config setting.

Verified Restarts ​

A restart is not reported as successful just because the process was spawned. venpm waits for a Discord process to appear, then requires it to still be alive a few seconds later — the settle window is what catches Electron exiting shortly after launch over a bad display, a missing library, or a broken install.

Discord is launched from your desktop session's environment rather than the calling shell's, so a rebuild started from a script, an editor terminal, or an agent does not inherit a display setup that would kill the client on startup. Run venpm doctor to see which display a restart will use.

When the restart fails, the build and deploy are still done — only the restart is lost. venpm reports RESTART_FAILED and quotes the tail of the launch log:

PlatformLaunch log
Linux~/.local/state/venpm/discord-launch.log
macOS~/Library/Logs/venpm/discord-launch.log

Exit Codes ​

CodeMeaning
0Build succeeded
1Command error (cancelled, etc.)
3Environment error (Vencord not found, pnpm not found, build failed, or RESTART_FAILED)

See Error Codes for the full list of structured error codes returned with each error.


venpm inject ​

Patch Discord to load Vencord natively, without shelling out to Vencord's installer.

Usage ​

venpm inject [options]

Options ​

FlagDescription
-b, --branch <branch>Discord branch: stable (default), canary, or ptb
--restartRestart Discord after patching without prompting
--no-restartSkip Discord restart after patching

Behavior ​

On macOS and standard Linux installs, venpm replaces Discord's app.asar with a small Vencord loader shim and moves Discord's original asar to _app.asar. Restart Discord after injecting for the patch to take effect.

macOS App Management

On macOS Sequoia and later, modifying /Applications/Discord.app/Contents/ requires App Management permission for the terminal running venpm. Enable it in System Settings -> Privacy & Security -> App Management, then run venpm inject again.

Exit Codes ​

CodeMeaning
0Patch installed
1Already injected or patch failed
3Discord not found or native inject unsupported

See JSON Output for the structured result shape.


venpm uninject ​

Remove the native Vencord patch from Discord.

Usage ​

venpm uninject [options]

Options ​

FlagDescription
-b, --branch <branch>Discord branch: stable (default), canary, or ptb

Behavior ​

Removes the shim app.asar and restores Discord's original _app.asar backup. If the target Discord branch is already unpatched, the command succeeds and reports that no work was needed.

Exit Codes ​

CodeMeaning
0Patch removed, or target was already unpatched
1Unpatch failed
3Discord not found or native inject unsupported

See JSON Output for the structured result shape.


venpm kill-discord ​

Stop running Discord processes.

Usage ​

venpm kill-discord

Behavior ​

Finds Discord processes using the configured or auto-detected Discord binary and terminates them. Processes that do not exit after the graceful signal are counted under forced.

Exit Codes ​

CodeMeaning
0Scan complete, even if no Discord processes were running

See JSON Output for the structured result shape.


venpm doctor ​

Check environment health.

Usage ​

venpm doctor

Checks ​

CheckWhat it verifies
gitgit binary available
pnpmpnpm binary available
VencordSource path configured or auto-detected
DiscordDiscord binary found
ReposNumber of configured repos
venpmCurrent version

Exit Codes ​

CodeMeaning
0Always (issues are reported, not treated as errors)

venpm validate ​

Validate a plugin index file against the JSON schema.

Usage ​

venpm validate [path] [options]

Arguments ​

ArgumentDescription
pathPath to plugins.json (defaults to ./plugins.json)

Options ​

FlagDescription
--strictAlso check dependency cross-references and probe tarball URLs

Examples ​

bash
venpm validate plugins.json
venpm validate plugins.json --strict

Exit Codes ​

CodeMeaning
0Valid
1Schema errors or strict-mode failures

See Error Codes for the full list of structured error codes returned with each error.


venpm completions ​

Output a shell completion script.

Usage ​

venpm completions [shell]

Arguments ​

ArgumentDescription
shellShell type: bash, zsh, or fish. Auto-detected from $SHELL if omitted.

Setup ​

bash
# Zsh (add to ~/.zshrc)
eval "$(venpm completions zsh)"

# Bash (add to ~/.bashrc)
eval "$(venpm completions bash)"

# Fish
venpm completions fish | source

Exit Codes ​

CodeMeaning
0Script output
2Unknown shell type

Disclaimer — Not affiliated with Discord Inc. or Vencord. Client mods are against Discord's ToS. Use at your own risk.