{"adoption": {"forks": 95, "observed_at": "2026-08-28T04:04:07.995390+00:00", "stars": 1252}, "canonical_url": "https://ross.abutalabs.com/products/voxtype", "card": {"archived": false, "artifact_type": "application", "description": "Voice-to-text with push-to-talk for Wayland compositors", "domain": ["speech-processing", "accessibility", "developer-tools"], "enriched": true, "function": ["speech-recognition", "cli", "accessibility"], "health_score": 100, "homepage": null, "language": "Rust", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["peteonrails/voxtype"], "name": "peteonrails/voxtype", "platform": ["cli", "rust"], "pushed_at": "2026-08-25T18:14:42+00:00", "repo": "peteonrails/voxtype", "stars": 1252, "tags": ["voice-to-text", "push-to-talk", "wayland", "whisper", "dictation", "offline", "hyprland", "sway", "gnome", "kde", "transcription", "local-first", "command-line", "linux"], "topics": ["accessibility", "dictation", "gnome", "hyprland", "kde", "linux", "offline", "push-to-talk", "rust", "speech-recognition", "speech-to-text", "sway", "voice-to-text", "voice-typing", "wayland", "whisper", "whisper-cpp"], "urls": [], "use_cases": ["dictate text on linux with a push-to-talk hotkey", "offline speech-to-text on wayland", "voice typing in hyprland or sway", "transcribe audio locally without cloud services", "convert speech to text at cursor position on linux", "run whisper speech recognition on cpu in realtime", "record meeting transcripts with speaker attribution"], "what_it_is": "Voxtype is a local, offline voice-to-text dictation tool for Linux with push-to-talk hotkey support across Wayland compositors like Hyprland, Sway, GNOME, and KDE. It runs multiple transcription engines (Cohere Transcribe, Whisper, Parakeet, and others) faster than realtime on CPU or GPU, outputting text at the cursor with no cloud or telemetry.", "when_to_avoid": ["you need voice-to-text on macOS or Windows", "you require X11-only workflows without evdev fallback support", "you want a graphical-first application rather than a daemon with TUI configuration"], "when_to_choose": ["you want fully local, private dictation on Linux with no cloud dependency", "you use a Wayland compositor like Hyprland, Sway, Niri, GNOME, or KDE", "you need fast CPU-based transcription with multiple engine choices", "you want meeting transcription with export to Markdown, SRT, or VTT"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/voxtype", "repo": "peteonrails/voxtype", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "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:04:07.995390+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:07.995390+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:07:34.387465+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8bbd95f14b4148acbff1d5d11df2ad782d611f9a010f3cbe3ed3675cd82c52b9", "fetched_at": "2026-08-28T04:04:07.995390+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peteonrails/voxtype"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 19, "rhythm": 86}, "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": 278, "days_push": 8, "days_rel": 97, "gap_med": 0.5, "n_releases_24m": 51}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}