shyn

day.shyn由 shyn.day 發布v0.6.3-alpha更新於 Nov 5, 2026

Local-first ambient memory for your Mac — pages, meetings, notes, encrypted on-device.

概覽

AI 產生的概覽

面向 macOS 的本地優先記憶工具,擷取螢幕文字、會議、筆記與瀏覽紀錄,讓 AI 助理檢索並回想這些內容。

可以做什麼
  • 以關鍵字加語意的混合檢索搜尋已擷取的記憶,並附上來源資訊
  • 查看近期活動時間軸,為模糊問題提供線索
  • 讀取整份文件,例如完整會議逐字稿或整篇筆記
  • 寫入明確記憶,並在確認參數下徹底刪除記憶
  • 查看守護程序健康狀態、索引數量、模型下載進度與已連接來源
  • 選用:透過獨立的 thatone 應用程式依語意尋找本機檔案
適用情境
當你希望助理根據自己 Mac 上的歷史紀錄作答,例如某場會議決定了什麼、在哪裡讀過某段內容,而不是依賴網路結果時適用。適合能接受早期 pre-alpha 工具、並希望對自己螢幕、會議與筆記資料擁有回想能力的 macOS 使用者。
執行需求
僅支援 Apple Silicon 的 macOS;以本機 stdio MCP 伺服器方式安裝,通常透過 Homebrew cask 加一條 setup 指令,並需背景守護程序執行。擷取需要 macOS 權限:會議需麥克風與系統音訊,螢幕擷取需螢幕錄製與輔助使用,Safari 與 Apple Notes 需完整磁碟存取權限。會議標題選用需要行事曆權限。選用的檔案搜尋工具需在同一台 Mac 上執行獨立的 thatone 應用程式。
安裝前請注意
它會持續擷取螢幕文字、會議音訊與瀏覽紀錄,只有在你接受這一點時才應安裝;靜態加密無法防禦以你本人身分執行的惡意軟體。與你提問相關的片段會傳送給你所選的 AI 用戶端。測試期間除非首次執行時拒絕,否則會傳送匿名使用與當機資料,選單列應用程式每天向 GitHub 檢查一次更新。刪除操作需要明確的確認參數。屬於 pre-alpha 軟體,會有破壞性變更,應用程式為本機自行簽署、未經 Apple 公證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 shyn,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[shyn]

shyn — your Mac's memory, on tap ☀️

shyn.day · macOS (Apple Silicon) · pre-alpha · Elastic License 2.0

Shyn is the always-on memory companion for your Mac. It quietly remembers what you see, hear, and read — your screen, your meetings, your browsing, your notes — and gives your AI assistant total recall over your life. Ask Claude "what did we decide in yesterday's standup?" or "where did I read about that retention bug?" and get an answer grounded in your own history, not the internet's.

Your memory stays local. Private by design. Everything shyn captures lives in an encrypted database on your Mac. Nothing it captures is uploaded, synced, or phoned home — the only bytes that ever leave your machine are the few snippets relevant to a question you chose to ask, sent to the AI you chose to ask it.

During beta, shyn also sends anonymous usage data. shyn runs across different macOS versions, hardware, and permission states, and those combinations produce bugs we cannot reproduce or test for. Most people who hit one never write in; they just quit the app. So shyn reports which features get used, what crashes, its version, and timing numbers, tied to a random ID that is not you.

It never includes anything shyn captured. No screen text, no transcripts, no searches, no identity. You choose on first run, and one click in Settings changes it any time. Turn it off and shyn is exactly what it promises above: nothing but your own questions leaving your machine.

Status: pre-alpha. Shyn is young, moving fast, and macOS-only (Apple Silicon). Expect rough edges and breaking changes. Install is a two-command Homebrew cask (brew install + shyn setup) — the apps are self-signed and re-signed locally by shyn setup, not Apple-notarized; notarized one-click installs are on the roadmap.

