Better Plugins Manager

by zero
5
4
3
2
1
Score: 62/100

Description

Category: Productivity Tools

The Better Plugins Manager plugin enhances plugin management in Obsidian, providing users with advanced tools for organizing, customizing, and optimizing their plugin workflow. Key features include delayed startup for improved performance, one-click access to plugin directories, and quick toggle functionality for enabling or disabling plugins. Users can rename plugins, edit descriptions, and add personalized tags for better organization. Additionally, group management and advanced search capabilities allow for logical grouping and quick access to plugins. The intuitive interface ensures a seamless user experience, making plugin management efficient and tailored to individual needs.

Reviews

No reviews yet.

Stats

80
stars
20,455
downloads
16
forks
661
days
2
days
2
days
6
total PRs
0
open PRs
1
closed PRs
5
merged PRs
85
total issues
11
open issues
74
closed issues
150
commits

Latest Version

3 days ago

Changelog

修复

  • 设备清单跨设备可见:设备记录改为每台设备一个独立文件 .obsidian/better-plugins-manager-device-<id>.json。此前记录只存在 data.json 里,一旦同步规则排除该文件(或整份写回互相覆盖),其他设备就永远看不到。
  • 合并时机:保存设置与打开设备页时都会读回这些记录文件,同步到位后无需重载插件即可显示;本机名称/类型优先,只更新时间戳。
  • 删除不复活:从清单移除设备会删除对应文件,并在本次会话内阻止合并把它加回来。

文档

  • 安全披露新增「设备记录」条目:文件内容、存放位置、写入方式(vault adapter,不访问 vault 外部)与删除行为。
  • 设备管理章节改为说明「每设备一个记录文件,本机预设仍只存在本地」。

验证

  • bun run check:41 个测试通过
  • 桌面 + 平板真实库:双向同步后,桌面「平板」页签显示 SM-X710,平板「电脑」页签显示桌面设备

README file from

Github

Better Add-on Manager

A more capable plugin manager for Obsidian.

Keep plugin-heavy Obsidian vaults fast and manageable with delayed startup, batch controls, groups and tags, GitHub installs, and guided conflict diagnosis.

Screenshot


🎯 What is BPM?

Better Add-on Manager (BPM) is a control center for Obsidian community plugins, designed for vaults that rely on many plugins and need more than simple enable/disable toggles.

It helps you keep startup responsive, organize plugins by workflow, install plugins from GitHub releases, and isolate conflicts when something breaks.

🚀 Startup 📦 Management 🏷️ Organization 📥 Installation 🔍 Diagnosis
Delayed plugin startup and startup self-checks Batch enable/disable, quick search, and status filters Groups, tags, notes, descriptions, and custom names Install from GitHub repositories and release versions Guided conflict troubleshooting with report generation

✨ Core Features

BPM is organized around five focused tabs. Each tab owns one workflow, so related controls stay together and the manager remains easy to scan across desktop and mobile.

Tab Workflow
🧩 Plugin View Manage installed plugins, metadata, filters, startup behavior, and per-plugin actions
📥 Install Hub Install plugins or themes from GitHub and manage tracked sources
📦 Transfer Pack Export, import, and restore plugin/theme packs across vaults
🎛️ Ribbon Order Control Obsidian ribbon icon order and visibility
🔍 Conflict Diagnosis Locate plugin problems and generate troubleshooting reports

🧩 Plugin View

The main tab for day-to-day plugin management.

Download function panel

Area What it does
Plugin list Browse installed community plugins in a compact, searchable management view
Batch actions Enable or disable plugins in bulk, including grouped workflows
Filters Filter by enabled state, group, tag, delay setting, and keyword
Organization Add custom names, descriptions, notes, groups, and tags
Startup control Assign delayed startup presets and keep startup behavior visible from the list
Plugin actions Check updates, download updates, restart a plugin, temporarily start a plugin, open settings, open folders, copy IDs, open repositories, clear config, hide, or delete
BPM tags Automatically marks BPM-installed plugins with bpm-install and supports ignored plugins with bpm-ignore

