{"id":50632665,"url":"https://github.com/iannellomarco/hindsight","last_synced_at":"2026-06-07T00:00:17.973Z","repository":{"id":361560602,"uuid":"1254442172","full_name":"iannellomarco/hindsight","owner":"iannellomarco","description":"Hindsight — private, local-first journal + meeting recording for macOS (Apple Silicon). GPL-3.0. Derived from MacParakeet.","archived":false,"fork":false,"pushed_at":"2026-05-31T09:06:00.000Z","size":45438,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T09:10:29.803Z","etag":null,"topics":["journal","local-first","macos","meeting-recording","menubar","privacy","speech-to-text","swift"],"latest_commit_sha":null,"homepage":"https://github.com/iannellomarco/hindsight","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iannellomarco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["moona3k"]}},"created_at":"2026-05-30T15:13:53.000Z","updated_at":"2026-05-31T08:25:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/iannellomarco/hindsight","commit_stats":null,"previous_names":["iannellomarco/hindsight"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/iannellomarco/hindsight","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iannellomarco%2Fhindsight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iannellomarco%2Fhindsight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iannellomarco%2Fhindsight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iannellomarco%2Fhindsight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iannellomarco","download_url":"https://codeload.github.com/iannellomarco/hindsight/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iannellomarco%2Fhindsight/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34003814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["journal","local-first","macos","meeting-recording","menubar","privacy","speech-to-text","swift"],"created_at":"2026-06-07T00:00:14.977Z","updated_at":"2026-06-07T00:00:17.964Z","avatar_url":"https://github.com/iannellomarco.png","language":"Swift","funding_links":["https://github.com/sponsors/moona3k"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Assets/AppIcon-1024x1024.png\" width=\"96\" height=\"96\" alt=\"Hindsight icon\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eHindsight\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA private, local-first second brain for your Mac.\u003c/strong\u003e\u003cbr\u003e\n  It quietly captures your screen through the day, understands what you're working on,\u003cbr\u003e\n  and lets you \u003cem\u003erecall anything you saw\u003c/em\u003e — all on your Mac.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/iannellomarco/hindsight/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/Download-DMG-E86B3B.svg?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Download DMG\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-blue.svg\" alt=\"GPL-3.0\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/macOS-14.2%2B-000000.svg\" alt=\"macOS 14.2+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Swift-6.0-F05138.svg\" alt=\"Swift 6\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Apple%20Silicon%20only-333333.svg\" alt=\"Apple Silicon\"\u003e\n\u003c/p\u003e\n\n---\n\n## Your screen, turned into a searchable memory\n\nHindsight 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.\n\n- **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.\n- **Recall anything you saw** through three retrieval modes, all on-device:\n  - **By meaning** — semantic search matches ideas even when the words differ.\n  - **By exact text** — full-text keyword search with highlighted snippets.\n  - **By typed value** — phones, emails, URLs, files, issue refs extracted automatically.\n- **Recurring threads** — spot the things you keep coming back to across days and weeks.\n- **Activity timeline** — your day segmented into coherent activities with AI titles, plus **focus metrics**: deep-focus blocks, context switches, time per app.\n- **Per-window understanding** — knows you were *\"editing JournalService.swift · Swift\"*, *\"reading developer.apple.com\"*, or the terminal commands you ran.\n\nEverything — 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.\n\n## How a day flows\n\n```\nScreenshots (every ~2 min, all displays)\n    │\n    ▼\nOn-device OCR (Apple Vision) ── nothing leaves your Mac\n    │\n    ▼\nRedaction gate ── secrets scrubbed before disk + before any model\n    │\n    ├─▶ Entities (phones · emails · links · files · issue refs)\n    ├─▶ Full-text index (FTS5) + semantic embeddings\n    ├─▶ Window understanding (app, title, document, URL)\n    ├─▶ Change detection (idle / minor / context switch)\n    │\n    ▼\nAI batch analysis (opt-in provider) ── running day narrative + activity timeline\n    │\n    ▼\nEnd-of-day review chat + a permanent, searchable journal\n```\n\n## Privacy by pipeline, not by prompt\n\nHindsight doesn't ask an AI to \"be careful.\" It enforces privacy through deterministic, on-device gates:\n\n- **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.\n- **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.\n- **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.\n- **Vision is a separate opt-in tier** — sending pixels to a model is never the default. An on-device VLM keeps images local.\n- **No accounts, no tracking.** Telemetry never includes journal content and is inert by default.\n\nSee [ADR-024](spec/adr/024-journal-deep-understanding.md) for the full privacy model.\n\n## Browse, search, and chat with your days\n\n### Recall (⌕)\n\nOpen **Journal → Recall** to search across **all** your days.\n\n- **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.\n- **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.\n\nPick a provider in **Settings → AI Provider**: cloud (Anthropic, OpenAI, Gemini, OpenRouter) or local (Ollama, LM Studio). Local keeps everything on your Mac.\n\n### Day Library\n\nBrowse past days as a date-grouped list. Each day opens into a detailed view with:\n\n- The AI-generated day narrative and activity breakdown.\n- Per-activity titles, time spans, and dominant app.\n- **Focus metrics**: where your time went, how many context switches, longest deep-focus block.\n- **Chat with this day** — ask follow-up questions scoped to a specific day's activity.\n\n### End-of-day review\n\nWhen 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.\n\n## What Hindsight understands about each moment\n\nFor every captured frame, Hindsight builds structured context — all on-device:\n\n| Signal | Source | Example |\n|--------|--------|---------|\n| Focused window title | Accessibility API | `\"JournalService.swift — macparakeet-fork\"` |\n| Active document path | AX Document | `~/dev/hindsight/Sources/.../JournalService.swift` |\n| Active URL | AX URL + browser BFS | `github.com/iannellomarco/hindsight` |\n| App activity | Specialist extractors | `\"editing Swift file\"` / `\"reading domain\"` / `\"ran: git push\"` |\n| Other visible windows | ScreenCaptureKit window roster | Up to 16 window titles |\n| Scene classification | Vision framework | `\"computer_screen\"`, `\"code\"`, `\"web_browser\"` |\n| Saliency region | Vision attention model | Where on screen you were looking |\n\n## Second Brain graph\n\nThe **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.\n\n## Settings\n\n| Setting | Options | Default |\n|---------|---------|---------|\n| Screenshot interval | 30s / 1m / 2m / 5m / 10m | 2 min |\n| Analysis interval | 15m / 30m / 60m | 30 min |\n| Pause when idle | On/Off + threshold | Off |\n| Keep screenshots | 7d / 30d / 90d / Forever | 30 days |\n| Allow cloud AI to analyze your journal | On/Off | **Off** |\n| AI vision descriptions | On/Off | **Off** |\n| AI provider | Anthropic / OpenAI / Gemini / OpenRouter / Ollama / LM Studio | None |\n\n---\n\n## Also: Meeting Recording\n\nHindsight 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.\n\n---\n\n## Get it\n\n**[Download the latest DMG](https://github.com/iannellomarco/hindsight/releases/latest)** → drag to `/Applications`.\n\nFirst 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**.\n\nAuto-updates via Sparkle from our [GitHub Pages appcast](https://iannellomarco.github.io/hindsight/appcast.xml) — EdDSA signed.\n\n### Build from source\n\n```bash\ngit clone https://github.com/iannellomarco/hindsight.git\ncd hindsight\nswift test\nscripts/dev/run_app.sh\n```\n\n---\n\n## Architecture\n\nCurious how it works under the hood? Start with the **[Architecture Overview](docs/architecture/overview.md)**.\n\n- **[Day Journal — Capture Pipeline](docs/architecture/day-journal-capture.md)** · screenshots, OCR, redaction, change detection\n- **[Day Journal — Understanding Layer](docs/architecture/journal-understanding.md)** · window signal, app extractors, sessionizer, metrics\n- **[Recall — Search \u0026 Ask](docs/architecture/recall.md)** · entities, FTS5, embeddings, retrieval-augmented generation\n- **[Privacy Model](docs/architecture/privacy.md)** · redaction gate, cloud consent, vision tier\n- **[Data Model](docs/architecture/data-model.md)** · schema, migrations, persistence\n- **[Meeting Recording](docs/architecture/meeting-recording.md)** · system audio + mic capture, STT pipeline\n\nDesign 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).\n\n## Built on MacParakeet\n\nHindsight 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**.\n\nSeveral upstream features were removed and are **not** part of Hindsight: system-wide dictation, file transcription, YouTube transcription, and Transforms.\n\n## License\n\nGPL-3.0. Forked from [moona3k/macparakeet](https://github.com/moona3k/macparakeet).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiannellomarco%2Fhindsight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiannellomarco%2Fhindsight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiannellomarco%2Fhindsight/lists"}