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

推荐订阅源

Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
L
LangChain Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
博客园_首页
N
Netflix TechBlog - Medium
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
美团技术团队
V
V2EX

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.