Synchronize Toggl Track time entries to Notion and Obsidian.
Notes Sync uses short-lived commands instead of a resident background service. On macOS, two independent LaunchAgents handle hourly synchronization and daily diary creation.
- Synchronize Toggl Track time entries to Notion and Obsidian.
- Create missing daily diary entries with a separate command.
- Run hourly synchronization at minute
0. - Configure the daily diary schedule in its plist template.
- Keep secrets, machine paths, logs, and personal data outside Git.
- Python 3.12+
- uv
- Toggl Track API token
- Notion integration token and database ID
- Obsidian vault
- macOS for scheduled execution
Run these commands from the repository root.
-
Install dependencies.
make install
Verify:
.venv/bin/python --versionreports Python 3.12 or newer. -
Create local configuration.
cp .env.example .env cp params/examples/default.json params/default.json
Fill in
.env. Both.envandparams/default.jsonare ignored by Git. -
Run one synchronization.
make run
Verify:
~/Library/Logs/notes-sync/notes_sync.logcontains a completed sync cycle. -
On macOS, install and restart both schedules.
make restart-schedules
This renders the portable plist templates with the current project path, deploys them to
~/Library/LaunchAgents, and reloads both schedules.
com.notes-sync.hourly: runs synchronization at the start of every hour.com.notes-sync.create-diary: creates the daily diary at its configuredHourandMinute.
Application logs are written to ~/Library/Logs/notes-sync/notes_sync.log; launchd output is written to hourly.log and create-diary.log in the same directory. Set WORKSPACE_RUNTIME_DIR to create an optional $WORKSPACE_RUNTIME_DIR/20_Logs/notes-sync/ viewing symlink. The application never depends on that link. macOS may coalesce a missed calendar-based run after the computer wakes.
make check
make auditmake check runs mypy and pytest. make audit checks installed dependencies
against known vulnerability advisories.
- Secrets and local paths:
.env - Runtime behavior:
params/default.json - Daily diary time:
deploy/macos/com.notes-sync.create-diary.plist - Hourly sync minute:
deploy/macos/com.notes-sync.hourly.plist
Never commit .env, params/default.json, logs, caches, or personal migration
data.
The example configuration and reference data are placeholders. Review them before connecting the project to your own Notion workspace or Obsidian vault.
No open-source license is currently granted. Public visibility does not grant permission to copy, modify, or redistribute this project.