Serverless, end-to-end-encrypted, no-account sync for your own devices — memory, tabs, and files. No cloud. MCP-native, so your AI uses the same data locally. Windows/macOS/Linux.
See the code
kith — one's own trusted circle. Kith keeps your circle of devices in sync.
Kith is a serverless, end-to-end-encrypted, no-account desktop app for keeping your own devices in sync — your memory/notes, your saved tabs, and your files — directly device to device, with no server that can read them, because there isn't one. Linking a device is a short pairing code, not an account. And because it speaks MCP, your AI assistant can read and add to the very same data.
Built on iroh (QUIC transport, mainline-DHT discovery) and Automerge (CRDTs).
A single desktop app (Windows · macOS · Linux) with:
Download a build for your OS from the Releases page
(Windows .exe, macOS .dmg, Linux .AppImage/.deb/.rpm). Builds are currently
unsigned (alpha), so your OS may warn about an unverified developer — on Windows choose
More info → Run anyway; on macOS use System Settings → Privacy & Security → Open Anyway.
Or build from source (needs the Rust toolchain + the Tauri prerequisites for your OS):
cargo run -p kith # build + launch the desktop app
cargo tauri build # build installers (needs: cargo install tauri-cli)
The same kith binary doubles as a local MCP server. In the app, open Agents to copy
a ready-made config, or add this to your MCP client (e.g. Claude Desktop's
claude_desktop_config.json) and restart it:
{ "mcpServers": { "kith": { "command": "/path/to/kith", "args": ["serve"] } } }
Your agent then gets memory.*, tabs.*, and files.* tools — operating on the same
encrypted replica the app uses, entirely on your machine. With the Kith app open,
kith serve automatically bridges to it (one shared engine); with the app closed, it
runs standalone.
Admin/Writer/
Reader roles enforced cryptographically against honest peers (a Reader's writes are
rejected; a non-member is refused even with a leaked key). Removing a device rotates an
epoch key so it can't follow future changes.infra/).See docs/PAIRING.md for the link flow and docs/PRIVACY.md for exactly what is and isn't stored.
mesh-engine/ the substrate: per-device identity, mainline-DHT discovery, relay
fallback (or self-hosted), SPAKE2 pairing, N isolated encrypted Spaces,
EndpointId membership + signed roles, epoch-key revocation + audit log,
CRDT sync + multi-stream blob transfer, keychain keys + encrypted
export. The ONLY crate that touches iroh / automerge.
mesh-mcp/ a tiny MCP host — implement one trait and an app's data + actions
become readable/writable by any AI agent, with no server in the loop.
apps/memory/ agent-memory: portable, vendor-neutral memory (the memory schema).
apps/tabs/ centraltabs: cross-device tab/link sync.
apps/files/ kith-files: file sharing on the blob primitive.
apps/desktop/ ★ kith: the Tauri desktop app (GUI) + `kith serve` unified MCP server
that runs all three apps on one shared engine.
The engine is the product; the apps are thin and share one Mesh (one identity, one
pairing, one replica). See ROADMAP.md for invariants and what's next.
Enforced today, each with tests:
two_spaces_isolated,
cross_space_blob_isolation).non_member_endpointid_rejected_even_with_group_key,
reader_write_rejected, membership_change_requires_admin).revoked_device_cannot_sync_new_epoch,
remaining_members_get_new_key_and_converge, removed_device_cannot_fetch_blob).audit_log_hash_chain_detects_tampering).keychain_roundtrip, space_export_import_roundtrip).Honest caveats (the path from alpha to "trust it broadly"):
spake2 0.4 is itself unaudited).
No coding pass substitutes for a review before trusting multi-human spaces with sensitive data.docs/throughput.md).See SECURITY.md to report an issue.
Dual-licensed under MIT or Apache-2.0, at your option.
Serverless, end-to-end-encrypted, no-account sync for your own devices — memory, tabs, and files. No cloud. MCP-native, so your AI uses the same data locally. Windows/macOS/Linux.
See the code
kith — one's own trusted circle. Kith keeps your circle of devices in sync.
Kith is a serverless, end-to-end-encrypted, no-account desktop app for keeping your own devices in sync — your memory/notes, your saved tabs, and your files — directly device to device, with no server that can read them, because there isn't one. Linking a device is a short pairing code, not an account. And because it speaks MCP, your AI assistant can read and add to the very same data.
Built on iroh (QUIC transport, mainline-DHT discovery) and Automerge (CRDTs).
A single desktop app (Windows · macOS · Linux) with:
Download a build for your OS from the Releases page
(Windows .exe, macOS .dmg, Linux .AppImage/.deb/.rpm). Builds are currently
unsigned (alpha), so your OS may warn about an unverified developer — on Windows choose
More info → Run anyway; on macOS use System Settings → Privacy & Security → Open Anyway.
Or build from source (needs the Rust toolchain + the Tauri prerequisites for your OS):
cargo run -p kith # build + launch the desktop app
cargo tauri build # build installers (needs: cargo install tauri-cli)
The same kith binary doubles as a local MCP server. In the app, open Agents to copy
a ready-made config, or add this to your MCP client (e.g. Claude Desktop's
claude_desktop_config.json) and restart it:
{ "mcpServers": { "kith": { "command": "/path/to/kith", "args": ["serve"] } } }
Your agent then gets memory.*, tabs.*, and files.* tools — operating on the same
encrypted replica the app uses, entirely on your machine. With the Kith app open,
kith serve automatically bridges to it (one shared engine); with the app closed, it
runs standalone.
Admin/Writer/
Reader roles enforced cryptographically against honest peers (a Reader's writes are
rejected; a non-member is refused even with a leaked key). Removing a device rotates an
epoch key so it can't follow future changes.infra/).See docs/PAIRING.md for the link flow and docs/PRIVACY.md for exactly what is and isn't stored.
mesh-engine/ the substrate: per-device identity, mainline-DHT discovery, relay
fallback (or self-hosted), SPAKE2 pairing, N isolated encrypted Spaces,
EndpointId membership + signed roles, epoch-key revocation + audit log,
CRDT sync + multi-stream blob transfer, keychain keys + encrypted
export. The ONLY crate that touches iroh / automerge.
mesh-mcp/ a tiny MCP host — implement one trait and an app's data + actions
become readable/writable by any AI agent, with no server in the loop.
apps/memory/ agent-memory: portable, vendor-neutral memory (the memory schema).
apps/tabs/ centraltabs: cross-device tab/link sync.
apps/files/ kith-files: file sharing on the blob primitive.
apps/desktop/ ★ kith: the Tauri desktop app (GUI) + `kith serve` unified MCP server
that runs all three apps on one shared engine.
The engine is the product; the apps are thin and share one Mesh (one identity, one
pairing, one replica). See ROADMAP.md for invariants and what's next.
Enforced today, each with tests:
two_spaces_isolated,
cross_space_blob_isolation).non_member_endpointid_rejected_even_with_group_key,
reader_write_rejected, membership_change_requires_admin).revoked_device_cannot_sync_new_epoch,
remaining_members_get_new_key_and_converge, removed_device_cannot_fetch_blob).audit_log_hash_chain_detects_tampering).keychain_roundtrip, space_export_import_roundtrip).Honest caveats (the path from alpha to "trust it broadly"):
spake2 0.4 is itself unaudited).
No coding pass substitutes for a review before trusting multi-human spaces with sensitive data.docs/throughput.md).See SECURITY.md to report an issue.
Dual-licensed under MIT or Apache-2.0, at your option.