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.

Exit Codes

CodeMeaning
0Build succeeded
1Command error (cancelled, etc.)
3Environment error (Vencord not found, pnpm not found, build 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.