Free tools

Small utilities for stubborn workflows.

Open-source tools I build to remove friction from development, learning, and everyday workflows. Free to download, inspect, and adapt.

01 / macOS app● Version 1.2.0

Talking Tom

An open-source macOS app that turns a PDF, Word document, or text file into clean spoken audio. It removes citations, repeated headers, page numbers, and OCR noise, then narrates the useful text with a Microsoft Edge neural voice. A waveform player, pitch-preserving speed control, and saved transcript make the result practical for long readings.

Why I built it. Computer science and philosophy both involve a lot of reading. I wanted a way to move dense papers off my desk and into a walk—and to replace another subscription with a tool shaped around the way I actually study.

  • macOS
  • Intel + Apple Silicon
  • Self-contained setup
  • Anthropic API key required
  • English + Spanish

macOS security. This download is an unsigned source installer. Apple may warn that it cannot verify the developer or check the software for malware. See Apple’s security guidance. If the message says the app will damage your computer or contains malware, stop and report the exact warning. No API keys or personal settings are included; use your own Anthropic key.

Need to force-open the installer? Use Apple’s per-app security override in step 3 below. It approves only this installer; do not disable Gatekeeper or remove quarantine protection.

New in 1.2.0: compact player and reliable speed control. Shrink Talking Tom to 380 × 270 pixels beside your PDF; enlarge it or click Full app to return to the editor. Native macOS audio now changes playback speed from 0.5× to 2× without the previous one-hour limit or rebuilding the recording in memory. Speed is relative to the saved audio, whether it was generated at 1× or another rate. Your position, pause state, text, and normal launch size are preserved.

Updating? Quit Talking Tom, then run setup.command from the new download. Your settings, saved audio, and transcripts are preserved.

Open-source personal project. Talking Tom is unofficial and is not affiliated with or endorsed by Outfit7, Microsoft, or Anthropic. An Anthropic API key is required for the app’s Claude-powered document processing. Text selected for narration is sent to Microsoft’s online Edge voice service to generate audio, and document text is sent to Anthropic through your API key. Settings, generated audio, and transcripts are stored locally on your Mac.

01 / CLEAN

Reads what matters

A built-in rules pass removes citations, headers, footers, page numbers, and OCR word splits. Claude then handles messier documents while preserving their meaning and structure.

02 / VOICE

English, Spanish, or both

Choose from English and Spanish neural voices. Claude prepares the document before narration, and “Read in” can translate it independently of the app’s bilingual interface.

03 / LISTEN

A real audio player

Scrub the waveform, jump ten seconds, and listen from 0.5× to 2× without shifting the pitch. The MP3 and its text transcript are saved together.

Install and use
  1. Check the requirements. You need a Mac—Intel or Apple Silicon—an internet connection, and an Anthropic API key. You do not need to install Python, Homebrew, or any other software prerequisite.
  2. Review the installer. Download and unzip the file, open the talking-tom-1.2.0 folder, and read README.md before opening setup.command. This source installer is not signed with Developer ID or notarized by Apple.
  3. If macOS blocks setup.command, force-open it with Apple’s per-app override.
    1. Try to open setup.command once so macOS records the blocked attempt.
    2. Open System Settings → Privacy & Security, scroll to the Security section, and click Open Anyway beside the message about setup.command.
    3. Authenticate if macOS asks, then click Open in the warning that appears. Terminal should begin the setup.
    4. Use this override only for the “cannot verify the developer” warning. If macOS says the file contains malware or will damage your Mac, stop and do not bypass that warning.
  4. Let setup finish. A Terminal window downloads a private copy of Python and the app’s dependencies, then builds Talking Tom in your Applications folder and places a shortcut on your Desktop. This takes about two minutes. When Terminal says Done., you can delete the downloaded folder.
  5. Open the app. Launch Talking Tom from Applications or the Desktop shortcut. On first launch, choose English or Español; you can change this later in Settings.
  6. Connect Claude before using Talking Tom.
    1. Use Anthropic’s official API overview for its current setup guidance.
    2. Create or manage your key on Anthropic’s API Keys page . Anthropic’s Billing page contains its current payment and credit options.
    3. Open Settings in Talking Tom, paste your Anthropic API key, and save it.
  7. Choose a document and listen. Select a PDF, Word (.docx), or text file—or paste text—then choose a voice, speed, cleaning mode, and output language. Talking Tom saves the MP3 and transcript in ~/Talking Tom/.

Install

Read README.md before setup.command

Launch

Open Talking Tom from Applications

Your files

~/Talking Tom/

Generated audio and transcripts stay together in this folder.

SHA-256 checksum6ce68a15d037f42e4b8eecd2d6bc226fc98d6d384250bc6656e6419f7b4ac26a
02 / macOS utility● Version 1.0.1

Claude Code Rate-Limit Resumer

An open-source macOS utility that detects when Claude Code reaches a session rate limit, waits until one minute after the stated reset time, and automatically sends continue work back into the same session. It runs locally, makes no network requests, and does not access project source code.

  • macOS
  • Python 3.9+
  • Claude Code
  • tmux

Community project. This is an unofficial tool and is not affiliated with or endorsed by Anthropic. Claude Code hooks run with your user permissions, so review the included resumer.py and install.py before installing.

01 / DETECT

Reads the rate limit

Uses Claude Code’s StopFailure hook and only reads the rate-limit error fields or visible text in its own tmux pane.

02 / WAIT

Resumes at the right time

Waits until one minute after the displayed reset time, then targets the same tmux pane instead of whichever Terminal window is in focus.

03 / VERIFY

Fails safely

It records Claude Code’s foreground process when the limit occurs and will not type if the pane is gone or that process has changed.

Install and use
  1. Check the requirements. You need macOS, Python 3.9 or newer, a current Claude Code installation with StopFailure hook support, and tmux. If tmux is missing, install it with Homebrew:
    brew install tmux
  2. Install the utility. Download and extract the ZIP, open Terminal in the extracted folder, and run:
    python3 install.py

    The installer copies the utility into ~/.local/share, backs up your existing Claude settings, and adds the rate-limit hook without replacing your other settings.

  3. Run Claude Code inside tmux. From your project directory, start or reconnect to a named tmux session, then continue your conversation:
    tmux new-session -A -s claude-work
    claude --continue

    Use claude --resume instead when you need to choose a different saved conversation.

  4. Verify the hook. In Claude Code, run /hooks and confirm that StopFailure → rate_limit appears.
  5. Leave it running. When a rate limit occurs, the utility waits and sends only continue work to the original session. Your Mac must remain awake. Detach from tmux with Ctrl+B, then D; reconnect with the same tmux command.

Check status

~/.local/share/claude-rate-limit-resumer/resumer.py status

Watch logs

tail -f ~/.local/state/claude-rate-limit-resumer/resumer.log

Uninstall

python3 install.py uninstall

Run this from the extracted release folder. It removes the hook and installed script while preserving local logs for inspection.

SHA-256 checksum8091c3b2e137211b345bf47b2b6be840f96e055e961a72e79da020449e65c760