plugins/* connect the React interface to Syntheo Desktop’s native code. This page describes what each plugin exposes and which user pages to review when it changes. For where the plugins fit in the whole monorepo, see Architecture.
Anatomy of a plugin
Eachplugins/<name> folder follows the same structure:
After any change to a plugin’s commands, run
codegen, then update permissions/default.toml and apps/desktop/src-tauri/capabilities/default.json (plugins/AGENTS.md).
All plugins are registered in apps/desktop/src-tauri/src/lib.rs, with three conditional exceptions:
agentandhooksare not loaded with theapp-storefeature.relayis only loaded in debug builds or with thedevtoolsfeature.
The name of a plugin doesn’t tell the whole story:
notification shows notifications, notify watches the file system. The 2 suffixes (fs2, path2, opener2, store2, sidecar2, deeplink2) denote in-house extensions of an official Tauri plugin with the same name.Inventory
The “Interface” column shows whetherapps/desktop/src imports the @syntheo/plugin-<name> package.
Capture, transcription and dictation
transcription
- Path:
plugins/transcription - Role: drives microphone and system audio capture, live transcription, batch transcription of imported files and retention of audio segments waiting to be sent. It is the plugin the interface uses most.
- Main commands:
- Devices and levels:
list_microphone_devices,list_speaker_devices,start_microphone_level_monitor,set_mic_muted,set_speaker_muted. - Capture:
start_capture,stop_capture,stop_capture_for_session,retry_audio_capture,update_capture_config,update_capture_credentials,get_capture_state,get_capture_snapshot,get_capture_audio_gaps. - Recovery after a stop:
list_stopped_captures,list_capture_recoveries, lifecycle markers (save_capture_lifecycle_marker…). - Live transcription:
flush_live_transcript,render_transcript_segments,render_session_transcript. - Batch and import:
start_transcription,stop_transcription,begin_audio_upload,append_audio_upload,refine_batch_transcript,save_batch_transcript,reconcile_refined_speaker_clusters. - Subtitles:
parse_subtitle,export_to_vtt. - Languages:
is_supported_languages_liveand_batch,suggest_providers_for_languages_liveand_batch,list_documented_language_codes_liveand_batch. - In-memory audio:
list_capture_audio_chunks,delete_transcribed_capture_audio,delete_processed_session_audio.
- Devices and levels:
- Events:
CaptureLifecycleEvent,CaptureStatusEvent,CaptureDataEvent,LiveTranscriptPersistenceEvent,SessionAudioRetentionEvent,TranscriptionEvent. - Internal dependencies:
crates/audio,crates/db-app,crates/language,crates/storage,crates/transcript,crates/transcription-core,crates/owhisper-client,crates/owhisper-interface; pluginsdb,fs-sync,settings,store2,tray. - Affected doc pages: /en/meetings, /en/import-recordings, /en/languages, /en/ai-setup, /en/offline, /en/data-and-privacy, /en/troubleshooting.
dictation
- Path:
plugins/dictation - Role: records the voice, sends it to the STT server and inserts the text into the active app. Insertion has a Linux implementation and a Windows one (
src/insertion/). - Commands:
show,hide,set_phase,update_amplitude,start_recording,start_system_recording,stop_recording,cancel_recording,capture_target,insert_text. - Internal dependencies:
crates/owhisper-client,crates/owhisper-interface,crates/audio. - Affected doc pages: /en/dictation.
detect
- Path:
plugins/detect - Role: spots the apps that use the microphone, respects Do Not Disturb mode, reads the accessibility tree of meeting windows to send or capture chat messages, and captures screen shares.
- Commands:
list_installed_applications,list_mic_using_applications,set_respect_do_not_disturb,set_ignored_bundle_ids,set_included_bundle_ids,set_mic_active_threshold,inspect_meeting_accessibility,send_meeting_chat_message,capture_meeting_chat_messages,capture_meeting_screen_share,get_preferred_languages,get_current_locale_identifier. - Events:
DetectEvent(MicDetected,MicStopped,MicMuteStateChanged,SleepStateChanged…). - Internal dependencies:
crates/detect,crates/notification-interface; pluginssettings,windows. - Affected doc pages: /en/automatic-capture (“Detect an unscheduled meeting”, “Stop listening”, “Inform participants”, “Capture shared screens” sections, and the per-platform availability table).
Other audio plugins
Data and content
db
- Path:
plugins/db - Role: exposes the SQLite database to the interface. Applies migrations, runs queries and pushes changes to subscribers.
- Commands:
execute,execute_transaction,execute_proxy,subscribe,unsubscribe,list_meetings,get_meeting,get_meeting_transcript,get_recurring_meeting_history,apply_session_ingest,get_startup_status,wait_until_ready. - Internal dependencies:
crates/db-core,crates/db-app,crates/db-execute,crates/db-migrate,crates/db-reactive,crates/session-ingest,crates/agent-access. - Consumers:
packages/db-tauriand the interface; thesession,contacts,template,export,local-apiandtranscriptionplugins depend on it on the Rust side. - Affected doc pages: /en/meetings, /en/notes, /en/data-and-privacy.
session
- Path:
plugins/session - Role: transactional writes on notes and folders.
- Commands:
create_session,soft_delete_session,restore_deleted_session,add_session_participant,remove_session_participant,persist_chat_session_proposal,set_session_proposal_status,resolve_session_conflicts,move_session_contents, attachments and audio catalog (catalog_note_attachment,catalog_session_audio,tombstone_session_audio…), folder catalog (ensure_folder_catalog,rename_folder_catalog,update_folder_instructions,update_folder_workspace,update_folder_icon…). - Internal dependencies:
crates/db-app; plugindb. - Affected doc pages: /en/notes, /en/meetings, /en/chat (proposals from the chat).
template
- Path:
plugins/template - Role: renders Jinja prompts and saves the generation result.
- Commands:
render,render_custom,get_template_source,summary_length_policy,dominant_language,prepare_generated_summary,compose_generated_summary,save_generated_summary,save_generated_title,apply_session_content_corrections. - Internal dependencies:
crates/template-app,crates/template-app-legacy,crates/summary,crates/gbnf,crates/language,crates/db-app; plugindb. - Affected doc pages: /en/customize-summaries, /en/languages (language of summaries and titles), /en/chat.
Other data plugins
Windows and system integration
windows
- Path:
plugins/windows - Role: opens, hides and animates windows and tabs, and drives two overlay windows: the floating bar and the live captions.
- Commands:
window_show,window_hide,window_navigate,window_emit_navigate,window_save_frame,window_restore_frame_animated,set_show_app_in_dock,webview_health_ack,floating_bar_show,floating_bar_hide,floating_bar_update,live_caption_show,live_caption_hide,live_caption_update. - Events:
Navigate,OpenTab,WindowDestroyed,VisibilityEvent,WebviewHealthCheck,FloatingBarStop,FloatingBarDictationAction,FloatingBarListeningAction,FloatingBarOpenMain,FloatingBarSettingsChange,LiveCaptionOverlayState… - Internal dependencies:
crates/brand. - Affected doc pages: /en/automatic-capture (“Keep the controls at hand”), /en/meetings.
Other system plugins
Internal, macOS-specific or inherited plugins
When to update the documentation
- A command or event added, renamed or removed: update the table on this page.
- A visible behavior change in a plugin whose “Affected doc pages” column is not “none”: review those pages.
- A plugin that starts being called by the interface (for example
audio-priorityoragent): add the affected user pages and the matching row in Doc ↔ code mapping.