Why shyn

  • 🧠 Total recall, instantly. Hybrid search — keyword (FTS5/BM25) + semantic (on-device embeddings) — across everything you've captured, in milliseconds, over a local socket.
  • 👁️ Ambient screen memory. A featherweight agent captures the text on your screen as you work — what you read, wrote, and clicked becomes searchable history.
  • 🎙️ Meetings, remembered. Shyn detects your calls, records both sides locally, transcribes on-device with Whisper, and files a speaker-labeled transcript into your memory. Audio never crosses a socket and is purged the moment the transcript lands — text in, bytes gone. Grant Calendar access and transcripts get titled from the event they belong to ("Sprint standup", attendees included) — read from your Mac's own calendar store, no Google API, nothing leaves the machine.
  • 🌐 Your digital trail, connected. Chrome and Safari history and Apple Notes flow in automatically; files and PDFs on demand.
  • ☀️ Glanceable peace of mind. A frosted-glass menu bar companion shows everything is running — one sun in your menu bar, four live states, a pulsing red dot whenever a meeting is being recorded. Never silent, never sneaky.
  • 🔒 Consent-first capture. Recording announces itself and is cancellable in its grace window. Pause everything with one click or shyn pause 30m. Exclude apps. Delete anything — forget is byte-honest: vacuumed, gone, not soft-deleted.
  • ⚡ Instant-on by design. Keyword search works from second zero; the embedding model downloads in the background and results silently upgrade to hybrid. The model is never on the critical path.

How it works

A background daemon owns an encrypted SQLite index (key in your macOS Keychain) and serves JSON-RPC over a unix socket. Capture agents — screen, meetings — and source readers — Chrome, Safari, Apple Notes — feed it. Your AI talks to it through six MCP tools (plus an optional seventh, search_files, below). That's the whole trick: one private index, many memories, any MCP-speaking assistant.

ToolWhat your AI gets
search_memory(query, …)Hybrid search with provenance — the workhorse
recent_activity(hours?, …)Orientation timeline; great first call on vague questions
get_document(uri | doc_id, …)Read a whole document (a full transcript, a whole note) instead of excerpts
remember(content, tags?)Explicit "write this down" memory
forget(doc_id | source | time-range, confirm)Honest deletion; refuses without confirm: true
memory_status()Health, index counts, model download %, connected sources
search_files(query, kinds?, folder?, limit?)Optional: find your own files by meaning, via the separate thatone app

File search (optional)

search_files finds files on your Mac (images, PDFs, documents, audio, video, text) by what they contain. It needs the separate thatone app (source-available, Elastic License 2.0, macOS on Apple Silicon, pre-alpha) running on the same Mac. shyn itself indexes no files; thatone owns the file index.

  • What is sent: only the query text and the optional kinds, folder and limit go to thatone's local socket. Neither program sends anything over the network. Results (paths and short snippets of your own files) go to your AI client exactly like search_memory results do.
  • What comes back: file paths (Photos items show as "in: Apple Photos, name"), the kind, the time inside recordings and videos, the page for PDFs and a snippet of at most 300 characters. These enter your AI's context exactly like search_memory results do, so installing and running thatone is your choice.
  • Off switch: there is no setting. Quit or uninstall thatone and the tool disappears within about 20 seconds; shyn re-checks that often.
  • Socket: defaults to ~/Library/Application Support/thatone/thatone.sock; override it with the environment variable SHYN_FILE_SEARCH_SOCKET.
  • Status: the last line of memory_status is file search: ready (thatone), file search: not running (thatone) or file search: not installed (thatone).

Quickstart

Install with Homebrew (recommended)

bash
brew install --cask shyn-labs/tap/shynshyn setup

Two commands: the cask verifies the download against its pinned checksum, and shyn setup starts everything and walks you through permissions via the ☀️ menu bar window. No Node, no Xcode, no cloning. Read the cask's caveats — they're the honest fine print (local signing, quarantine, EDR). Update later with brew upgrade shyn && shyn setup.

Or build from source (for contributors)

bash
pnpm install
# start the daemon (first run downloads the embedding model in the# background; search works before that finishes)pnpm --filter @shyn/daemon start

Register the MCP server with Claude Code:

