Plugins
Plugins — the unit for adding what the host doesn't know about
Every domain feature in LVIS (mail, calendar, meetings, documents, corporate APIs) is split out into plugins. The host core never imports plugin-specific code (SDK type-only + CI enforced).
static manifest
lvis-plugin-sdk
Plugin registration model — static manifest
Tools, Skills, Hooks, MCP servers, events, and UI slots are all declared statically in the
plugin.json manifest. There is no runtime API like registerTool/registerSkill/registerCommand in the SDK. Skills provide instructions; only pure manifest Tool objects are callable.Local · RAG
Local Indexer
id: local-indexer · v0.6.2
kiwipiepy Korean morphological analysis + pymupdf4llm + FTS5 + LanceDB. Folder watching via chokidar.
Mail · Calendar
Microsoft 365 (Outlook)
id: ms-graph · v0.5.2
MSAL OAuth + Electron safeStorage tokens. 31 mail + calendar tools.
Audio · STT
Meeting
id: meeting · v0.8.3
OpenAI Whisper API (gpt-4o-transcribe) + PCM16LE 16kHz/3sec chunks.
Proactive
Work Assistant
id: work-assistant · v0.11.2
10+ detectors → triggerConversation. Unifies mail/calendar/meeting signals.
Install flow
- Pick a plugin from the Marketplace catalog → "Install".
- The web page fires an
lvis://install/<slug>deeplink. - The host (
src/main/lvis-protocol.ts) parses the URL, validates the manifest, and verifies the Ed25519 signature. - A plugin permission dialog appears → user confirms → its own namespace
~/.lvis/plugins/<pluginId>/is created. - The validated declarative bundle is activated as one unit and the plugin's
start()callback is called.
Past → present consolidation history
- lvis-plugin-email + lvis-plugin-calendar merged into ms-graph (archived 2026-04-28/04-30).
- work-assistant now handles proactive work suggestions.
- The agent-hub sidebar plugin was archived (2026-06-15) and its work board was folded into the personal kanban board built into the app. It is no longer an installable plugin.
- The intranet-only internal portal plugin is the fifth active plugin, but it neither installs nor runs outside the internal network, so it has no individual page in the public docs.