Planned for Char: Openbird is being developed for integration into Char as a feature.

Back to home

Openbird bird illustration

How Openbird works

How accessibility context is collected, processed, and turned into the current daily summary.

Openbird's current summary is built from a local accessibility timeline, not screenshots or a remote backend. The pipeline is straightforward: collect the frontmost context, clean and group it, then generate a recap from those prepared activity chunks.

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

  1. Capture the frontmost app, window, URL when available, visible accessibility text, and timestamps.
  2. Sanitize noisy UI text, merge repeated context, and group related events.
  3. Turn those grouped events into evidence sections for the day.
  4. Generate markdown with your configured model, or fall back to a built-in heuristic recap.

1. Data collection

All captured activity is stored locally at ~/Library/Application Support/Openbird/openbird.sqlite.

2. Local processing

This processing step is what makes the summary readable. It reduces tab chrome, repeated labels, and noisy app switches before any generation happens.

3. Summary generation

The generated summary 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.