bash
claude mcp add shyn -- pnpm --dir <path-to-shyn-repo> --filter @shyn/mcp-client exec tsx src/main.ts

Substitute <path-to-shyn-repo> with the absolute path where you cloned this repo (e.g. the output of pwd run from inside it).

Feed it something and ask Claude about it:

bash
pnpm shyn ingest /absolute/path/to/some/folder

Use an absolute path: it's stored as the document's uri. Ingest accepts a single file (.md, .txt, .pdf) or a directory to walk. Pull in browser history and Apple Notes any time with pnpm shyn sync.

Go full companion (daemon + agents + menu bar) — one command

bash
pnpm setup

That's it: installs dependencies, creates a stable local signing identity, builds the daemon bundle + capture agents + status app, and starts everything under launchd. Idempotent — re-run it after every git pull.

Under the hood it stages and starts everything — daemon, screen agent, meeting agent, and the menu bar status app — surviving reboots, logging to ~/Library/Logs/shyn/. Grant the permissions macOS asks for (Microphone + System Audio for meetings; Screen Recording + Accessibility for screen capture; Full Disk Access only if you want Safari/Notes — everything else works without it, no dark patterns, no nagging).

bash
pnpm shyn uninstall           # stop + remove, keep datapnpm shyn uninstall --purge   # scorched earth: data, logs, keys

Claude Desktop

pnpm build:mcpb produces dist/shyn.mcpb — drag it onto Claude Desktop's Settings → Extensions page. (Registers the MCP client; the daemon must be running via install above.)

Other clients, including fully local models

Shyn is a standard stdio MCP server — any MCP client works, and your memory never has to touch a paid API at all. Tested so far:

  • Claude Code / Claude Desktop — daily drivers, best-in-class at knowing when to reach into memory unprompted.

  • Qwen3 14B running locally (MLX on Apple Silicon) via Open WebUI, with mcpo bridging MCP to OpenAPI:

    bash
    uvx mcpo --port 8600 -- "$HOME/Library/Application Support/shyn/bin/shyn-mcp"# then add http://localhost:8600 as a tool server in Open WebUI

Honest notes from testing: retrieval quality is identical everywhere — the ranking runs inside the daemon, not the model. What varies is the driver. Smaller local models answer well when you're explicit ("search my memory for…") but are less reliable at deciding to search on their own, and thinking-mode models may need their reasoning reined in (/no_think for Qwen3). Budget ~10GB of unified memory for a 14B model alongside the daemon.

Everyday controls

bash
pnpm shyn status                    # daemon + agents + index healthpnpm shyn search "that one thing"   # search from the terminalpnpm shyn pause 30m                 # pause all capture (2h, until-tomorrow too); resume to undopnpm shyn exclude com.1password.1password   # never capture an apppnpm shyn meeting status                    # live meeting controls (stop | cancel too)shyn voice forget-self   # delete shyn's sample of your voice

…or skip the terminal entirely and click the ☀️ in your menu bar.