📥 Install Hub

The Install Hub handles GitHub-based installation and the sources BPM can track after installation.

Download function panel

Area What it does
Install type Switch between plugin and theme installation
Repository input Accepts user/repo or full GitHub repository URLs
Release selection Fetch available GitHub releases and install latest or a selected version
Release notes Shows release information before installation when available
Recent installs Keeps recently used repositories for faster repeated installs
Source tracking Optionally tracks installed repositories for later checks, updates, and reinstalls
Source management Review tracked plugin/theme sources, update targets, reinstall items, and keep source metadata current

📦 Transfer Pack

The Transfer Pack tab moves plugin setups between vaults without turning the README into a manual checklist.

Transfer Pack

Area What it does
Export list Select local plugins and themes to include in a JSON transfer pack
Plugin configs Export selected plugin configuration files when needed
Taxonomy Export BPM groups, tags, and delay presets
Layout data Export manager order, hidden items, and ribbon layout
Sources Export GitHub repository maps, source subscriptions, and install history
Workspace preferences Export style, delay mode, tag display, and startup-check preferences
Import preview Load a pack, review bundled plugins, themes, sources, configs, and layout data before applying
Restore options Install missing plugins/themes, merge plugin config, restore enabled state, apply layout, merge sources, and import themes

🎛️ Ribbon Order

The Ribbon Order tab keeps Obsidian's left ribbon predictable, especially when delayed plugins register icons after startup.

Ribbon Sort Function Panel

Area What it does
Icon ordering Drag ribbon items into a stable order
Visibility control Show or hide individual ribbon icons
Native sync mode Manages ribbon layout in BPM data without relying on Obsidian workspace config
Reset action Show all ribbon items and sort them by name
Reload guidance Prompts for reload when hidden startup icons need Obsidian to refresh

🔍 Conflict Diagnosis

The Conflict Diagnosis tab guides plugin conflict testing step by step, keeping the tested state and result in one place.

Conflict Troubleshooter

Area What it does
Pre-check Confirms whether the issue still appears when other plugins are disabled
Binary narrowing Uses guided split testing to reduce the suspect plugin set
Conflict pair search Helps locate two-plugin conflicts, including cross-group cases
Manual feedback loop Asks you to test each step and mark whether the problem still exists
State controls Undo the previous step, restart Obsidian, exit troubleshooting, restore the original state, or keep the current state
Result report Generates a Markdown conflict report with the detected plugins and suggested next actions

📦 Installation

Community Plugins

Recommended for most users.

  1. Open Obsidian Settings → Community Plugins.
  2. Search for Better Add-on Manager.
  3. Install and enable the plugin.

Manual Install

Use this when you want to install a GitHub release directly.

  1. Download the latest release.
  2. Copy main.js, manifest.json, and styles.css into .obsidian/plugins/better-plugins-manager/.
  3. Restart Obsidian.
  4. Enable Better Add-on Manager from Settings → Community Plugins.

🚦 Quick Start

Open BPM

After enabling the plugin, open BPM in either way:

  • Click the BPM icon in the left ribbon.
  • Run Open the plugin manager from the command palette.

First Steps

  1. Start in Plugin View to review installed plugins, filters, groups, tags, and delay settings.
  2. Use Install Hub when installing plugins or themes from GitHub.
  3. Use Transfer Pack when moving a plugin setup between vaults.
  4. Use Conflict Diagnosis when a plugin issue needs guided isolation.

Interaction Tips

  • Left-click primary controls to toggle, edit, install, import, or run an action.
  • Right-click a plugin item to open its context menu.
  • Hover toolbar buttons to see tooltips; on touch devices, use long press where supported.

Device management

Open Devices in the manager (on mobile: More → Devices). Enable Manage by device type, then check this device's type. Device types are fixed to Computer, Tablet and Phone; each type can hold several named presets and starts with one that inherits your current settings. Enabling this feature is optional.

