Is skm the right tool?
skm is for the app where “we cannot read it” is the feature.
The 2026 sync-engine field is crowded and good — ElectricSQL, PowerSync, Zero, InstantDB — and almost all of it syncs plaintext through a server the vendor can read, because that is what server-side search, notifications, and AI features need. If you want those, use one of those. They are better at it.
Use skm if:
- your data is health, legal, financial, journalistic, or otherwise the kind where “our server was breached” is an ending rather than an incident;
- you want a local-first app whose reads never wait on a network;
- you are prepared to give up server-side search, server-side notification content, and server-side anything-that-reads-the-data.
Do not use skm if:
- you need full-text search across a corpus larger than a device holds;
- you need the server to compute over the data (analytics, ranking, LLM calls);
- your compliance story requires server-side inspection of user content.
A short honesty checklist, all of which is expanded in SECURITY.md:
| you want | skm gives you |
|---|---|
| the server cannot read record contents | yes — the primary claim, tested mechanically |
| the server cannot forge a record | yes — signatures inside the ciphertext |
| the server cannot tell who wrote what | yes |
| the server cannot tell who talks to whom | no — membership and pairwise graphs are visible |
| the server cannot serve stale or omit records | no — not yet; needs a signed log. See ROADMAP.md |
| a browser app nobody can backdoor | no — whoever serves the JavaScript could ship a leak |