Since launch

Three weeks in. Here's what's landed, what's next, and what's still on the bench.

Parachute went public on April 23. Since then, the load-bearing primitive a partner team was waiting for shipped, Notes grew up enough to handle multiple vaults, and cross-origin OAuth stopped being a yak to shave. Below is the work, named honestly.

Vault

Portable export — the load-bearing one


Lossless markdown export — vault as substrate, anything else as projection vault#308

parachute-vault export <dir> writes your whole vault out as one-file-per-note markdown with YAML frontmatter. parachute-vault import <dir> --blow-away replays it back to byte-equivalent state. IDs survive, typed links survive, tag schemas survive, attachments survive, multi-line metadata survives.

What that unlocks: a git repo of the export is a deterministic projection of the vault — auditable, browseable, time-travelable. Edit the same vault in Obsidian or Logseq, then re-import, and the IDs and typed links come home unbroken. Disaster recovery is "untar somewhere and run import --blow-away --yes." A partner team can build a custom dashboard against the export format without ever having to negotiate vault-internal access.

The whole thing is documented in the cookbook — format spec, round-trip guarantees, a nightly git-projection recipe, the edge cases. That cookbook is the contract.

Notes

Grew up


Multi-vault PWA — one install, every vault notes#115

The header now carries a vault popover. "Connected" lists every vault Notes has OAuthed into; "Available from your hub" lists vaults published at your hub's well-known doc that you haven't connected yet, each with an inline Connect button. One Notes install, every vault on your hub, no profile-switching tax.

If you self-host a hub with four vaults, you no longer see the same vault's URL collide with the other three. That sounds like plumbing — it was, in fact, the thing standing between Notes-as-PWA and Notes-as-daily-driver for anyone with more than one vault.

Hub

Crossed origins, found roots


Cross-origin approve flow — localhost ↔ tailnet ↔ cloudflare all work hub#245

The "Cross-origin request rejected" failure when approving an OAuth client from a different layer (operator on localhost approving for a tailnet-exposed hub, or vice versa) is gone. The hub now considers itself bound to its configured issuer, its loopback aliases, and any current expose origin — matching the actual ways a real operator reaches it.

Patterns

Working out loud


Still on the bench

Named so the roadmap doesn't drift from reality:

Try the new stuff

If you already have a vault running, parachute upgrade vault picks up portable export and the schema improvements. If you don't yet:

bun add -g @openparachute/hub && parachute install vault

Then read the export cookbook for a full tour of what the substrate now does.