Each preset stores plugin enabled states, assigned delay groups, appearance, and Ribbon visibility/order. The Devices page manages this device's type, preset creation/duplication/renaming/deletion, and which preset this device uses; any preset can reuse another preset's settings. When a type has not been configured yet and exactly one configured preset exists in another type, it is adopted automatically; with several candidates nothing is chosen for you — use Reuse another preset's settings on the Devices page. The device list is informational. The manager itself and BPM-ignored plugins are excluded from device-specific plugin switching. Group/tag metadata and delay definitions stay global. Desktop-only plugins are never started by the device manager on mobile.

The three scoped tabs — Plugins, Appearance and Ribbon — carry the same Configure for device selector, listing named presets grouped by device type. Editing the preset this device uses applies immediately; editing another preset only saves it, and the device using it picks the change up on its next start or reload. Plugin enable/delay, appearance (theme and CSS snippet states), and Ribbon visibility/order are stored per preset; install sources, import/export, troubleshoot, groups, tags and delay definitions stay global.

Device records are kept in one small file per device under the vault's config directory, so every device sees the others after syncing; the preset this device uses stays local. Names default to the desktop hostname or the mobile model and can be edited. The local identity stays in Obsidian's device-local storage. The device type is detected from Obsidian's platform information and can be corrected manually or with Detect again from platform. When the platform identifier refreshes (sync system or software update), the old device record is migrated to the new identifier and the locally stored preset choice is kept; if that preset was deleted elsewhere, the device falls back to the first preset of its type and says so. There is no per-device configuration: mobile has no stable long-lived device identifier, so per-device forks cannot be reconciled after syncing. To tell two devices of the same type apart, create multiple named presets and pick one on each device. Reinstalling or clearing local data can create a new device record; just pick a preset again. Other devices apply synced changes after reloading the plugin. Concurrent edits follow your sync provider's conflict handling; there is no live cross-device merge.

Why a mobile device can appear more than once

Mobile platforms do not give web or plugin code a stable hardware identifier:

  • Obsidian may not expose Capacitor's Device bridge at all. When it does, getId() is an app/vendor-scoped value, not a physical-device serial; it can change after clearing app data, reinstalling the app, moving to a new WebView data directory, or an OS/vendor migration.
  • The fallback is a UUID kept in Obsidian's device-local storage. It survives normal restarts, reloads and software updates, but not clearing app storage or reinstalling the app.
  • Device-local storage belongs to one installation, not to the physical device, and is never synced.
  • BPM stores only a hash of the platform identifier, uses it for the device list and to remember this installation's preset choice, and never keys configuration by device id. A duplicate or removed record therefore does not change presets, their contents, or which preset another installation uses.
  • To treat two installations as the same device, rename or remove the stale record manually and pick the same named preset on each installation. Per-device configuration is intentionally absent because it cannot be reconciled reliably after syncing.

Native Obsidian plugins can start before the manager applies a preset. Use the existing delayed-start mode and startup takeover if you need the manager to control startup ordering. Missing plugins and unavailable Ribbon icons retain their saved choices. Reorder Ribbon items using the up/down buttons on touch devices.

Validation: bun run build, node --test tests/device-management.test.mjs. UI validation uses an isolated empty vault; physical touch scrolling still requires mobile-device testing.

Security and Disclosure

