Person OS for your static exports.

A local-first personal & org knowledge-graph library. Ingests Gmail mboxes, Drive folders, and other archive exports into a typed bitemporal graph. Agents navigate it over MCP.

v0.1.0-alpha· Apache 2.0· 27 tests passing· TypeScript / Bun

What it does

Three primitives, one unifying bet: the archive is the source of truth because logins rot.

01 · Ingest

Static-exports-first

Gmail mbox archives, Google Drive folders, and (soon) Slack, Notion, and Microsoft 365 exports.

Not live APIs. The archive outlives the login.

02 · Model

Typed temporal graph

Two primitives — Node and Edge with open kind strings.

Bitemporal from day one (tx_created, tx_invalidated, valid_from, valid_to) with provenance on every record.

03 · Surface

MCP-native

Seven intent-shaped tools your agent can call from Claude Desktop, Cursor, or any MCP client.

Each return carries inline provenance — never “the LLM made it up.”

The MCP surface

A small, intent-shaped tool set. Six tools for navigating, one for writing — all returning structured content with cited sources.

searchFTS5 + filter over the graph (text, kinds, min_confidence).
neighborhood1-3 hop subgraph around a given node.
timelineTime-ordered events for a subject or window.
whyWalk the provenance tree back to ingested leaves.
fetchResolve hypha://node/{id} or hypha://edge/{id} URIs.
recordAgents write — subject to Cedar policy + idempotency keys.
askNL question → compiled StoreQuery (Claude Haiku + FTS fallback).

Try it locally

Clone, install, ingest your own archive, and serve it to Claude Desktop. No accounts, no API keys (except optional ANTHROPIC_API_KEY for NL queries).

# Clone and install
$ git clone https://github.com/nalediym/hypha && cd hypha
$ bun install

# Ingest a Gmail mbox archive
$ bun run hypha ingest gmail-mbox path/to/archive.mbox

# Run inferrers — identity resolution, DLP scanning
$ bun run hypha infer identity-resolver
$ bun run hypha infer dlp-scanner

# Search the graph
$ bun run hypha search "Dinner plans"

# Serve over MCP for Claude Desktop / Cursor
$ bun run hypha serve

Privacy by default

Hypha runs on your machine. Nothing about your archive leaves it unless you explicitly ask.

  • Stays on your machine. Ingested data, the SQLite store, identity-resolver clusters, and DLP findings — all written to .hypha/ in your project directory.
  • No accounts. No telemetry. No analytics SDK, no remote logging, no “phone home” check-ins.
  • Local-first by default. SQLite + FTS5 + sqlite-vec for embeddings. Cedar policy interface for governance.
  • Optional outbound: the ask tool calls Claude Haiku for NL → StoreQuery compilation when ANTHROPIC_API_KEY is set. Omit the key and it falls back to FTS-only.

Status

Shipped v0.1.0-alpha on April 22, 2026. Core wired end-to-end; some adapters and the web UI are deferred to future milestones — see the CHANGELOG for the honest scope.

Adapters
gmail-mbox, gdrive-folder
Inferrers
identity-resolver, dlp-scanner
Surfaces
stdio MCP, read-only HTTP
Tests
27 passing, 1 skipped