The fine print (we sweat it so you don't)

  • Encryption at rest protects against stolen disks and leaked backups — not against malware running as your own user. We say this out loud.

  • Meetings: channel-based speaker labels (Me: / Others:, the default while speaker separation is off), 10-second cancellable grace before any recording, 180-minute hard cap, temp audio byte-purged on ingest. For a room, a talk or a speakerphone — anything shyn cannot hear itself into — click Start recording in the menu bar: a short form asks what it is and who is there, both optional, and the answers become the title and the attendee list (same from the terminal: shyn meeting start "Day 5 review" --with "Maya R, Dev P"). Every meeting also records the time zone the Mac was in, so a trip is searchable later. Transcription defaults to Whisper small; at that size Hindi/Hinglish and other non-English speech often lands as an English gist (documented, not hidden). For markedly better multilingual transcripts, click Multilingual under "Meeting language" in the menu bar popover (a ~3GB one-time download that starts immediately; the popover says plainly which model your next meeting will use). Same switch by hand: "meeting": { "whisperModel": "large-v3_turbo" } in ~/Library/Application Support/shyn/capture.json (any WhisperKit model name works there; the popover shows an unrecognised one as "custom"). Config hot-reloads, no restart. Transcription decodes only the voiced stretches of each channel, several at a time ("chunkedTranscription": false restores the whole-channel decode); the log line for every meeting reports how much of each channel carried voice. It holds idle sleep off while it runs, but a closed lid still sleeps a laptop and pauses it — the popover says so while a transcription is in progress. To time or compare decoders on your own files: shyn-meeting transcribe mic.wav system.wav [--whole] (binary inside the staged shyn-meeting.app).

    Speaker separation (menu bar, "Speaker separation"). On calls, the other side is split into Speaker 1, Speaker 2…; your microphone stays Me:, and a 1:1 with a single voice keeps the attendee's name. In person, everyone on your microphone is separated, and shyn picks out which one is you. Be clear on the default: speaker separation is off until you turn it on. shyn stores a voiceprint of your own voice only, to tell you apart in in-person meetings. It learns it from your calls; shyn voice forget-self deletes it. Other people's voices are used to number them and then discarded.

  • Meeting titles are optional and layered: the calendar event first (needs Calendar access), the call window's title second (needs Accessibility), plain "app · date" otherwise. Decline everything and meetings still transcribe fine.

  • The menu bar app checks GitHub once a day for a newer release — a plain unauthenticated request for the latest version number; nothing about you or your machine rides along. Turn it off with "updateCheck": false in capture.json.

  • Anonymous usage data during beta. The daemon is the only component that sends it, and only after you have answered the first-run prompt. What goes: which features were used, crashes, version and OS, timing numbers, under a random ID unconnected to you. What never goes: anything shyn captured, including search text, document titles and file paths (error messages are scrubbed of credentials and home-directory paths before sending). Event names come from a fixed list in analytics.ts — read it; that list is the whole surface. Turning it off in Settings stops sending immediately and discards anything queued. The capture agents themselves make no network requests, ever.

  • Sources that need permissions report themselves unavailable with a plain-language reason instead of silently capturing nothing.

  • The eval harness (pnpm eval:keyword, eval:hybrid) runs a synthetic corpus against pre-committed pass/fail bars for CI. It is not a benchmark and its numbers are not an accuracy claim.

  • Accepted gaps and sharp edges live in docs/known-issues.md — honesty is a feature.

What shyn never does

  • Ships your captured memory anywhere. Screen text, transcripts, documents and search queries never leave your Mac, under any setting. Outbound traffic is limited to three things: the snippets relevant to a question you asked, the menu bar app's version check against GitHub, and the anonymous beta usage data described below.
  • Stores what you searched for. Usage stats are counts in your local database (searches per day as a number — never the query). The same is true of what is reported during beta: that a search happened, never what it was.
  • Sends anything before you have seen the choice. During beta shyn reports anonymous usage and crash data, and it asks on first run before a single event is queued. Decline and no identifier is even generated; change it any time in Settings. See "Anonymous usage data during beta" above for what is and is not included.
  • Ships your content anywhere. When something breaks, run shyn diagnose: it prints a copy-pasteable block of versions, service states, and error-log lines — zero document content — and you choose where to paste it.

License

Elastic License 2.0 (source-available).

In plain words: use it, read it, modify it, share it — personally or at work, for free. What you may not do is sell shyn or offer it to others as a commercial or managed service; that right stays with the project. The full text is one page and worth reading.

來源:README.md,提交 0cfdebd

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

12
  1. v0.6.3-alpha最新Nov 5, 2026
  2. v0.6.2-alphaOct 19, 2026
  3. v0.6.1-alphaOct 17, 2026
  4. v0.6.0-alphaOct 6, 2026
  5. v0.5.19-alphaOct 5, 2026
  6. v0.5.16-alphaSep 30, 2026
  7. v0.5.15-alphaSep 26, 2026
  8. v0.5.14-alphaSep 22, 2026
  9. v0.5.12-alphaSep 21, 2026
  10. v0.5.10-alphaSep 21, 2026
  11. v0.5.9-alphaSep 21, 2026
  12. v0.5.6-alphaSep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。