BPM is a local Obsidian plugin manager, but some features intentionally use external services or browser APIs:

  • External network requests: BPM contacts GitHub only for user-visible plugin management features such as fetching community plugin metadata, resolving repositories, checking releases, and installing or updating plugins/themes from GitHub. These requests may use github.com, api.github.com, and raw.githubusercontent.com. BPM also opens github.com repository pages and the project tutorial link on www.bilibili.com only when the user clicks the related buttons.
  • Clipboard access: BPM writes to the system clipboard only when the user clicks Copy ID for a plugin.
  • Vault file access: BPM reads plugin/theme metadata, selected plugin configuration files, transfer packages, and legacy export folders for management, migration, backup, import/export, and troubleshooting features. It does not upload vault notes to a remote service.
  • Device records: When device management is used, BPM writes one small JSON file per device into the vault's config directory (.obsidian/better-plugins-manager-device-<id>.json) so devices can list each other after syncing. These files contain only a device id, display name, device type, and last-seen timestamp — no notes, plugin settings, or credentials. They are written with Obsidian's vault adapter, never outside the vault, and removed when the device is removed from the list.
  • Base64 encoding/decoding: BPM uses runtime btoa/atob only to pack and restore binary/text files inside local Transfer Pack JSON data. It is not used to hide API keys, URLs, remote code, or executable payloads.
  • Scanning limitations: If a plugin catalog or marketplace reports that malware, obfuscation, or network scanning is unavailable, review the source code in this repository and the release assets before installing. BPM does not intentionally obfuscate its source.

🔍 Conflict Diagnosis Tutorial

Use Conflict Diagnosis when a problem appears after enabling community plugins and you need a structured way to narrow down the cause.

Workflow

  1. Open the Conflict Diagnosis tab, or run Troubleshoot plugin conflicts from the command palette.
  2. Start a diagnosis session. BPM records the current plugin state before changing anything.
  3. Test your vault after each step, then choose Problem Still Exists or Problem Gone.
  4. Continue through the guided split tests until BPM narrows the result to a plugin or plugin pair.
  5. Review the result, restore the original plugin state or keep the current state, then generate a Markdown report if needed.

Notes

  • Diagnosis depends on your feedback at each step; use the same test action every time.
  • Intermittent bugs, load-order issues, configuration-specific bugs, or conflicts involving three or more plugins may still need manual verification.
  • You can undo the previous step, restart Obsidian during testing, exit the session, restore the original state, or keep the current state.

🛡️ Startup Takeover

When Delayed Startup is enabled, BPM checks .obsidian/community-plugins.json to make sure Obsidian and BPM are not trying to control the same plugins at startup.

Case BPM behavior
No unmanaged plugins Starts normally
Unmanaged plugins detected Shows a takeover prompt
Auto Takeover enabled Moves detected plugins under BPM management automatically
Plugin marked bpm-ignore Leaves it in Obsidian's native startup list

Taking over keeps delayed startup, enabled state, and BPM's plugin records consistent. After a successful takeover, restart Obsidian so the startup list is applied cleanly.


📦 Transfer & Legacy Export

For current versions, use the Transfer Pack tab to move setups between vaults. It exports and imports plugin lists, themes, selected plugin configs, groups, tags, delay presets, layout data, ribbon order, source subscriptions, install history, and workspace preferences.

The older Markdown/frontmatter export for Obsidian Base is kept only for legacy data compatibility. New setups should use Transfer Pack instead of configuring a Base export folder.


⚙️ Settings

BPM settings are split into focused pages:

Page What you can configure
Basic Language, persistent filters, delayed startup, delayed-start countdown, auto takeover, startup update checks, source update checks, source auto-update, BPM tag visibility, ribbon order, command registration, debug mode, and GitHub token
Main Page Actions Choose which plugin actions appear directly on plugin cards and which stay in the right-click menu
Style Plugin list layout, item display style, group/tag styles, and disabled-plugin fading
Groups Create, rename, recolor, and delete plugin groups
Tags Create, rename, recolor, and delete plugin tags
Delay Create and maintain delayed-start profiles; shown only when delayed startup is enabled

⌨️ Commands

Command Availability Description
Open the plugin manager Always available Opens the BPM main interface
Control a plugin Always available Search a plugin, then enable, disable, single-start, restart, open settings, open folder, open repository, or copy ID
Save current plugin state as profile Always available Saves the current enabled/disabled state as a reusable command profile
Restore previous plugin state Available after a BPM command changes plugin state Restores the snapshot captured before the last command-driven state change
Troubleshoot plugin conflicts Always available Starts the conflict diagnosis workflow
Enable/Disable selected plugin Optional setting Registers one command per plugin for direct toggling
One-click Enable/Disable selected group Optional setting Registers group-level commands for batch toggling
One-click Enable/Disable selected tag Optional setting Registers tag-level commands for batch toggling
Apply selected profile Optional setting Registers one command per saved plugin profile

