CipherLink

by gooderno1
5
4
3
2
1
Score: 50/100

Description

Encrypted Markdown notes for Obsidian with visible metadata, native links, and optional gateway storage.

Reviews

No reviews yet.

Stats

0
stars
78
downloads
0
forks
100
days
100
days
100
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
16
commits

Latest Version

3 months ago

Changelog

Release notes

0.1.1 - 2026-07-15

  • Fix encrypted-body components failing to open by using Obsidian's shared CodeMirror and Lezer runtime instances.
  • Make CipherLink public envelopes read-only in the outer editor while keeping the nested encrypted-body editor editable.
  • Reject user-originated outer-document changes independently of focus timing, including input during secure-editor loading.
  • Preserve explicit public alias, tag, and relationship updates through CipherLink's metadata action.
  • Avoid whole-vault Markdown enumeration and direct browser-storage access reported by the Community automated review.
  • Address the remaining actionable source and CSS review findings while retaining Obsidian 1.10.6 compatibility.
  • Add GitHub artifact attestations for release assets.

The public-envelope and ciphertext formats remain unchanged. This patch passed 21 automated tests, isolated Obsidian 1.10.6 runtime automation, a separate user clean-vault desktop acceptance sequence, and post-test plaintext-persistence scanning. Mobile behavior and real gateway deployment remain unverified and are not claimed as accepted for this release.

README file from

Github

CipherLink creates encrypted Markdown notes in Obsidian while keeping user-selected metadata and relationships visible to native search, tags, backlinks, and Graph view.

How it works

Each secure note has two parts:

Project note.md                         Public Markdown envelope
.cipherlink/objects/<id>.md.age        Encrypted Markdown body

The envelope contains only metadata the user explicitly chooses to expose, such as title, aliases, tags, status, and relationship links. Obsidian opens that envelope with its native Markdown view, while CipherLink replaces the encrypted-content callout with an in-memory secure editor. Decrypted text is never inserted into the outer Markdown document.

Public relationships / 公开关系 is an intentional section of the public envelope. The initial No public relationships entry means that no public links have been added yet; it is not encrypted-body content. Use Edit public metadata to publish only links that may remain visible while the note is locked.

Modes

  • Standalone: encrypted objects are stored inside the vault and can be synced like ordinary files.
  • Gateway: the vault keeps the public envelope while a compatible gateway stores authoritative encrypted versions and provides conflict control and audit.

Gateway mode is optional. CipherLink does not require a server for normal use.

First use

  1. Open CipherLink settings to create an identity, or create the first encrypted document and set a password of at least 8 characters when prompted.
  2. Use Create encrypted document from the command palette, ribbon, or a folder's context menu. CipherLink directly creates an untitled note in Obsidian's configured new-note location; rename it through the normal file explorer.
  3. Add only aliases, tags, and relationships that may remain visible while locked by using Edit public metadata after creation.
  4. Use Lock session when leaving Obsidian unattended.

Existing users can import a compatible protected age identity package and create a public envelope for a selected .md.age file without decrypting or rewriting that ciphertext.

Current status

  • Released version: 0.1.1
  • Desktop acceptance: standalone setup, editing, lock/restart, cross-document isolation, and plaintext-persistence checks passed on Obsidian 1.10.6
  • Status: available in the official Community directory; automated review is complete, but Obsidian staff have not manually reviewed the plugin
  • Mobile acceptance: explicitly deferred and not claimed as tested
  • Gateway deployment acceptance: pending; standalone use does not require a gateway

Implemented scope and acceptance status are tracked in docs/DEVELOPMENT_PLAN.md. The native envelope and embedded secure-body architecture is specified in docs/NATIVE_INTEGRATION.md.

Security summary

  • The unlock password is never saved.
  • The user age identity is stored only in passphrase-protected form.
  • The protected identity follows the vault's configured settings directory rather than assuming .obsidian.
  • Encrypted note bodies are not written to ordinary Markdown files, temporary files, plugin data, or logs.
  • Public envelope metadata is readable by Obsidian, sync software, other plugins, and local AI tools.
  • CipherLink cannot isolate plaintext from a malicious plugin running in the same Obsidian process.
  • Losing both the identity package and its password makes standalone notes unrecoverable; back up the protected identity separately.

See docs/SECURITY.md before using real data.

Privacy and network access

  • CipherLink has no telemetry, advertising, account system, or payment feature.
  • Standalone mode performs no network requests.
  • Gateway mode contacts only the endpoint configured by the user. Non-loopback endpoints must use HTTPS; HTTP is permitted only for local development on loopback addresses.
  • Gateway requests contain encrypted note objects, public envelope/configuration data, protocol challenges, and short-lived session tokens. Decrypted Markdown bodies and identity passwords are not sent to the gateway.
  • Identity import reads only the vault-relative file explicitly selected by the user.

Installation

Install CipherLink from Obsidian's Community plugins browser. For manual installation, download main.js, manifest.json, and styles.css from the 0.1.1 GitHub release and place them in <vault-config-dir>/plugins/cipher-link/. Restart Obsidian, then enable CipherLink under Community plugins.

Development

npm install
npm run verify

The repository uses only synthetic fixtures. Runtime identities, encrypted objects, and test vaults belong under local_dev_work/ and are ignored by Git.