bigarrow CLI: Visual Guidance for macOS AI Agents
TL;DR – What bigarrow does and why it matters
bigarrow is a single‑binary macOS command‑line tool that draws click‑through arrows, boxes and optional text on top of any window or screen coordinate, then disappears automatically. It requires no screen‑recording or accessibility permissions for drawing, works across multiple displays, Spaces and full‑screen apps, and returns precise exit codes so AI agents can reliably signal success or failure. By giving agents a way to point rather than click, bigarrow bridges the last human‑only step in many automated workflows.
Core functionality – three commands agents need
Conclusion: Agents only need three simple commands to point, track, and clean up arrows.
| Command | Purpose | Example |
|---|---|---|
bigarrow point |
Draw a single arrow to a UI element (by label) or screen coordinate, optionally with a caption. | bigarrow point --element "Allow" --app "System Settings" --text "Franz, click Allow" |
bigarrow start / bigarrow stop |
Keep an arrow visible until the agent explicitly stops it or a timeout expires. | bigarrow start --window "Safari:Inbox" --text "This window" && bigarrow stop |
bigarrow point --at X,Y |
Target a raw coordinate when label‑based targeting is unavailable (e.g., non‑accessible web pages). | bigarrow point --at 760,500 --text "Franz, click HERE" |
All commands accept --duration, --json output, and a full set of styling flags (shape, colour, size, etc.). Exit codes are deterministic: 0 success, 2 bad input, 3 target not found, 4 missing permission.
Why pointing, not clicking?
Conclusion: Pointing respects user agency and avoids security pitfalls while still guiding the human.
- Permission dialogs – macOS prompts (e.g., “Allow”) can be highlighted without the agent taking the click.
- Sensitive actions – 2FA, CAPTCHAs, payment confirmations, legal checkboxes remain under human control.
- Window disambiguation – With many Chrome windows open,
--window "Google Chrome:Pull request"selects the correct tab, then points. - Audio cue –
--sayreads the caption aloud, pulling the user back to the desk. - Remote assistance – Instead of describing “the other gear icon”, an agent can point directly.
- Documentation –
--pngrenders the arrow into a PNG for static docs or screencasts. - Debugging –
--dry-run --jsonreports the computed target without drawing, useful for coordinate verification.
The tool deliberately does not click, type, or capture screenshots; it is a pure visual cue.
Installation and integration
Conclusion: bigarrow can be installed via Homebrew or built from source, and includes a ready‑made Claude Code / Codex skill.
brew install franzenzenhofer/tap/bigarrow
bigarrow install-skill # registers the skill for Claude Code (~/.claude/skills) and Codex (~/.agents/skills)
From source: swift build -c release (requires Xcode 16+, macOS 14+). The resulting binary lives at .build/release/bigarrow.
Styling options – making the arrow noticeable
Conclusion: A rich set of visual parameters ensures the arrow stands out on any background.
- Shapes:
bend,straight,zigzag(urgent),spiral(loops once). - Styles:
arrow(default),ring,box(border‑only). - Sizes:
S,M,L. - Corners:
roundorsharp. - Colours: Named palette (
red,orange, …) or custom#RRGGBB. - Borders:
shadow(default),white-black,black. - Close button:
--close-buttonadds an X that removes the arrow on click. - Dynamic behaviour:
--followtracks a moving window,--until-clickends on a click,--saytriggers speech synthesis.
The project includes a gallery script that renders every combination off‑screen and zooms into the joint where the shaft meets the sign, ensuring a seamless visual appearance.
Permissions model – why no screen‑recording?
Conclusion: Drawing uses a transparent overlay window that macOS allows without extra entitlements; only target‑discovery features need Accessibility.
- Drawing – No Screen Recording or Accessibility permission required.
- Target lookup –
--element,elements,--until-click, and--windowrely on Accessibility, which macOS grants to the shell process (Terminal, iTerm, VS Code, Claude) rather than tobigarrowitself. bigarrow doctor– Reports which app holds the necessary permissions and exits with code 4 if they are missing.
This design prevents the tool from silently capturing screen content while still enabling precise UI element identification.
Robustness across macOS environments
Conclusion: The arrow works on multiple displays, full‑screen apps, Stage Manager, and Spaces, and gracefully handles display disconnection.
- Supports negative coordinates for displays left/above the primary screen.
- Unplugging a display while an arrow is present causes the arrow to disappear politely.
- Verified on macOS 15, 26, and 27 via CI.
- CPU impact is minimal – ~1.4 % on a CI runner, with Core Animation handling rendering.
Real‑world use cases highlighted by the author
Conclusion: bigarrow addresses concrete pain points in AI‑augmented workflows.
- Permission prompts – “Click Allow” dialogs that agents can’t press.
- 2FA / CAPTCHAs – Agents point, humans confirm.
- Window selection – Disambiguate among dozens of Chrome windows.
- Guided onboarding – Step‑by‑step tours with start/stop semantics.
- Remote help – Point to the correct UI element for a colleague.
- Documentation – Generate annotated screenshots automatically.
- Coordinate debugging – Visual confirmation of Accessibility or Peekaboo coordinates.
Community feedback – synthesis of top comments
Conclusion: Users appreciate the concept but raise concerns about safety, usability, and broader applicability.
"I tried to read the ‘Does it need Screen Recording or Accessibility?’ part, but it’s slopped … what’s stopping it from drawing a box that hides the ‘decline’ button?" – @hn8726 (clarifies that drawing never blocks UI elements; only the sign itself is clickable.)
"An arrow solves ‘where do I click’ but not ‘should I click’. It may reduce the human’s decision‑making role." – @tilemarch (highlights the ethical boundary; the tool intentionally stops short of automating the click.)
"This would be great for helping my mom download and print a document over the phone." – @arshxyz (suggests a non‑agent use case for assisted remote help.)
"I would pay good money for an iPad version that launches the correct app and guides the user through a bank transfer." – @lbreakjai (indicates demand for a cross‑platform UI‑assistant.)
"The README is geared toward technical people; a simpler UI could broaden adoption." – @usrbinbash (points out documentation accessibility.)
Overall, the community sees value in visual guidance but stresses the need for clear boundaries to preserve user consent.
Test coverage and reliability
Conclusion: Extensive automated testing validates geometry, rendering, and interaction behaviour.
- 87 unit tests covering geometry, joint smoothness, golden‑image comparison, and integration with Accessibility and Peekaboo fixtures.
- 17 visual behaviour checks in CI on real macOS window server: click‑through, focus preservation, multi‑display handling, CPU usage, etc.
- Agent skill test – A fresh Claude Code agent successfully located a Chrome “Reload” button using only the skill, exposing a bug that was added as a regression test.
Limitations and open questions
Conclusion: bigarrow is not a general screen‑annotation tool and cannot replace UI automation.
- It cannot click, type, or capture screenshots.
- Web page element targeting works in Electron apps and Chrome only when launched with
--force-renderer-accessibilityor VoiceOver enabled. - The tool relies on Accessibility for label‑based targeting; without it, coordinates must be supplied manually.
- No iOS/iPadOS support yet – community interest is evident from comments.
Future directions hinted by the repo
Conclusion: The author plans to expand documentation, refine the skill format, and explore additional visual cues.
- Detailed PLAN.md, DECISIONS/, and RESEARCH/ directories outline architecture and risk assessment.
- Prior art includes Peekaboo visualizer and Nameplate; bigarrow fills the gap of arrow‑plus‑label overlays.
- Potential extensions could include richer animations, multi‑agent coordination, or cross‑platform ports.
Bottom line
bigarrow provides a lightweight, permission‑free way for AI agents to point users at UI elements on macOS, turning ambiguous “click this button” prompts into clear visual cues while preserving user agency and system security. Its minimal footprint, robust testing, and flexible styling make it a practical addition to any agent‑driven workflow.
Sources
Related
- Project
- Project
- Project
- Project
- Project