{"adoption": {"forks": 110, "observed_at": "2026-08-28T04:05:01.155175+00:00", "stars": 1542}, "canonical_url": "https://ross.abutalabs.com/products/kawa", "card": {"archived": false, "artifact_type": "application", "description": "A macOS input source switcher with user-defined shortcuts.", "domain": ["developer-tools", "apple-ecosystem"], "enriched": true, "function": ["developer-tools"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["hatashiro/kawa"], "name": "hatashiro/kawa", "platform": [], "pushed_at": "2022-08-20T18:41:17+00:00", "repo": "hatashiro/kawa", "stars": 1542, "tags": ["input-source-switcher", "keyboard-layout", "shortcuts", "menu-bar-app", "swift", "localization", "macos"], "topics": ["swift", "macos", "input-method"], "urls": [], "use_cases": ["switch keyboard layouts with custom shortcuts on macOS", "quickly toggle between input methods while typing", "manage multiple keyboard layouts from the menu bar", "switch between English and CJK input sources", "replace slow macOS input source switching with hotkeys"], "what_it_is": "Kawa is a macOS application that lets users switch between input sources (keyboard layouts and input methods) using user-defined keyboard shortcuts. It runs as a lightweight menu bar utility and is installable via Homebrew.", "when_to_avoid": ["you primarily use complex CJKV input sources, where a known macOS Carbon bug may break switching", "you need an actively developed tool with recent updates", "you are on a non-macOS platform"], "when_to_choose": ["you frequently switch between keyboard layouts or input methods on macOS", "you want lightweight, shortcut-driven input source switching", "you prefer a simple menu bar utility over system settings navigation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kawa", "repo": "hatashiro/kawa", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.155175+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:44.525507+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "16362ed2f615eee1c9c24e530c5c466b8db2d2d6b9f6ec5e81f4962b66bfa130", "fetched_at": "2026-08-28T04:05:01.155175+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hatashiro/kawa"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4056, "days_push": 1474, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}