Plugin Observability Layer

unlisted

by Hipepper

Observe which community plugins react to the active note, inspect runtime health, and stream activity to the terminal.

Updated 1mo agoMIT
View on GitHub

Plugin Observability Layer

中文说明

Observe how Obsidian community plugins react to the active note, inspect their runtime health, and stream the session to the terminal in real time.

Plugin Observability Layer on a GridSearch note

Plugin Observability Layer on a RandomForests note

Why This Plugin Exists

Obsidian gives power users an incredibly composable plugin ecosystem, but it is still hard to answer practical runtime questions:

  • Which community plugins reacted while I was viewing this note?
  • Did any callback turn slow or throw?
  • Can I watch those events outside the app while debugging a vault?

Plugin Observability Layer focuses on that operational gap. It adds a dedicated sidebar dashboard, records best-effort runtime activity for the current Markdown page, and mirrors the same activity to NDJSON so you can inspect it from the terminal.

Core Capabilities

  • Page-aware observability for the active Markdown note
  • Sidebar dashboard with per-page metrics, plugin health, and recent events
  • Runtime classification for ok, warn, and error hook outcomes
  • Best-effort instrumentation for common plugin registration paths, including commands, app events, DOM events, and Markdown processors
  • NDJSON event logging for external tooling and terminal workflows
  • Copy-ready tail command from inside the dashboard
  • English and Chinese UI strings
  • Desktop-only design for operational debugging workflows

What You See In The Dashboard

  • Current page events Total hook calls captured for the currently tracked note.
  • Plugins touched on page Distinct community plugins that reacted to the note.
  • Loaded community plugins Plugins that are both enabled and currently loaded.
  • Slow threshold The latency threshold used to mark hook executions as slow.
  • Current page plugin health Per-plugin health, event totals, last observed hook, and last seen time.
  • Recent events for current page A rolling event stream with timestamp, hook source, duration, status, and error details.

How It Works

The plugin wraps common community plugin registration surfaces exposed through Obsidian APIs and records callback execution when those wrapped paths fire. It keeps the most recent Markdown page context pinned even if focus moves into the observability panel, which makes the dashboard usable during inspection.

Captured data can also be written to:

/.obsidian/plugins/plugin-observability-layer/runtime/events.ndjson

That file can be tailed by the included watcher script.

Installation

Community Plugins

Once the plugin is approved and published in the Obsidian Community Plugins directory, install it directly from:

Settings -> Community plugins -> Browse

Search for Plugin Observability Layer, install it, and enable it.

Manual Installation

  1. Download main.js, manifest.json, and styles.css from the matching GitHub release.

  2. Create this folder inside your vault:

    .obsidian/plugins/plugin-observability-layer/

  3. Copy the three release assets into that folder.

  4. Reload Obsidian.

  5. Enable Plugin Observability Layer in Community Plugins.

Usage

  1. Open any Markdown note.
  2. Run Plugin Observability Layer: Open dashboard.
  3. Interact with the note, switch notes, or trigger commands.
  4. Inspect the dashboard cards, plugin health table, and recent event stream.
  5. Use Copy tail command if you want the equivalent terminal watcher command on your clipboard.

Also available:

  • Plugin Observability Layer: Clear session events
  • Plugin Observability Layer: Re-instrument enabled community plugins

Terminal Watcher

Watch the vault runtime log:

node scripts/watch-log.mjs /path/to/vault

Or point directly at the NDJSON file:

node scripts/watch-log.mjs /path/to/vault/.obsidian/plugins/plugin-observability-layer/runtime/events.ndjson

Scope And Limitations

This plugin is an observability layer, not a perfect tracer.

  • Obsidian does not provide one official API that says which plugin just ran for which page.
  • Results are therefore best-effort and depend on whether a plugin uses instrumented registration paths.
  • Plugins doing work outside those wrapped APIs may be partially visible or invisible.
  • Reloading Obsidian after first install is recommended so instrumentation is active for the full session.

That trade-off is intentional: the plugin prioritizes actionable operational visibility for real vault debugging over claiming impossible precision.

Repository Layout

  • plugin-observability-layer/main.js
  • plugin-observability-layer/manifest.json
  • plugin-observability-layer/styles.css
  • scripts/watch-log.mjs
  • docs/images/
  • manifest.json
  • versions.json

Release Readiness

This repository includes the root files expected for Obsidian community submission:

  • README.md
  • LICENSE
  • manifest.json
  • versions.json

For the submission checklist and release flow, see:

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.