{"id":50960986,"url":"https://github.com/zekiahmetbayar/mochi","last_synced_at":"2026-06-18T14:03:05.740Z","repository":{"id":358359839,"uuid":"1139359060","full_name":"zekiahmetbayar/mochi","owner":"zekiahmetbayar","description":"A pixel-art companion that lives above your macOS menu bar — naps when idle, sweats when your CPU does, and carries your downloads.","archived":false,"fork":false,"pushed_at":"2026-05-17T00:19:33.000Z","size":12441,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T02:41:15.304Z","etag":null,"topics":["desktop-pet","macos","menubar","system-monitor"],"latest_commit_sha":null,"homepage":"","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/zekiahmetbayar.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":null,"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":"2026-01-21T21:25:02.000Z","updated_at":"2026-05-17T00:18:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zekiahmetbayar/mochi","commit_stats":null,"previous_names":["zekiahmetbayar/mochi"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/zekiahmetbayar/mochi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zekiahmetbayar%2Fmochi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zekiahmetbayar%2Fmochi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zekiahmetbayar%2Fmochi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zekiahmetbayar%2Fmochi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zekiahmetbayar","download_url":"https://codeload.github.com/zekiahmetbayar/mochi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zekiahmetbayar%2Fmochi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34493363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["desktop-pet","macos","menubar","system-monitor"],"created_at":"2026-06-18T14:03:05.084Z","updated_at":"2026-06-18T14:03:05.723Z","avatar_url":"https://github.com/zekiahmetbayar.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"readme_banner.gif\" alt=\"Mochi\" width=\"100%\" /\u003e\n\n\u003ch1\u003e\n  \u003cimg src=\"Mochi/Assets/logo.png\" alt=\"\" width=\"44\" align=\"center\" /\u003e\n  Mochi\n\u003c/h1\u003e\n\n**A tiny pixel-art companion that lives above your macOS menu bar.**\nReacts to your system. Naps when you do. Carries your downloads.\n\n\u003c/div\u003e\n\n---\n\n## Why Mochi\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" align=\"center\" valign=\"top\"\u003e\n      \u003ch3\u003eAlive, not animated\u003c/h3\u003e\n      \u003csub\u003eMochi wanders with purpose, pauses to look around, sits to chill, and naps. No random twitching — natural cat-like rhythms.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" align=\"center\" valign=\"top\"\u003e\n      \u003ch3\u003eAware of your system\u003c/h3\u003e\n      \u003csub\u003eSweats when your CPU runs hot, fattens up when RAM fills, carries a sack when downloads hit. A glanceable health monitor.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" align=\"center\" valign=\"top\"\u003e\n      \u003ch3\u003eStays out of your way\u003c/h3\u003e\n      \u003csub\u003eLives above the menu bar. Optional click-through. Pin it next to your status icons. Notch-aware on M-series MacBooks.\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Meet the Cast\n\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003cimg src=\"Mochi/Assets/mochi_idle_0.png\" height=\"80\" /\u003e\u003cbr/\u003e\n        \u003cb\u003eMochi\u003c/b\u003e\u003cbr/\u003e\n        \u003csub\u003ethe cat\u003c/sub\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\n        \u003cimg src=\"Mochi/Assets/dog_idle_0.png\" height=\"80\" /\u003e\u003cbr/\u003e\n        \u003cb\u003eGoldchi\u003c/b\u003e\u003cbr/\u003e\n        \u003csub\u003ethe dog\u003c/sub\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n  \u003cp\u003e\u003csub\u003eSwitch pets anytime from settings.\u003c/sub\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## Moods \u0026 Reactions\n\nMochi's appearance reflects what's happening underneath. All thresholds are tunable.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"14%\" align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_walk_1.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eWander\u003c/b\u003e\u003cbr/\u003e\u003csub\u003ePicks a destination across the menu bar and strolls to it. Default state.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_look_1.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eLook around\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eTilts head after arriving somewhere — quick curiosity beat.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_sit_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eSit\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eSettles in for a moment of calm.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_sleep_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eNap\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eDrifts off when nothing's going on. Wakes up refreshed.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_sweat_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eSweat\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eCPU is running hot. Default trigger: \u003ccode\u003e70%\u003c/code\u003e.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_chonk_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eChonk\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eMemory's filling up. Default trigger: \u003ccode\u003e75%\u003c/code\u003e.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_bag_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eCarrying\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eHeavy download in progress. Default trigger: \u003ccode\u003e2 MB/s\u003c/code\u003e.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"Mochi/Assets/mochi_roll_0.png\" height=\"64\" /\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eBeing petted\u003c/b\u003e\u003cbr/\u003e\u003csub\u003eHover the cursor — rolls over with floating hearts.\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Tricks\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch4\u003eClick\u003c/h4\u003e\n      \u003csub\u003eOpens a native settings popover with live system stats and a quick toggle for every reaction.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003ch4\u003eRight-click\u003c/h4\u003e\n      \u003csub\u003eMochi dashes for one second toward the farther edge of the screen — a quick playful sprint.\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003ch4\u003eHover\u003c/h4\u003e\n      \u003csub\u003ePetting mode — Mochi rolls over and three small hearts float up.\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd valign=\"top\"\u003e\n      \u003ch4\u003eNotch portal\u003c/h4\u003e\n      \u003csub\u003eOn M-series MacBooks, Mochi walks into a glowing portal on one side of the notch and emerges on the other.\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Install\n\n```bash\nbrew install --cask zekiahmetbayar/mochi/mochi\n```\n\nThe build is ad-hoc signed, Modern macOS still flags it on first launch, so run this once to clear Gatekeeper:\n\n```bash\nxattr -dr com.apple.quarantine /Applications/Mochi.app\nopen -a Mochi\n```\n\nAfter it appears in your menu bar, click Mochi → settings popover → enable **Start at login** so it launches on every boot. No Dock icon, no helper process, no LaunchAgent — just a Login Item the system handles cleanly.\n\nUpdate later with `brew upgrade --cask mochi`. Uninstall with `brew uninstall --cask mochi`.\n\nRequires macOS 13 or newer. Universal binary — runs on both Apple Silicon and Intel Macs.\n\n---\n\n## Build from Source\n\nFor development:\n\n```bash\ngit clone https://github.com/zekiahmetbayar/mochi.git\ncd mochi\nswift run Mochi\n```\n\nTo produce a distributable `.app` and `.dmg` locally:\n\n```bash\nscripts/build-app.sh 0.0.0      # builds build/Mochi.app (universal, ad-hoc signed)\nscripts/make-dmg.sh  0.0.0      # packages build/Mochi-0.0.0.dmg\n```\n\nThe same scripts power the [`Release` GitHub Action](.github/workflows/release.yml); pushing a tag like `v1.2.3` automatically builds the DMG and publishes it to the Releases page.\n\n---\n\n## Settings\n\nClick Mochi to open the popover. From there:\n\n- **Pet** — switch between Cat and Dog\n- **Size** — Small, Medium, or Large\n- **Click-through overlay** — let clicks fall through to apps underneath\n- **Pin to menu gap** — park Mochi next to your status icons instead of wandering\n- **Start at login** — launch Mochi on boot\n- **CPU sweat / RAM chonk / Heavy download** — adjust the thresholds that trigger each mood\n\nLive readouts for CPU, RAM, and download rate sit at the top of the popover.\n\n---\n\n## Under the Hood\n\n- **SwiftUI** for the menu-bar overlay and settings UI.\n- **AppKit** `NSPanel` bridge for borderless, status-bar-level positioning.\n- **Pure-Swift core** (`MochiCore`) for state machines, hysteresis filters, settings persistence — fully unit-tested and platform-agnostic.\n- **Public Apple APIs only** for system monitoring (`host_statistics64`, `proc_pid_rusage`, `SCNetworkReachability`).\n- **Notch-aware** placement via `NSScreen.auxiliaryTopLeftArea` / `auxiliaryTopRightArea`.\n\n## Privacy\n\nEverything stays on your Mac. No telemetry, no network calls beyond the reachability check, no analytics.\n\n## License\n\n[MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzekiahmetbayar%2Fmochi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzekiahmetbayar%2Fmochi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzekiahmetbayar%2Fmochi/lists"}