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 | shDownloads to ~/.tailbeat/bin · macOS 15 or later · Intel and Apple silicon
- Your agent checks its change against what the app really did.
- It reads the 4 rows that matter, not the 14,713 lines the Mac wrote meanwhile.
- Your logs stay on your Mac. Nothing is uploaded.
Install in two steps
- 1 · Download
curl -fsSL https://tailbeat.dev/install.sh | sh - 2 · Add it to your agent
claude mcp add -s user tailbeat ~/.tailbeat/bin/tailbeatFor 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.
TailBeat UI
The Mac app that shows you what your agents are capturing, live, with search and filters.
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.