{"id":51002177,"url":"https://github.com/fru-dev3/memosa","last_synced_at":"2026-06-20T15:33:29.105Z","repository":{"id":364889528,"uuid":"1175546079","full_name":"fru-dev3/memosa","owner":"fru-dev3","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-15T00:13:04.000Z","size":83753,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T01:18:56.771Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fru-dev3.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-07T21:21:03.000Z","updated_at":"2026-06-15T00:13:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fru-dev3/memosa","commit_stats":null,"previous_names":["fru-dev3/memosa"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/fru-dev3/memosa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fru-dev3%2Fmemosa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fru-dev3%2Fmemosa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fru-dev3%2Fmemosa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fru-dev3%2Fmemosa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fru-dev3","download_url":"https://codeload.github.com/fru-dev3/memosa/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fru-dev3%2Fmemosa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34576043,"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-20T02:00:06.407Z","response_time":98,"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":[],"created_at":"2026-06-20T15:33:29.045Z","updated_at":"2026-06-20T15:33:29.094Z","avatar_url":"https://github.com/fru-dev3.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\r\n\r\n\u003cimg src=\"assets/icon.png\" alt=\"Memosa\" width=\"84\" /\u003e\r\n\r\n# Memosa\r\n\r\n**Local-first meeting recorder for macOS.** Records audio, transcribes on-device with Whisper, and organises everything into a searchable library — nothing leaves your machine unless you choose.\r\n\r\n\u003cp\u003e\r\n  \u003ca href=\"https://github.com/fru-dev3/memosa/releases/latest/download/Memosa-mac-arm64.dmg\"\u003e\u003cimg src=\"https://img.shields.io/badge/Download-Memosa%20for%20macOS-2b7a78?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Download Memosa for macOS\" /\u003e\u003c/a\u003e\r\n  \u003ca href=\"https://apps.apple.com/us/app/memosa-meeting-memory/id6760445178?mt=12\"\u003e\u003cimg src=\"https://img.shields.io/badge/Mac%20App%20Store-Memosa-0d96f6?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Mac App Store\" /\u003e\u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp\u003e\r\n  \u003ca href=\"https://github.com/fru-dev3/memosa/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/fru-dev3/memosa?label=latest\u0026color=2b7a78\" alt=\"Latest release\" /\u003e\u003c/a\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/macOS-13%2B%20·%20Apple%20Silicon-111111?logo=apple\u0026logoColor=white\" alt=\"macOS 13+ Apple Silicon\" /\u003e\r\n  \u003cimg src=\"https://img.shields.io/badge/license-GPL--3.0-555\" alt=\"GPL-3.0 License\" /\u003e\r\n\u003c/p\u003e\r\n\r\n**[⤓ Download the latest `.dmg`](https://github.com/fru-dev3/memosa/releases/latest/download/Memosa-mac-arm64.dmg)** \u0026nbsp;·\u0026nbsp; [Mac App Store](https://apps.apple.com/us/app/memosa-meeting-memory/id6760445178?mt=12) \u0026nbsp;·\u0026nbsp; [all releases](https://github.com/fru-dev3/memosa/releases)\r\n\r\n\u003c/div\u003e\r\n\r\n## What it does\r\n\r\n- Records meetings and calls on your Mac\r\n- Transcribes audio locally using Whisper (on-device after initial model download)\r\n- Organises recordings by date, tags, people, and custom folders\r\n- **AI summaries, action items \u0026 decisions** — local-first via Ollama (private by\r\n  default) or your own Anthropic/OpenAI key (opt-in)\r\n- **Chat with your meetings** — ask questions across your transcript library\r\n  (local retrieval + your chosen engine)\r\n- **Calendar auto-record** — connect Google Calendar (read-only) to record\r\n  meetings automatically, with a 2-minute heads-up\r\n- **AI speaker labels** — speaker-attributed transcript on demand\r\n- **Sync** a meeting to an Obsidian vault (local) or a Notion database (your token)\r\n- Exports transcripts and notes to any folder or tool you already use\r\n\r\n\u003e **Privacy posture:** the default engine (heuristic, or local Ollama) keeps\r\n\u003e everything on your Mac. Cloud options (BYOK summaries, Notion) only send data\r\n\u003e after you explicitly opt in, and they say so in the UI. Calendar uses read-only\r\n\u003e scope and stores its token in the macOS Keychain.\r\n\r\n## Tech stack\r\n\r\n- **Frontend** — React + TypeScript + Vite\r\n- **Backend** — Rust via Tauri 2\r\n- **Transcription** — whisper-rs (on-device)\r\n- **Storage** — SQLite (FTS5 full-text search) + local file system\r\n- **Audio** — CoreAudio via Objective-C (no subprocess, MAS sandbox compliant)\r\n\r\n## Requirements\r\n\r\n- macOS 13.0 or later\r\n- Rust (latest stable)\r\n- Node.js 18+\r\n\r\n## Development\r\n\r\n```bash\r\n# Install dependencies\r\nnpm install\r\n\r\n# Start dev server (Vite only — see note below)\r\nnpx vite\r\n\r\n# Build Rust binary\r\ncd src-tauri \u0026\u0026 cargo build --no-default-features --features whisper-rs\r\n\r\n# For microphone access in dev, wrap in a signed .app bundle\r\n# See: src-tauri/src/audio/permissions.rs\r\n```\r\n\r\n\u003e **Note on mic permissions in dev:** macOS requires a signed `.app` bundle to show\r\n\u003e the microphone permission dialog. Running the binary directly will silently deny access.\r\n\u003e Build the bundle and launch via `open` to trigger the TCC prompt.\r\n\r\n## Release build\r\n\r\n```bash\r\nnpm run tauri build\r\n# Output: target/release/bundle/macos/Memosa.app\r\n```\r\n\r\nSigned, notarized `.dmg` releases are produced in CI by pushing a `v*` tag — see\r\n[docs/RELEASING.md](docs/RELEASING.md).\r\n\r\n## Project structure\r\n\r\n```\r\nsrc/                    React frontend\r\nsrc-tauri/src/          Rust backend\r\n  audio/                Recording, mic permissions, CoreAudio helpers\r\n  transcription/        Whisper integration, job queue, insight orchestration\r\n  insights/             AI insight engines (Ollama / BYOK Anthropic·OpenAI)\r\n  calendar/             Google Calendar OAuth (PKCE), auto-record scheduler\r\n  chat/                 \"Chat with your meetings\" — FTS retrieval + LLM\r\n  sync/                 Obsidian (local) + Notion sync\r\n  storage/              SQLite DB, file system, settings, cleanup\r\n  export/               Export providers (local bundle)\r\n  macos.rs              ObjC bridge (audio, URL open, Finder reveal)\r\n  macos_helpers.m       Objective-C implementations\r\nsrc-tauri/entitlements.plist   App sandbox entitlements (incl. loopback OAuth)\r\nsrc-tauri/Info.plist           macOS metadata and privacy strings\r\n```\r\n\r\n## Configuration\r\n\r\nAll optional; configured in **Settings**. Secrets (OAuth/Notion tokens, BYOK\r\nkeys) live in the macOS Keychain, never on disk.\r\n\r\n- **AI Insights** (Settings → AI Insights): choose *Built-in* (offline),\r\n  *Ollama* (local — run `ollama pull llama3.1`), or *Cloud (BYOK)* with your own\r\n  Anthropic/OpenAI key. \"Regenerate all\" re-runs insights across your library.\r\n- **Calendar** (Settings → Calendar): paste a Google Cloud **OAuth desktop\r\n  client ID** (see `docs/google-calendar-setup.md`), connect, and toggle\r\n  auto-record. Read-only scope; loopback redirect `http://localhost:8899/callback`.\r\n- **Integrations** (Settings → Integrations): pick an Obsidian vault folder\r\n  and/or add a Notion integration token + database ID. Sync per-meeting from a\r\n  recording's sidebar.\r\n\r\n## Privacy\r\n\r\nAll audio and transcripts are stored locally at the path you configure in Settings.\r\nWhisper models are downloaded from the internet on first use, then all processing runs on-device.\r\nThe app is sandboxed and targets the Mac App Store.\r\n\r\n## License\r\n\r\nMemosa is free software, released under the **GNU General Public License v3.0**.\r\nYou may use, study, share, and modify it; derivative works must also be released\r\nunder the GPL-3.0. See [LICENSE](LICENSE) for the full text.\r\n\r\nCopyright © 2026 Fru Louis · fru.dev\r\n\r\nThe name \"Memosa\", its logo, and the Mac App Store listing are not covered by the\r\ncode license.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffru-dev3%2Fmemosa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffru-dev3%2Fmemosa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffru-dev3%2Fmemosa/lists"}