Appearance
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 vaultThe 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.
| File | Losing it costs |
|---|---|
*.state.json | A slow first sync. Halcyon asks the server what it holds and compares. Nothing else |
*.bind.json | The 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 vault | Yes, with Sync on |
Images, PDFs, anything not .md | No |
| Pins | No. Device-local, in the index |
| Settings and keybindings | No |
| Window layout and Open Recent | No |
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/halcyonThe 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.