Ambient Context: macOS menu bar app that logs work for LLMs

1 min read
claude-codelocal-firstmacosmemory-systems
View as Markdown
Originally from github.com
View source

My notes

Summary

Ambient Context is an open-source macOS menu bar app that reads the text of your focused window every few seconds via the accessibility API and appends deduplicated blocks to a daily markdown file. The resulting folder is meant to be handed to an LLM agent (e.g. Claude Code) so it can answer “what did I work on Tuesday?” or build project memory, with an AGENTS.md in the folder documenting the format.

Key Insight

  • Mechanism, not screen capture: uses the macOS accessibility tree to read window text, not screenshots or video, cheaper, more private, and directly machine-readable.
  • Dedup is the key design choice: body lines are written once per day regardless of how many times they’re seen, keeping the daily file small enough to paste into an LLM context window whole rather than needing chunking/retrieval.
  • Redaction happens before disk write, not after: password managers and private browsing windows are excluded entirely, secure input fields are skipped at the accessibility level, and credential/API-key/card-number patterns are scrubbed before anything touches disk.
  • Explicit anti-sync default: default save location is ~/Ambient Context, deliberately outside ~/Documents, so iCloud doesn’t sync the behavioral log off the machine, a privacy-conscious default worth copying for any similar local-logging tool.
  • App-specific capture quality varies: Chromium/Electron apps (Chrome, Slack, VS Code, Obsidian, Figma) build their accessibility tree lazily, so early capture is thin and backfills over subsequent passes; GPU-rendered terminals (Kitty, Alacritty) expose little or no text, while Terminal.app and iTerm2 work fine. Anyone building similar tooling should expect this asymmetry.
  • Self-exclusion: the capture folder itself is excluded from capture, preventing the log from recursively observing itself.
  • Currently unsigned/unnotarized (Apple Developer enrollment pending), requires building from source with Node, Rust, and Xcode CLI tools (npm install && npm run tauri build), roughly a two-minute build.
  • No network calls in this build at all; the eventual signed release adds only a single GitHub update check, no telemetry, no account, no server dependency.