Headless sync does not sync

Hi everyone,

I’m running into troubles using headless sync. (Feel free to delete this topic if that’s not the right place, I’m new to this.)

What I’m trying to do

I’m trying to use Obsidian Headless to perform a headless sync.

My config

  • OS: Ubuntu 24.04.4 LTS (server only so no GUI)
  • Obsidian Headless v0.0.6
  • Node.js v25.8.0

What I did

mkdir ~/MyVaultOnMySever
cd ~/MyVaultOnMySever
ob login
ob sync-setup --vault "MyVault" --password "MyPassword"
ob sync

And then the folder remains empty.

Things I have tried

I tried:

  • uninstalling/reinstalling Obsidian Headless without success
  • switching sync mode using ob sync-config --mode "pull-only" and ob sync-config --mode "mirror-remote"
  • checking that my vault indeed has files in it

I don’t really know what to do from here…

Thanks in advance to anyone who’ll read this!

1 Like

Chming in to say I have the exact same problem. Although I have it on my RaspberryPi with Debian 12.

Same problem. Both ob sync and ob sync –continuous return immediately and nothing is synced.

uname -a
Linux x 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 9 10:15:05 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION=“Ubuntu 24.04.4 LTS”

See my answer below

An .obsidian folder is created within every vault. And it is empty.

no .obsidian folder is created on the home directory.

try ~/.config/obsdian-headless/

then there is a subfolder sync and under that a folder for each remote vault you configured. You will find the logs there

Having the same issue.

I checked the vault folder under ~/.config/obsidian-headless/sync now: It only has a config.json file (interestingly with empty device name, even though it shows a device name under ob sync-status), and a completely empty state.db file. No log file.

Also, I tried reading the source code, but it seems to be a minified build output only.

I have exactly the same as felixm. Including the empty device name. A config and a token.

i manually filled the device name on the config file and that made sync work.

Another person chiming in with the same problem… I get that this is in beta, but it would be great to have some more verbose output to help debug.

The device name should not be necessary, it is automatically picked up from the system name.

@progeny do you confirm that manually adding a host name fixes your problem?

@felixm what about you?

Not tagged but adding a hostname didn’t make a difference for me fwiw.

config.json is the only thing in my .config/obsidian-headless/sync/{vault-id}/ folder… and the auth_token in .config/obsidian-headless

What permissions do these files need? They’ve been created with user access only…

the permissions are correct. obsidian headless executes under the users that runs it.

Obsidian-headless 0.0.7 was just released to fix another bug.
Let me know if you get more debug info with the new version.

I’m now getting an error with better-sqlite3 saying that it was compiled against a different node.js version:

“using

NODE_MODULE_VERSION 127. This version of Node.js requires

NODE_MODULE_VERSION 137. Please try re-compiling or re-installing…”

have tried various attempts to reinstall it, and a couple of different note versions… could this be related to how ob sync was failing silently before? (If the engine wasn’t loading?)

Well we fixed a bug that could have caused the errors to not appear in the output, so this was likely the cause and now you see the error.

And in that case, the solution is simply to use node.js V22… because the precompiled better-sqlite3 binary npm is providing is not compatible with 24+

It works now!

Just to add for people above:

nvm install 22
nvm use 22

npm install -g obsidian-headless
```

Then all was well for me…

It should work with node 24 as well.

hmmmm, I still can’t get it to work using the v24 engine… Perhaps an error with prebuild-install?

@WhiteNoise to your question: in 0.0.6 I edited the .config/obsidian-headless/sync/[vault]/config.json and changed the deviceName to my hostname. It was empty, despite me passing –device-name to “ob sync-setup”. Then “ob sync” worked.

I’ve upgraded to 0.0.7 and now i see this error:

$ ob sync
Sync failed: Error: The module '/usr/lib/node_modules/obsidian-headless/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 127. This version of Node.js requires
NODE_MODULE_VERSION 141. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Module._extensions..node (node:internal/modules/cjs/loader:1996:18)
    at Module.load (node:internal/modules/cjs/loader:1552:32)
    at Module._load (node:internal/modules/cjs/loader:1354:12)
    at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
    at Module.require (node:internal/modules/cjs/loader:1575:12)
    at require (node:internal/modules/helpers:191:16)
    at bindings (/usr/lib/node_modules/obsidian-headless/node_modules/bindings/bindings.js:112:48)
    at new Database (/usr/lib/node_modules/obsidian-headless/node_modules/better-sqlite3/lib/database.js:48:64)
    at new de (/usr/lib/node_modules/obsidian-headless/cli.js:3:13017)
    at new Te (/usr/lib/node_modules/obsidian-headless/cli.js:7:13716) {
  code: 'ERR_DLOPEN_FAILED'
}

I can make it work using nvm to force node 24:

$nvm exec 24 ob sync
Running node v24.14.0 (npm v11.9.0)
No sync configuration found for /home/hawat
Run 'ob sync-setup' first.