Skip to content

Where your files live

Two places, and only one of them holds anything you'd miss.

Your vault

The folder you chose. It holds your .md files, in whatever folders you put them in, and nothing Halcyon added.

These files are the originals. Everything else Halcyon keeps is built from them and can be thrown away.

The app's storage

~/Library/Application Support/co.themillers.halcyon/
  indexes/Notes-6c5ac4e81c72fb72.sqlite     the search index, disposable
  session.json                              which windows were open, and where
  recents.json                              the Open Recent menu
  remote/Notes-6c5ac4e81c72fb72.bind.json   a synced vault: which remote copy it is
  remote/Notes-6c5ac4e81c72fb72.state.json  how far sync has got, and what it last saw
  remote/Notes-6c5ac4e81c72fb72.lock        keeps one copy of Halcyon syncing a vault

The last three appear only once you've turned on Sync.

Each vault gets its own database, named for the folder plus a hash of its full path, so two vaults both called notes can't collide. The sync state files are named the same way for the same reason.

None of these files holds note content, and none holds a secret.

Deleting the index

Safe. Delete indexes/*.sqlite and Halcyon rescans that vault on the next launch and rebuilds it from the files on disk.

You lose one thing: pins, which are the single piece of state stored only here. Everything else is derived.

This is the fix for a note list that disagrees with the folder, and it costs nothing but the rescan.

Deleting the sync state

The two remote/ JSON files are not equally disposable.

FileLosing it costs
*.state.jsonA slow first sync. Halcyon asks the server what it holds and compares. Nothing else
*.bind.jsonThe link itself. Nothing can work out again which account and which remote vault this folder was

If you delete the binding, the folder becomes an ordinary local vault and you'd attach it again through Open remote vault. Nothing is lost from either copy, but it's more work than it sounds.

The Keychain

Your refresh token and every encryption key live in the macOS Keychain, never in a file. Keychain items get OS-level access control; a file in Application Support is readable by anything running as you, and travels into every backup you make.

Signing out deletes them.

What syncs, and what doesn't

Travels between Macs
.md files in the vaultYes, with Sync on
Images, PDFs, anything not .mdNo
PinsNo. Device-local, in the index
Settings and keybindingsNo
Window layout and Open RecentNo

Backing up

Back up your vault folder. That's everything.

Time Machine covers it, and so does git, Dropbox, or anything else that copies files. Because notes are plain markdown, git init in a vault gives you a complete version history that Halcyon knows nothing about and can't interfere with.

Tip

A vault in git and a vault in Sync work together fine. They're solving different problems: git is history you control, Sync is the same notes on your other Mac.

Backing up Application Support is optional. Everything there rebuilds, except pins and window layout.

Clearing Halcyon's own state

Your notes are never involved. They're plain files in a folder you picked, and nothing about them belongs to the app.

bash
rm -rf ~/Library/Application\ Support/co.themillers.halcyon
rm -f ~/.local/bin/halcyon

The first clears search indexes, window state, the Open Recent list, pins, and any sync bindings. The second removes the halcyon command.

Keys and tokens aren't in either place: they're in the Keychain, and signing out is what removes those.

Deleted notes

They go to the macOS Trash rather than being unlinked, so Finder's Put Back returns them to the folder they came from. That's true for notes you trash in the app, and for notes deleted on another Mac and pulled in by Sync.

Halcyon is a markdown notes app for macOS.