Run in Docker
The headless engine (src/node/service.ts) on a vault folder, for a machine without Obsidian:
a VPS, a NAS, a Linux server.
npm run build:serviceDATANOTES_VAULT=/path/to/vault docker compose -f deploy/docker/docker-compose.yml up -d --build- Settings:
/config/service.json(volumedatanotes-config). It is created on first start with port 27150 and a random token. See the settings (semantic search, logs, …). - Token:
docker compose exec datanotes cat /config/service.json. It gives full access: keep it for administration and create an app token for each agent or device. - Apps (datanotes-planning, datanotes-agent, …) run as their own containers or processes,
register with
POST /datanotes/apps/create/and reach the engine over HTTP (see the main README). - Files: changes are picked up by polling (
DATANOTES_WATCH=poll, every 3 s). Bind mounts from Windows and macOS hosts deliver no file events. On a Linux host,DATANOTES_WATCH=eventsreacts immediately. - One engine per vault: the engine holds
.datanotes/engine.lockin the vault; a second engine refuses to start on a folder a live engine holds. - Permissions: the container runs as the user
engine: the vault folder must be writable by it (the engine writes notes and.datanotes/), e.g. setuser:in the compose file to the owner of the folder, orchownit. - Port: the compose file publishes it on 127.0.0.1. Put a reverse proxy or a tunnel in front to reach it from outside.
- Agents: run the MCP server next to it,
npx -y datanotes-mcp serve --engine http://127.0.0.1:27150(see Connect agents).