惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
U
Unit 42
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
IT之家
IT之家
MyScale Blog
MyScale Blog
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
博客园 - 司徒正美

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - job-almekinders/pace-coach
Jobtimize · 2026-05-10 · via Hacker News: Show HN

A macOS CLI daemon that monitors your typing rhythm and nudges you when your pace signals you're rushing. The goal is to support sustainable focus and healthy workflow patterns.

It monitors your keystrokes locally (nothing leaves your machine!), classifies your typing state every two seconds, fires a macOS notification when you've been in a rushing state for too long, and shows a live emoji in your menu bar with the status of the application.

Demo

Note that for above demo in the GIF the nudge fires earlier than in the default configuration.

States:

  • ⚪ Idle — no recent typing
  • 🔵 Passive — low activity or irregular rhythm
  • 🟡 Normal — active, correction rate within range
  • 🔴 Rushing — high correction rate sustained

The primary driver for the Rushing state is the correction rate. See src/classifier.rs for the full classification logic.


Why

I built this to explore Rust and macOS native development, creating a lightweight CLI tool that provides awareness of my workflow patterns. This is by no means a perfect tool and/or perfect code, but it was a fun way to get acquinted with these new technologies :)


Privacy & Security

pace-coach runs entirely local on your machine. It never records, stores, or transmits the content of your keystrokes: only the timing intervals between keypresses are held in memory, and only long enough to compute the current pace metrics (2s). Once a classification cycle completes this data is discarded.

The macOS Input Monitoring permission is required to detect keypress events system-wide. The daemon runs as a launchd Launch Agent under its own identity (/usr/local/bin/pace-coach). Therefore, the permission is granted to pace-coach specifically instead of your terminal app. This is done on purpose to ensure the permission's scope is as limited as possible.


Install

The following script downloads the latest release, extracts both binaries, and puts them in /usr/local/bin. Please ensure that /usr/local/bin is available on your $PATH.

curl -fsSL https://raw.githubusercontent.com/job-almekinders/pace-coach/main/install.sh | sh

Requires Apple Silicon (arm64). The script downloads both binaries, installs them to /usr/local/bin, signs the daemon, and registers it as a Launch Agent.

Run pace-coach start to launch. macOS will ask for Input Monitoring permission on first start. It should be granted to pace-coach, not to your terminal app.

Note

Upon first launch, you may need to stop and restart pace coach for the permissions to take effect.

To uninstall: curl -fsSL https://raw.githubusercontent.com/job-almekinders/pace-coach/main/uninstall.sh | sh


Usage

pace-coach start             # start daemon + menu bar icon
pace-coach stop              # stop both
pace-coach status            # NORMAL 🟡
pace-coach status --verbose  # full metrics
pace-coach config show       # print current config

Configuration

Edit ~/.pace-coach/config.json then restart the daemon:

{
  "correction_rate_threshold": 0.06,
  "stress_duration_secs": 10,
  "nudge_cooldown_secs": 60
}
Setting Default Description
correction_rate_threshold 0.06 Fraction of keystrokes that are corrections before state is Rushing. Lower = more sensitive.
stress_duration_secs 10 Seconds of sustained Rushing state before a nudge fires.
nudge_cooldown_secs 60 Minimum seconds between nudges.

Logs

~/.pace-coach/pace-coach.log — daemon stderr. Useful for debugging.


Build from source

Requires Rust stable (rustup.rs) and Xcode Command Line Tools (xcode-select --install).

Install or uninstall both binaries locally:

make install   # build, sign, register Launch Agent — then run 'pace-coach start'
make uninstall # stop daemon and remove everything

Build release binaries only (no install):

make build
# binaries at target/release/pace-coach and target/release/pace-coach-menubar

License

MIT


Contributions

Contributions for fixes or feature additions are welcome! Feature additions I can foresee for this project are:

  • A more user friendly installation method, such that non-technical users can also use pace-coach.
  • A more user friendly method to call the CLI commands e.g. via the symbol in the menu bar.
  • Validate and improve the classifier algorithm.