Show HN: In Meeting – A native macOS Mic/Cam observer for home automation

pcbmaker201 pts0 comments

GitHub - fellowgeek/in-meeting · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

fellowgeek

in-meeting

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>27 Commits<br>27 Commits

In Meeting.xcodeproj

In Meeting.xcodeproj

In Meeting

In Meeting

docs

docs

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

View all files

Repository files navigation

In Meeting - macOS Camera/Microphone Status Monitor

In Meeting is a native macOS utility built for smart home enthusiasts and privacy-conscious users. Whether you want to toggle a physical "Do Not Disturb" status light outside your home office door using Home Assistant webhooks, or you want to be alerted instantly with a macOS notification whenever a background application silently accesses your camera or microphone, In Meeting handles it seamlessly.

A lightweight macOS utility that instantly triggers webhooks to update your home automation status lights (free/busy) and displays native notifications the second any app accesses your camera or microphone. Unlike heavy log-polling scripts, it relies entirely on native macOS framework observers, resulting in near-zero CPU and battery impact.

Key Features

Direct Hardware Observers : Connects directly to CoreAudio (microphones) and CoreMediaIO (cameras) registry notifications to detect state transitions instantly.

Menu Bar Status Integration : Runs exclusively as a Menu Bar accessory with outline, recording, and slash icons representing current idle, active, or paused states.

Selectable Device Exclusions : Allows toggle-clicking on any monitored device in the status bar menu. Unchecked devices are excluded from triggering local notifications or webhooks.

Launch at Login : Integrates with the modern macOS 13+ SMAppService API to launch automatically when you log in.

Webhook Integrations :

Supports Combined URLs (sending all video/audio events to single active/inactive endpoints) or Separate URLs (individual URLs for audio active, audio inactive, video active, and video inactive).

Supports GET and POST methods.

Safely percent-encodes parameter placeholder values (like {{device_name}}) in URL queries to support devices with spaces or parentheses.

Custom JSON payload builder for POST requests with placeholder tokens ({{device_name}}, {{device_type}}, {{device_status}}, {{timestamp}}).

Fault Tolerance : Automatic background retries up to 3 times with exponential backoff on connection or server (5xx) errors.

Local macOS Notifications : Triggers native User Notification banners with status summaries matching PRD guidelines.

UI Settings Panel : A clean, modern SwiftUI window that avoids typical macOS Form alignment bugs.

Privacy First & MIT Licensed : Features zero telemetry, zero analytics tracking, and zero external queries. All device observations remain local, and webhook requests are made directly to user targets. The codebase is fully open source under the MIT License.

Architecture Overview

|Finds Microphones & Cameras| B[Create MonitoredDevice Wrapper]<br>C[AVCaptureDevice Notifications] -->|WasConnected / WasDisconnected| B<br>end

%% State Monitoring<br>subgraph Monitoring ["State Monitoring Engine"]<br>B -->|KVC Introspection| D[Extract connectionID]<br>D -->|If Audio Device| E["CoreAudio Listener Registration (AudioObjectAddPropertyListenerBlock)"]<br>D -->|If Video Device| F["CoreMediaIO Listener Registration (CMIOObjectAddPropertyListenerBlock)"]<br>E -->|kAudioDevicePropertyDeviceIsRunningSomewhere| G[Hardware State Change Block]<br>F -->|kAudioDevicePropertyDeviceIsRunningSomewhere| G<br>end

%% Routing<br>subgraph Routing ["Event Dispatcher (AppDelegate)"]<br>G -->|Active / Inactive Event| H{"Is Detection Paused?"}<br>H -->|Yes| I[Log Event & Ignore]<br>H -->|No| J1{"Is Device Excluded?"}<br>J1 -->|Yes| I2["Log Event (Excluded) & Ignore"]<br>J1 -->|No| J[Dispatch Event]<br>end

%% Targets<br>subgraph Actions ["Action Execution"]<br>J -->|Local Alerts| K["NotificationManager (UserNotifications Framework)"]<br>J -->|Network Hooks|...

meeting macos notifications status device native

Related Articles