An open API service indexing awesome lists of open source software.

https://github.com/iannellomarco/hindsight

Hindsight — private, local-first journal + meeting recording for macOS (Apple Silicon). GPL-3.0. Derived from MacParakeet.
https://github.com/iannellomarco/hindsight

journal local-first macos meeting-recording menubar privacy speech-to-text swift

Last synced: 25 days ago
JSON representation

Hindsight — private, local-first journal + meeting recording for macOS (Apple Silicon). GPL-3.0. Derived from MacParakeet.

Awesome Lists containing this project

README

          


Hindsight icon

Hindsight


A private, local-first second brain for your Mac.

It quietly captures your screen through the day, understands what you're working on,

and lets you recall anything you saw — all on your Mac.


Download DMG


GPL-3.0
macOS 14.2+
Swift 6
Apple Silicon

---

## Your screen, turned into a searchable memory

Hindsight takes periodic screenshots of your displays, reads them on-device, and builds a private, searchable record of everything you work on — code, documents, research, designs, conversations. No cloud required.

- **Ask your journal in plain language** — *"What was that phone number I saw earlier?"* *"Which files was I editing this morning?"* *"What site had the pricing table?"* — answered with the exact **source frames** you can jump to.
- **Recall anything you saw** through three retrieval modes, all on-device:
- **By meaning** — semantic search matches ideas even when the words differ.
- **By exact text** — full-text keyword search with highlighted snippets.
- **By typed value** — phones, emails, URLs, files, issue refs extracted automatically.
- **Recurring threads** — spot the things you keep coming back to across days and weeks.
- **Activity timeline** — your day segmented into coherent activities with AI titles, plus **focus metrics**: deep-focus blocks, context switches, time per app.
- **Per-window understanding** — knows you were *"editing JournalService.swift · Swift"*, *"reading developer.apple.com"*, or the terminal commands you ran.

Everything — capture, OCR, entity extraction, embeddings, full-text index, activity segmentation, and metrics — runs **fully on-device** out of the box. Connect an AI provider (local or cloud) to unlock the conversational "ask your journal" experience.

## How a day flows

```
Screenshots (every ~2 min, all displays)


On-device OCR (Apple Vision) ── nothing leaves your Mac


Redaction gate ── secrets scrubbed before disk + before any model

├─▶ Entities (phones · emails · links · files · issue refs)
├─▶ Full-text index (FTS5) + semantic embeddings
├─▶ Window understanding (app, title, document, URL)
├─▶ Change detection (idle / minor / context switch)


AI batch analysis (opt-in provider) ── running day narrative + activity timeline


End-of-day review chat + a permanent, searchable journal
```

## Privacy by pipeline, not by prompt

Hindsight doesn't ask an AI to "be careful." It enforces privacy through deterministic, on-device gates:

- **Secrets never reach disk or any provider.** Before a screenshot row is written, credit cards, API keys, tokens, JWTs, private keys, SSNs, and OTPs are scrubbed by the on-device redaction gate. URLs have credential query params stripped. No raw OCR text is ever stored.
- **What's kept is kept deliberately.** Phones, emails, file names, document paths, and URLs (minus credentials) are preserved because they're exactly what you want to recall. The distinction between "secret" and "recall-worthy" is explicit.
- **Cloud is opt-in, per provider.** AI analysis is **off by default**. A local provider (Ollama, LM Studio) keeps everything on your machine. A BYOK cloud provider requires explicit, per-provider consent before any already-redacted text is sent.
- **Vision is a separate opt-in tier** — sending pixels to a model is never the default. An on-device VLM keeps images local.
- **No accounts, no tracking.** Telemetry never includes journal content and is inert by default.

See [ADR-024](spec/adr/024-journal-deep-understanding.md) for the full privacy model.

## Browse, search, and chat with your days

### Recall (⌕)

Open **Journal → Recall** to search across **all** your days.

