shynCAUTION
shyn — a register of your days. Local-first memory for your Mac: pages, meetings, notes — encrypted on-device, recalled by your AI over MCP.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[shyn.day](https://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 l
2522efb06508OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add status-ui --env GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL} --env SHYN_PASSPHRASE=${SHYN_PASSPHRASE} --env SHYN_POSTHOG_KEY=${SHYN_POSTHOG_KEY} --env SHYN_TEST_NO_KEYCHAIN=${SHYN_TEST_NO_KEYCHAIN} -- npx -y @shyn/[email protected]{
"mcpServers": {
"status-ui": {
"command": "npx",
"args": [
"-y",
"@shyn/[email protected]"
],
"env": {
"GIT_AUTHOR_EMAIL": "${GIT_AUTHOR_EMAIL}",
"SHYN_PASSPHRASE": "${SHYN_PASSPHRASE}",
"SHYN_POSTHOG_KEY": "${SHYN_POSTHOG_KEY}",
"SHYN_TEST_NO_KEYCHAIN": "${SHYN_TEST_NO_KEYCHAIN}"
}
}
}
}Exposed tools (6)
6 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
forget | read | |
get_document | read | |
memory_status | read | |
recent_activity | read | |
remember | read | |
search_memory | read |
Trust audit
CAUTIONgrade C · trust 74/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (4 observation(s))
- Shell
- none-observed
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (14)
#expect(containsSecret("sk-ant-api03-abcdefghijklmnopqrstuvwxyz"))message: "auth failed for sk-ant-api03-AAAAAAAAAAAAAAAAAAAAAAAA",
const SECRET = "RaceOrphanSecretNeverElsewhere";
const SECRET = "XyZZySecretTokenNeverElsewhere";
#expect(containsSecret("token ghp_abcdefghijklmnopqrstuvwxyz0123456789"))#expect(containsSecret("-----BEGIN RSA PRIVATE KEY-----"))const root = j(import.meta.dirname, "../../capture-agent/Sources");
const REPO_ROOT = join(fileURLToPath(import.meta.url), "../../../..");
@types/node, esbuild, node-llama-cpp, sqlite-vec, tsx, typescript, vitest
unpdf, pdf-lib
sqlite-vec, node-llama-cpp
@modelcontextprotocol/sdk, zod
electron, electron-builder, esbuild, jsdom
- Keychain access (`KeychainKeyProvider`) shells out to the macOS `security`
Gates applied: no_behavioural_pass.
2522efb06508full audit observations/trust-audit/mcp-server/shyn-labs__shyn.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 2522efb06508 | CAUTION | C | 74 | first audit |
Questions
What is the shyn MCP server?
shyn — a register of your days. Local-first memory for your Mac: pages, meetings, notes — encrypted on-device, recalled by your AI over MCP.
What tools does shyn expose?
6 in total: 6 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is shyn safe to connect to an agent?
With care. The audit graded it C (74/100) and found 14 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does shyn need?
It reads GIT_AUTHOR_EMAIL, SHYN_PASSPHRASE, SHYN_POSTHOG_KEY and SHYN_TEST_NO_KEYCHAIN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does shyn run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @shyn/status-ui at 0.0.0.
How current is this page?
The grade is for one exact copy of the source (2522efb06508), read on 2026-10-11. The repository is watched and re-audited when it changes.