{"id":48766471,"url":"https://github.com/kl0sin/clyde","last_synced_at":"2026-04-26T09:01:48.218Z","repository":{"id":349989063,"uuid":"1204193127","full_name":"kl0sin/clyde","owner":"kl0sin","description":"A friendly Claude Code session monitor for macOS. Real-time session tracking, attention alerts, multi-session view.","archived":false,"fork":false,"pushed_at":"2026-04-25T07:54:27.000Z","size":15792,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T09:24:56.832Z","etag":null,"topics":["claude","claude-code","developer-tools","macos","menu-bar","menubar-app","native","sparkle","swiftui","switft"],"latest_commit_sha":null,"homepage":"https://kl0sin.github.io/clyde/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kl0sin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"kl0sin","custom":["https://www.buymeacoffee.com/kl0sin"]}},"created_at":"2026-04-07T19:25:38.000Z","updated_at":"2026-04-25T07:54:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kl0sin/clyde","commit_stats":null,"previous_names":["kl0sin/clyde"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kl0sin/clyde","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kl0sin%2Fclyde","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kl0sin%2Fclyde/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kl0sin%2Fclyde/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kl0sin%2Fclyde/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kl0sin","download_url":"https://codeload.github.com/kl0sin/clyde/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kl0sin%2Fclyde/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32291341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T08:29:33.829Z","status":"ssl_error","status_checked_at":"2026-04-26T08:29:18.366Z","response_time":129,"last_error":"SSL_read: 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":["claude","claude-code","developer-tools","macos","menu-bar","menubar-app","native","sparkle","swiftui","switft"],"created_at":"2026-04-13T08:01:48.031Z","updated_at":"2026-04-26T09:01:48.175Z","avatar_url":"https://github.com/kl0sin.png","language":"Swift","funding_links":["https://github.com/sponsors/kl0sin","https://www.buymeacoffee.com/kl0sin"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"site/img/clyde.svg\" width=\"120\" alt=\"Clyde\"\u003e\n\n# Clyde\n\n**A friendly Claude Code session monitor for macOS.**\n\nKnow what Claude is doing — without alt-tabbing.\n\n[Website](https://kl0sin.github.io/clyde/) ·\n[Download](https://github.com/kl0sin/clyde/releases/latest) ·\n[Changelog](CHANGELOG.md)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![macOS 13+](https://img.shields.io/badge/macOS-13%2B-blue)\n![Swift 5.9](https://img.shields.io/badge/Swift-5.9-orange)\n![Universal](https://img.shields.io/badge/binary-universal-purple)\n\n\u003c/div\u003e\n\n---\n\nClyde is a tiny SwiftUI menu bar app that watches every\n[Claude Code](https://claude.com/claude-code) session running on your Mac\nand shows you, in one glance, whether they're working, ready, or need\nyour attention.\n\nIt connects to Claude Code's native hook events, so updates are\n**instant** — no polling, no lag, no missed permission requests.\n\n## Features\n\n- 🟢 **Real-time session tracking** — busy / ready / needs-input, fed by\n  Claude Code's native hooks. No polling.\n- 🔔 **Attention alerts** — sound and macOS notification the moment\n  Claude asks for permission. Never miss a prompt again.\n- 🗂 **Multi-session view** — every Claude session, every terminal, in\n  one expandable panel. Drag to reorder, name them, click to focus the\n  matching window.\n- 📜 **Activity timeline** — recent prompts, permissions and session\n  lifecycle, in plain language.\n- 🎯 **Menu bar capsule** — dominant state at a glance, with two ticks\n  for the other states.\n- 💤 **Snooze** — 15 / 30 / 60 / 120 minute mute when you need quiet.\n- ⌨️ **Global hotkey** — `⌃⌘C` to expand from anywhere.\n- 🛠 **Self-installs the hook** — Clyde adds and self-heals its hook\n  script in `~/.claude/hooks/` so you never have to think about it.\n- 🔒 **Privacy-first** — no telemetry, no network calls, no accounts.\n  Everything stays on your Mac.\n\n## Install\n\nGrab the latest `.dmg` from\n[Releases](https://github.com/kl0sin/clyde/releases/latest), open it,\ndrag `Clyde.app` into your Applications folder, and launch it.\n\nOn first run Clyde offers to install its Claude Code hook automatically —\naccept and you're done.\n\n\u003e **Early releases are not yet code-signed or notarized.** On first\n\u003e launch macOS Gatekeeper will say the app is \"from an unidentified\n\u003e developer\". Right-click `Clyde.app` → **Open** → confirm in the\n\u003e dialog. macOS remembers the exception, so subsequent launches are\n\u003e clean. Signing and notarization are on the roadmap and will land in\n\u003e a later release.\n\n### Updates\n\nClyde ships with [Sparkle](https://sparkle-project.org/) built in for\nin-app auto-updates. The update channel is dormant until signed\nreleases start publishing to the appcast — until then, grab new\nversions from\n[Releases](https://github.com/kl0sin/clyde/releases) directly.\n\n## How it works\n\nClyde reads two things from your local file system:\n\n- `~/.claude/` — to install its hook script and discover Claude Code's\n  settings.\n- `~/.clyde/` — where the hook script writes per-session state files\n  that Clyde watches via FSEvents.\n\nWhen you submit a prompt, Claude Code fires a `UserPromptSubmit` hook →\nthe hook script writes a `\u003csessionId\u003e-busy` marker → Clyde sees it\nwithin milliseconds and updates the UI. When Claude finishes, the `Stop`\nhook removes the marker. Permission requests fire `PermissionRequest` →\nClyde rings a sound and shows the attention pill.\n\nThat's the entire architecture. No polling, no daemon, no privileged\nhelpers.\n\n## Screenshots\n\n**The expanded view — every Claude session at a glance.**\nHero header tells you the dominant state, the list shows each session\nwith its directory, and the activity bar at the bottom keeps a\nrunning tally.\n\n![Clyde expanded view with multiple Claude Code sessions](site/img/screenshots/expanded.png)\n\n**The collapsed widget.** Floats wherever you drop it. The big number\nis the dominant state count; the two ticks on the right show the\nothers. Click to expand, drag to move, hide entirely if you only want\nthe menu bar.\n\n![Clyde floating widget on the desktop](site/img/screenshots/widget.png)\n\n**The menu bar item.** Pixel‑accurate Clyde silhouette plus a colour\ncapsule for the dominant state — purple = working, green = ready,\nblue = needs attention.\n\n![Clyde menu bar item](site/img/screenshots/menubar.png)\n\n## Build from source\n\nClyde is a single self-contained Swift Package. No Xcode project,\nnothing to configure.\n\n```bash\ngit clone https://github.com/kl0sin/clyde.git\ncd clyde\nswift run Clyde\n```\n\nFor a release build wrapped in a proper `.app` bundle:\n\n```bash\nscripts/release/build.sh\nopen build/release/Clyde.app\n```\n\nSee [`docs/release-process.md`](docs/release-process.md) for the full\nrelease pipeline (signing, notarization, DMG, appcast, GitHub Releases).\n\n## Project layout\n\n```\nClyde/                  Main app source\n├── App/                NSApplicationDelegate, panel + menu bar\n├── Models/             Session, ClydeState, ActivityEvent\n├── Services/           ProcessMonitor, AttentionMonitor, hook installer, ...\n├── ViewModels/         App + session list view models\n├── Views/              SwiftUI views\n├── Resources/          clyde-hook.sh (the hook script that ships in the bundle)\n└── Assets/             AppIcon.icns (generated by scripts/generate-icon.swift)\n\nClydeTests/             XCTest test target\nscripts/                Build + release tooling\nsite/                   GitHub Pages landing page (deployed via Actions)\nCasks/                  Homebrew cask formula\n.github/workflows/      CI: deploy-site.yml, release.yml\ndocs/                   Pre-launch checklist + release process docs\n```\n\n## Tests\n\n```bash\nswift test\n```\n\nThe suite is hermetic — `HookInstallerTests` redirects every path\nthrough a throwaway temp home via `AppPaths.homeOverride`, so nothing\nunder your real `~/.claude/` is ever touched. Runs deterministically\nacross reruns on dev machines and CI alike.\n\n## Contributing\n\nBug reports and PRs welcome. For non-trivial changes please open an\nissue first so we can discuss the approach.\n\n## Support development\n\nClyde is free and MIT-licensed. If it's saving you time and you'd\nlike to chip in, there are two ways:\n\n- ❤️  [Sponsor on GitHub](https://github.com/sponsors/kl0sin) — recurring or one-time, processed by GitHub.\n- ☕ [Buy me a coffee](https://www.buymeacoffee.com/kl0sin) — one-off tip, no account needed.\n\nBoth are entirely optional and there's no paid tier — Clyde stays\nfully featured for everyone.\n\n## License\n\n[MIT](LICENSE) — use it, fork it, sell it, do whatever.\n\n---\n\n\u003csub\u003eBuilt in SwiftUI with care by \u003ca href=\"https://github.com/kl0sin\"\u003eMateusz Kłosiński\u003c/a\u003e.\u003c/sub\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkl0sin%2Fclyde","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkl0sin%2Fclyde","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkl0sin%2Fclyde/lists"}