- **Ask** (with a provider): type a question — *"what was that phone number?"* — and get an answer with tappable **[#1] [#2] …** source citations that jump to the exact screenshot frame.
- **Browse** (no provider needed): tap a chip — Phones · Emails · Links · Files · Issue Refs — or type a detail. Results are cards with **time · app · window** and a jump-to-frame.

Pick a provider in **Settings → AI Provider**: cloud (Anthropic, OpenAI, Gemini, OpenRouter) or local (Ollama, LM Studio). Local keeps everything on your Mac.

### Day Library

Browse past days as a date-grouped list. Each day opens into a detailed view with:

- The AI-generated day narrative and activity breakdown.
- Per-activity titles, time spans, and dominant app.
- **Focus metrics**: where your time went, how many context switches, longest deep-focus block.
- **Chat with this day** — ask follow-up questions scoped to a specific day's activity.

### End-of-day review

When you stop recording, Hindsight opens a chat panel where the AI presents observations about your day and asks clarifying questions. Your answers steer the final saved snapshot. It's a lightweight, private debrief.

## What Hindsight understands about each moment

For every captured frame, Hindsight builds structured context — all on-device:

| Signal | Source | Example |
|--------|--------|---------|
| Focused window title | Accessibility API | `"JournalService.swift — macparakeet-fork"` |
| Active document path | AX Document | `~/dev/hindsight/Sources/.../JournalService.swift` |
| Active URL | AX URL + browser BFS | `github.com/iannellomarco/hindsight` |
| App activity | Specialist extractors | `"editing Swift file"` / `"reading domain"` / `"ran: git push"` |
| Other visible windows | ScreenCaptureKit window roster | Up to 16 window titles |
| Scene classification | Vision framework | `"computer_screen"`, `"code"`, `"web_browser"` |
| Saliency region | Vision attention model | Where on screen you were looking |

## Second Brain graph

The **Second Brain** view renders your journal as an interactive graph: activities as nodes, connected by topic similarity, app transitions, and time proximity. Communities are detected automatically. Export to **Obsidian** or **GraphML** for external analysis.

## Settings

| Setting | Options | Default |
|---------|---------|---------|
| Screenshot interval | 30s / 1m / 2m / 5m / 10m | 2 min |
| Analysis interval | 15m / 30m / 60m | 30 min |
| Pause when idle | On/Off + threshold | Off |
| Keep screenshots | 7d / 30d / 90d / Forever | 30 days |
| Allow cloud AI to analyze your journal | On/Off | **Off** |
| AI vision descriptions | On/Off | **Off** |
| AI provider | Anthropic / OpenAI / Gemini / OpenRouter / Ollama / LM Studio | None |

---

## Also: Meeting Recording

Hindsight includes **local meeting recording** carried over from its MacParakeet roots: capture system audio + mic via ScreenCaptureKit, transcribe on-device with Parakeet (155× realtime, ~2.5% WER) or optional WhisperKit for multilingual STT, with live notes, transcript, and an Ask tab. Meetings recorded the same day are cross-referenced into that day's journal.

---

## Get it

**[Download the latest DMG](https://github.com/iannellomarco/hindsight/releases/latest)** → drag to `/Applications`.

First launch downloads the speech model (~6 GB, for meeting transcription). The Day Journal needs **Screen Recording** permission (requested in Settings or on first start). **Recall and the timeline work on-device with no provider.** For conversational "ask your journal," configure a provider in **Settings → AI Provider** and, for a cloud provider, flip on **Settings → Journal → Allow cloud AI to analyze your journal**.

Auto-updates via Sparkle from our [GitHub Pages appcast](https://iannellomarco.github.io/hindsight/appcast.xml) — EdDSA signed.

### Build from source

```bash
git clone https://github.com/iannellomarco/hindsight.git
cd hindsight
swift test
scripts/dev/run_app.sh
```

---

## Architecture

Curious how it works under the hood? Start with the **[Architecture Overview](docs/architecture/overview.md)**.

- **[Day Journal — Capture Pipeline](docs/architecture/day-journal-capture.md)** · screenshots, OCR, redaction, change detection
- **[Day Journal — Understanding Layer](docs/architecture/journal-understanding.md)** · window signal, app extractors, sessionizer, metrics
- **[Recall — Search & Ask](docs/architecture/recall.md)** · entities, FTS5, embeddings, retrieval-augmented generation
- **[Privacy Model](docs/architecture/privacy.md)** · redaction gate, cloud consent, vision tier
- **[Data Model](docs/architecture/data-model.md)** · schema, migrations, persistence
- **[Meeting Recording](docs/architecture/meeting-recording.md)** · system audio + mic capture, STT pipeline

Design decisions live in [`spec/adr/`](spec/adr/) — notably [ADR-023](spec/adr/023-day-journal-screenshot-second-brain.md) (Day Journal) and [ADR-024](spec/adr/024-journal-deep-understanding.md) (deep understanding + privacy).

## Built on MacParakeet

Hindsight is a GPL-3.0 derivative of [moona3k/macparakeet](https://github.com/moona3k/macparakeet) by Daniel Moon — the fast, private, local-first voice app for Mac. The meeting recording stack (audio capture, on-device STT, library) is carried over; **Day Journal, Recall, and the Second Brain are original to Hindsight**.

Several upstream features were removed and are **not** part of Hindsight: system-wide dictation, file transcription, YouTube transcription, and Transforms.

## License

GPL-3.0. Forked from [moona3k/macparakeet](https://github.com/moona3k/macparakeet).