TailBeat

Stop pasting logs into your AI agent.

TailBeat lets Claude Code, Cursor and other agents read your app's logs themselves - on your Mac, in the Simulator, on your iPhone - and check their own work.

curl -fsSL https://tailbeat.dev/install.sh | sh

Downloads to ~/.tailbeat/bin · macOS 15 or later · Intel and Apple silicon

Terminal
YouRun Daybook and read the logs. Did the sync finish without errors?
tailbeat · start_capture(level: "debug")
capturing: true · source: "this Mac"
The agent builds and runs the app.
tailbeat · search_logs(query: "subsystem:com.example.Daybook")
matched: 4 · returned: 4
error
upload failed after 3 of 12 entries: Error Domain=NSURLErrorDomain Code=-1001
Daybook/SyncEngine.swift:20 · upload(_:)
debug
uploading 12 entries to api.example.com
Daybook/SyncEngine.swift:18 · upload(_:)
info
found 12 changed entries
Daybook/SyncEngine.swift:13 · run()
info
sync started for <private>
Daybook/SyncEngine.swift:11 · run()
AgentNo. The upload timed out after 3 of 12 entries (NSURLErrorDomain -1001), in upload(_:), SyncEngine.swift line 20.
Drawn from the tool's real answers for a sample app.

Install in two steps

  1. 1 · Download
    curl -fsSL https://tailbeat.dev/install.sh | sh
  2. 2 · Add it to your agent
    claude mcp add -s user tailbeat ~/.tailbeat/bin/tailbeat

    For Claude Code. Any other agent: add ~/.tailbeat/bin/tailbeat as an MCP server over stdio, without arguments.

Details

tools, limits, a Mac without an agent

The tools your agent calls

list_devices
Lists what can be captured: this Mac, booted Simulators, iPhones and iPads.
start_capture
Starts capturing one source. Takes deviceId, level and maxSizeMB.
search_logs
Full-text and field search. Takes query, level, subsystem, since, until and limit. Returns up to 100 rows, newest first.
capture_status
Says what is captured, how much is kept, whether older rows were dropped and what a log storm lost.
stop_capture
Stops the capture. The rows stay searchable.
clear_logs
Empties the store. The capture keeps running.
delete_store
Stops the capture and deletes the store, which frees its disk space.
load_file
Loads a saved .logarchive from disk, to search it.

A search takes plain words, "quoted phrases" and field filters: process:, subsystem:, category:, level:, pid:, and for lines logged through TailBeatKit file:, function: and ctx.<key>:.

The limits of a capture

Nothing is captured until the agent starts a capture. It captures one source at a time, into a store on your Mac that holds about 1 GB and then drops the oldest rows. A capture that no tool call touches stops by itself after 10 minutes. A log storm can lose rows: capture_status and every search_logs answer count what the tool dropped itself, and for this Mac's log stop_capture adds what macOS dropped for the stream.

On a Mac without an agent

On a test Mac or a build Mac no agent starts the tool. Start it yourself, and TailBeat UI can watch that Mac's log.

~/.tailbeat/bin/tailbeat serve
Keeps an instance running until you stop it. It captures this Mac's log only while TailBeat UI is watching.
~/.tailbeat/bin/tailbeat serve --network
Also reachable from other Macs on the local network, not only from this Mac.
~/.tailbeat/bin/tailbeat serve --network --install
Runs now and again after every login, as a login service. serve --uninstall removes it.
~/.tailbeat/bin/tailbeat key
Prints this Mac's key. TailBeat UI on another Mac asks for it once.
~/.tailbeat/bin/tailbeat status
Lists the instances running on this Mac.

TailBeatKit: better logs with one import.

  • Replace import os with import tb. Your log calls stay as they are.
  • Every line then carries its file, function and line.
  • Private values stay hidden in release builds.
TailBeatKit on GitHub →

TailBeat UI

The Mac app that shows you what your agents are capturing, live, with search and filters.

See TailBeat UI →

Questions

What does the install line do?

It puts the tool at ~/.tailbeat/bin/tailbeat and, beside it, go-ios, the open-source helper that reads an iPhone or iPad. It needs no administrator rights and changes nothing else. The tool is closed source, signed with a Developer ID and notarized by Apple.

Which logs can my agent read?

This Mac, a booted Simulator (needs Xcode), an iPhone or iPad on a USB cable (unlocked and trusting this Mac, not over Wi-Fi), and a saved .logarchive. One source at a time.

Does it cost anything?

No. The tool is free, with no account, no license key and no analytics.

How do I update or remove it?

To update, run the install line again. To remove it, run claude mcp remove -s user tailbeat and then rm -rf ~/.tailbeat.