📱 Compatibility

Platform Supported
Windows / macOS / Linux ✅
Android ✅
iOS / iPadOS ✅

The plugin automatically switches between desktop/mobile layouts based on the platform.


🤝 Contributing

Issues and PRs are welcome!

  • Bug Reports: Please include logs and reproduction steps
  • Feature Requests: Consider opening a discussion or issue first

🙏 Acknowledgments


📄 License

MIT

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Copilot
3 years ago by Logan Yang
Run agents in Obsidian - OpenCode, Codex, Claude Code etc.
Kanban
6 years ago by mgmeyers
Create markdown-backed Kanban boards in Obsidian.
Homepage
5 years ago by mirnovov
An Obsidian plugin that opens a specified note, canvas, or workspace on startup, instead of the most recent one.
Task Genius
4 years ago by Boninall
Comprehensive task management plugin for Obsidian
Plugin Update Tracker
4 years ago by Steven Swartz
Know when installed obsidian plugins have updates and evaluate the risk of upgrading
Task Board
2 years ago by Atmanand Gauns
An Obsidian plugin to view and manage your tasks from whole vault using much efficient boards using various methodologies.
Slash Commander
3 years ago by alephpiece
Customizable slash command list for Obsidian.md
Plugin Groups
4 years ago by Mocca101
A plugin that allows you to easily group and manage your other plugins in Obsidian.
Archiver
5 years ago by ivan-lednev
Archive completed tasks in your Obsidian vault (plus other org-mode-like features)
Hotkeys for specific files
6 years ago by Vinzent
Personal Assistant
5 months ago by edonyzpc
A plugin that harnesses AI agents and streamlining techniques to help you automatically manage Obsidian.
ToggleList
4 years ago by Lite C
This is a simple plugin for Obsidian to overwrite the default behavior of toggle checkbox status. Also, it offers a simple way to toggle through frequently used attributes: task states, task tags, highlighted list, etc.
Auto Hide
4 years ago by skelato1
This Obsidian plugin enables you to collapse (and expand) the sidebar easier.
Plugin Manager
3 years ago by ohm-en
Allows better management of Obsidian.md plugins.
Custom window title
6 years ago by Joost Plattel
Small Obsidian plugin that updates the window title with the current open note
Task Marker
4 years ago by wenlzhang
An Obsidian plugin to change task status and append text with hotkeys and right-click context menu.
Vim Toggle
4 years ago by Conner Ohnesorge
This is a plugin that adds the ability to toggle on and off vim into obsidian with a nice notice to let you know when you switched.
Open with
5 years ago by phibr0
Tag Project
3 years ago by Odaimoko
Note Chain
2 years ago by ZigHolding
Package my frequently used tools, highly personal plugins.
Weekly Review
4 years ago by Brandon Boswell
Rapid Notes
4 years ago by valteriomon
Quick Open
2 years ago by James Alexandre
Quickly select items in any modal using keyboard shortcuts. Supercharge your workflow with fast, efficient item selection in Obsidian modals.
Sequence Hotkeys
4 years ago by Ruan Moolman
Obsidian plugin to support a sequenced of keyboard shortcuts to run commands.
Tag Buddy
3 years ago by David Fasullo
Unlock powerful tag editing features in Reading Mode. Add, remove and edit tags across your vault. Use tag inboxes to level up any workflow with a powerful idea assembly line.
Command Alias
5 years ago by @Yajamon
Obsidianのコマンドに対してエイリアスを設定するプラグイン
Swiss army knife
3 years ago by mwoz123
Notice logger
3 years ago by @gapmiss
An Obsidian.md plugin for logging all notices to the developer console, with optional prefix & timestamp.
New Note Fixer
2 years ago by mnaoumov
Obsidian Plugin that unifies the way non-existing notes are created when clicking on their links
open-as-md
3 years ago by kursad-k
open and edit preferred formats as markdown in Obsidian
Custom State for Task List
3 years ago by Okami Wong
A plugin for Obsidian to define your own states for task items.
GTD No Next Step
3 years ago by Tobias Davis
Obsidian plugin for GTD workflow, badge projects with no next step.
Extended Task Lists
3 years ago by joeriddles
Extended Markdown support for task lists in Obsidian.
Overdue
5 years ago by Peter Parente
Obsidian plugin that marks items as [[Overdue]] if they are not checked off by their due date
Plugin Reloader
3 years ago by Benature
manual reload plugins
Open File by Magic Date
4 years ago by simplgy
Canvas Blocks
2 years ago by Kay606
Alias Picker
3 years ago by rostunic
File chucker
4 years ago by Ken Lim
Community Install Manager
3 months ago by Konstantin Volobuev
Allows you to use `community-plugins.js` to search for and automatically install plugins when you launch `obsidian`.
Context Command Hider
2 years ago by Mara-Li
This plugin allows you to hide every command from the Obsidian's right-click context menu.
Spacekeys
2 years ago by Jared Lumpe
Obsidian plugin to define hotkeys based on sequences of keypresses.
Custom save
3 years ago by Hananoshika Yomaru
add custom save action to your save command
Next Link
3 years ago by Juan Luque
Cursor Position History
2 years ago by Florian Gubler
A Plugin to remember (and make accessible) the cursor history in Obsidian. Both within a file and across files.
Hide Commands in Menu
2 years ago by bomian98
Obsidian Plugin, hide different commands in different menus.
Jira Issue Manager
2 years ago by Alamion
Obisdian plugin to sync tasks between Obsidian and Jira
LinkMagic
3 years ago by AndyReifman
Settings Navigator
a month ago by Lawrence Lee
An Obsidian plugin that adds browser-style history navigation, quick plugin management, and quality-of-life improvements to the Settings modal.
Editor Autofocus
3 years ago by Mgussekloo
Templated daily notes
3 years ago by digitorum
Allow to create templayted daily note in specific folder
Peekaboo
2 years ago by Wang Guoshi
An Obsidian plugin protects your privacy by setting a password to hide notes.
Asana
2 years ago by Ryan Bantz
Obsidan plugin that creates tasks in Asana for highlighted text or the current line
Personal OS
3 years ago by A.Buot
NodeFlow
2 years ago by LincZero
Render node streams like `ComfyUi`, `UE`, `Houdini`, `Blender`, etc., to make it easy to write relevant notes. json describes the chart, compared to screenshots, making it easier to modify later. The plugin is also compatible with blogs.",
BlazeJump
2 years ago by henryco
Plugin for Obsidian that makes text navigation blazingly fast.
URI Converter
2 years ago by wenlzhang
An Obsidian plugin to convert Obsidian URIs to Obsidian internal links.
Runsh
2 years ago by Ddone
A simple plugin that allows to run shell commands from obsidian.
China BRAT
2 months ago by 快速安装插件
Obsidian 插件:粘一个目录地址就能装插件(不走 zip、无解压代码,产物 3KB)
Task Mover
2 years ago by Mariia Nebesnaia
A plugin for obsidian to move unfinished tasks to the daily note automatically
Outline to task list
3 years ago by alexandrerbb
A simple Obsidian plugin to convert a note's outline to a task list
Plugin Update Locker
2 years ago by Lemon695
It can prevent specified plugins in Obsidian from updating, ensuring that these plugins run stably on a specific version and avoiding compatibility issues or feature changes caused by updates.
Bottom to Top
2 years ago by Henry Gustafson
Previous Daily Note
2 years ago by Marcos Talau
Plugin for Obsidian that opens the previous daily note
Close Window When Empty
2 years ago by Taylor Jadin