Skip to content
@openlfcp

OpenLFCP

Local-first collaboration, starting with shared tasks in Obsidian.

OpenLFCP

OpenLFCP

Shared tasks and sections inside your private notes.

Website: openlfcp.org

OpenLFCP (Open Local-First Collaboration Protocol) is an open protocol and reference stack for local-first collaboration. It starts with Obsidian. You keep your vault on your own device, and choose what to share: one task, or a whole section of a note with its tasks, subtasks and notes. The other person keeps it in a note of their own, and you both edit it. Only what you shared leaves the device, end-to-end encrypted and signed. The sync server relays the changes and cannot read them.

 Alice's vault                                         Bob's vault
 ┌──────────────────────┐                            ┌──────────────────────┐
 │ private notes …      │   encrypted, signed        │ … his own notes      │
 │ ## Launch plan  ✓✓ ◄─┼──── changes ──► server ◄───┼─► ## Launch plan  ✓✓ │
 │ - [ ] API contract   │   (relays, can't read)     │ - [x] API contract   │
 │ more private text    │                            │ private text         │
 └──────────────────────┘                            └──────────────────────┘

What works today: MVP 0.2

Release notes · MVP 0.1

Shared Tasks 0.4.0 for Obsidian, @openlfcp/* 0.2.0 on npm, the specifications tagged v0.2.0.

  • Share a task, or a whole section of a note, with its tasks, subtasks, paragraphs and lists. What is added inside a section later is shared too, and the text around it stays private.
  • Invite someone with a one-time link. They see your changes in their own note, and you see theirs.
  • Encryption is always on, and access is capability-based: no accounts. Removing someone's access rotates the key. It cannot erase copies they already have.
  • It works offline. Conflicts are shown as choices for you, never written into your text.
  • Your device's sync data is encrypted at rest. A diagnostics report shows you everything before anything leaves the device.
  • The TypeScript and Rust SDKs pass the same conformance vectors.

This is early reference software and the specifications are Working Drafts. Don't use it yet for data you need to protect. The release notes list what was verified and what is still open.

Two ways in

Obsidian users: obsidian, the Shared Tasks plugin.

Developers:

  • spec: the LFCP protocol, the Shared Objects and Shared Sections profiles, and the test vectors.
  • sdk-ts, published as @openlfcp/* 0.2.0 on npm (latest), and sdk-rs.
  • server: a self-hosted sync server (Docker and Caddy).
  • examples:
    • a CLI client that reads and writes shared sections;
    • the two-vault section demonstration;
    • the TS↔Rust conformance harness.

Not yet

  • Shared sections on mobile are read-only: they arrive and are shown, and edits made there stay on the device. Sharing, inviting and removing access are offered on desktop only (LFCP-02-095).
  • Rejoining a section you were removed from.
  • Moving a collaboration to another server.
  • Comments and discussion threads inside a section.
  • A full LFCP-WIRE-01 implementation. MVP 0.2 implements its MVP subset.

Feedback

Bug reports and ideas go in the issues of the repository concerned. Read CONTRIBUTING before you start. Report vulnerabilities privately, as described in SECURITY. Everything is licensed under Apache-2.0.

Pinned Loading

  1. obsidian obsidian Public

    Obsidian plugin: shared tasks inside your private notes, end-to-end encrypted. Built on OpenLFCP.

    TypeScript

Repositories

Showing 7 of 7 repositories

Top languages

Loading…

Most used topics

Loading…