Skip to content

Repository files navigation

Bonds

An Obsidian plugin that makes links first-class citizens. Notes are atoms; the connections between them are bonds — and a bond is itself a note that carries its own content.

Information that belongs to a relationship (credentials for a site, the reason two ideas connect, the history between two people) lives in exactly one place — the bond note — and is rendered automatically at the bottom of both endpoint notes. No more copying the same snippet to both ends.

Why links deserve to be first-class

We never actually know a thing in itself — we know it in relation to other things. A word is defined by other words. A price means nothing except relative to other prices. You know a person through shared history, a concept through what it resembles and what it opposes. Strip away everything a thing relates to and there is nothing left to know. All knowledge is relative; the relations are the knowledge.

The brain works the same way: memory isn't stored in neurons, it's stored in the connections between them. A synapse is not a wire — it's where the information lives.

Yet almost every note-taking tool, Obsidian included, inverts this: notes (nodes) get all the structure — titles, content, metadata, history — while the links that give them meaning are reduced to bare pointers with no content, no identity, no home. The most important part of a knowledge graph is the part you can't write anything in.

Bonds fixes that inversion. A bond is a real note: it can hold content, carry a type, appear in search, and grow over time — because the relationship between two ideas is often the most valuable thing you know about either of them. The rendered section in each note is titled Synapses by default (configurable) — a nod to where nature keeps its knowledge.

How it works

A bond is a plain markdown note with frontmatter:

---
synapse: bond
atoms:
  - "[[Amazon]]"
  - "[[Password]]"
type: credential
---
login: you@example.com
2FA: authenticator app

Open Amazon.md or Password.md and the bond's content appears in a collapsible Synapses section at the bottom of the note. Edit the bond once, both ends update.

Everything is plain markdown — without the plugin, bonds are still ordinary notes that link to both atoms, visible in graph view and search. Nothing is locked in.

Usage

  • Create bond from current note (command palette) — fuzzy-pick the other atom(s); the bond note is scaffolded in your bonds folder and opened for editing. Enter picks the final atom and creates the bond; Shift+Enter adds an atom and keeps picking, so a bond can join any number of atoms.
  • Bonds render at the bottom of notes in both reading and editing mode.
  • type is free-form — let your own taxonomy emerge.
  • Rebuild bond index — manual refresh if anything looks stale.

Settings

  • Bonds folder — where new bond notes are created (default: Bonds)
  • Show bonds in notes — toggle the rendered section
  • Collapse bonds by default — start bonds folded

Installation

Until Bonds is in the community plugin browser, install manually: copy manifest.json, main.js, and styles.css into <your vault>/.obsidian/plugins/bonds/, then enable it in Settings → Community plugins.

Development

npm install
npm run dev    # watch mode
npm run build  # type-check + production build

For a live dev loop, symlink this folder into a test vault's .obsidian/plugins/ and reload the plugin after builds.

Releasing

npm version patch   # bumps package.json, manifest.json, versions.json
git push && git push --tags

Pushing a tag triggers the GitHub Action, which builds and creates a draft release with main.js, manifest.json, and styles.css attached.

Roadmap (future brain territory)

  • Bond strength — explicit or emergent from traversal
  • Custom atom/bond graph view (edges rendered as edges, thick when strong)
  • In-place bond editing from the atom's view

About

Obsidian plugin: links as first-class notes — bonds between atoms carry their own content

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages