{"id":15723713,"url":"https://github.com/paolostivanin/snoop-guard","last_synced_at":"2026-01-19T06:32:59.696Z","repository":{"id":141697522,"uuid":"70281102","full_name":"paolostivanin/Snoop-Guard","owner":"paolostivanin","description":"Receive a notification whenever your webcam and/or your microphone are being used","archived":false,"fork":false,"pushed_at":"2025-10-22T07:30:15.000Z","size":96,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T09:26:48.001Z","etag":null,"topics":["c","microphone","notifications","privacy","webcam"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paolostivanin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-10-07T20:36:52.000Z","updated_at":"2025-10-22T07:30:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"bb243c6e-f725-4ea5-a5ee-cc277694c457","html_url":"https://github.com/paolostivanin/Snoop-Guard","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/paolostivanin/Snoop-Guard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolostivanin%2FSnoop-Guard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolostivanin%2FSnoop-Guard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolostivanin%2FSnoop-Guard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolostivanin%2FSnoop-Guard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paolostivanin","download_url":"https://codeload.github.com/paolostivanin/Snoop-Guard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paolostivanin%2FSnoop-Guard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28562405,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","microphone","notifications","privacy","webcam"],"created_at":"2024-10-03T22:12:56.220Z","updated_at":"2026-01-19T06:32:59.689Z","avatar_url":"https://github.com/paolostivanin.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snoop Guard\n\nReceive a notification every time your webcam and/or your microphone are being used.\n\nProject status: active, user-space daemon + CLI.\n\n## Requirements\n- GCC or Clang\n- glib-2.0, gio-2.0, gobject-2.0\n- alsa-lib (for microphone checks)\n- libnotify (desktop notifications)\n\n## Build\n```\n$ mkdir -p build \u0026\u0026 cd build\n$ cmake -DCMAKE_BUILD_TYPE=Release ..\n$ cmake --build .\n```\n\nCheck version:\n```\n$ ./sg-daemon --version\n$ ./sg-ctl --version\n```\n\n## Configuration\nSnoop Guard reads its configuration from: `$HOME/.config/snoop-guard.ini`\n\nA sample configuration is provided at the repository root as `snoop-guard.ini`.\nCopy it to your config directory and adjust values:\n```\n$ mkdir -p \"$HOME/.config\"\n$ cp ./snoop-guard.ini \"$HOME/.config/snoop-guard.ini\"\n```\n\nRelevant options:\n- [server]\n  - `check_interval`: polling interval in seconds (\u003e 5)\n  - `notification_timeout`: seconds; 0 = manual dismissal\n  - `microphone_device`: ALSA device name (e.g., sysdefault). If unset/invalid, mic checks are skipped\n- [policy]\n  - `allow_list`: semicolon-separated process names that will NOT trigger a notification when using the webcam\n  - `deny_list`: semicolon-separated process names that WILL trigger a notification when using the webcam\n\nNotes:\n- The policy lists apply to webcam checks. Microphone process attribution is not available yet.\n\n## Running as a user service (systemd)\nThis project is intended to run as a per-user systemd service. A unit file is provided: `snoop-guard.service`.\n\nInstall and enable:\n\n```\n$ mkdir -p \"$HOME/.config/systemd/user\"\n$ cp ./snoop-guard.service \"$HOME/.config/systemd/user/\"\n$ systemctl --user daemon-reload\n$ systemctl --user enable --now snoop-guard.service\n```\n\nBy default the unit expects the binary at `/usr/bin/sg-daemon`. If you run it from a custom location, override ExecStart with a user drop-in:\n```\n$ systemctl --user edit snoop-guard.service\n```  \nand add:\n```\n   [Service]\n   ExecStart=\n   ExecStart=/absolute/path/to/sg-daemon\n```\n\n## CLI usage\nThe `sg-ctl` tool connects over the user session D-Bus to query status and recent events:\n- `sg-ctl status`\n- `sg-ctl recent [N]`\n- `sg-ctl --help`\n\n## Limitations\n- Only one microphone device can be monitored at a time.\n- We currently cannot reliably attribute which process is using the microphone; allow/deny lists apply to webcam usage only.\n\n## Security\n- The provided systemd unit includes modern hardening options while preserving access to `/dev/video*` and `/dev/snd/*`.\n- See SECURITY.md for the vulnerability disclosure policy and hardening details.\n\n## License\nGPL-3.0-or-later. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaolostivanin%2Fsnoop-guard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaolostivanin%2Fsnoop-guard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaolostivanin%2Fsnoop-guard/lists"}