When the AI is busy running tools, I’m usually just… sitting there.
Forty-five minutes later I realize I haven’t moved at all.
So I built a small side project called Claude Gym.
It watches Claude Code’s local JSONL logs and uses them as a signal for “AI is busy vs AI needs input.” The JSONL logs expose structured events (tool calls, agent transitions, turn boundaries), which makes them a surprisingly clean signal for detecting human idle windows.
When Claude doesn’t need me, it pops up short movement prompts (squats, stretches, wall sits). When Claude needs input again, it gets out of the way. There’s also a small pixel-art cat that jumps when a turn finishes.
No network, no telemetry — it just tails the local logs. Written in Go, runs in a separate terminal tab.
It’s intentionally small and a bit playful, but it’s been surprisingly effective at getting me to move during long sessions.
Repo (MIT): https://github.com/477-Studio/claude-gym
Curious whether others have experimented with tying human breaks to agent activity instead of timers.