- How Openbird processes your context
-How local accessibility activity is collected, cleaned up, grouped, and turned into the current daily review.
-- Openbird's current daily review is built from a local accessibility timeline, not screenshots - or a remote backend. The pipeline is straightforward: capture the frontmost context, clean it - up, group it into meaningful chunks, then generate a grounded recap from that prepared - evidence. -
- -- This is intentionally a narrow proof of concept. The point is to validate accessibility-first - personal context before this capability is integrated natively into fastrepl/char. -
- -Short version
- --
-
- Capture the frontmost app, window, URL when available, visible accessibility text, and timestamps. -
- Sanitize noisy UI text, merge repeated context, and group related events. -
- Turn those grouped events into evidence sections for the day. -
- Generate markdown with your configured model, or fall back to a built-in heuristic recap. -
1. Capture
- --
- {collectionItems.map((item) => (
-
- {item} - ))} -
- All captured activity is stored locally at - ~/Library/Application Support/Openbird/openbird.sqlite. -
- -2. Cleanup and grouping
- --
- {processingItems.map((item) => (
-
- {item} - ))} -
- This cleanup step is what makes the daily review readable. It strips browser and chat chrome, - merges repeated context, and reduces noisy app switches before any generation happens. -
- -3. Review generation
- --
- {generationItems.map((item) => (
-
- {item} - ))} -
- The generated review is meant to read like a grounded recap of your day, not a raw timeline - dump. Openbird explicitly asks the model to synthesize the evidence into a few human sections - and keep the output in markdown. -
- -What leaves your Mac
- -- By default, capture and storage stay local. If you use a local provider such as Ollama or LM - Studio, generation stays local too. -
- -- If you configure a remote OpenAI-compatible endpoint, Openbird sends the prepared evidence for - the selected day to that endpoint at generation time. It does not upload automatic screenshots - because it does not take them in the first place. -
- -- The control surface stays the same either way: you can pause capture, exclude apps or domains, - inspect the raw log, and delete the last hour, the last day, or everything. -
-
-