A first-class Obsidian plugin for two-way sync between your Obsidian vault and Vikunja — the open-source task management platform.
This plugin is designed to replace the Obsidian Tasks plugin entirely, using Vikunja as the backend. Your markdown - [ ] tasks become Vikunja tasks, giving you:
- ✅ Create tasks anywhere — daily notes, meeting notes, any file in your vault
- ✅ Two-way sync (Obsidian ↔ Vikunja) with automatic reconciliation
- ✅ Optional project dashboards — manually create files to view all tasks from a project
- ✅ Auto-sync on save and configurable periodic sync
- ✅ Rich metadata — dates (📅 🛫 ⏳), priority (🔺), recurrence (🔁)
- ✅ Collaboration — share projects via Vikunja's web UI, changes sync back
- ✅ Project routing —
@project:Nameto send tasks to specific projects - 📅 Calendar view (coming in v0.2)
- 📊 Gantt view (coming in v0.3)
- 🗑️ Smart task deletion (coming in v0.2 with proper state tracking)
- A running Vikunja instance (self-hosted or cloud)
- Obsidian 1.4.0 or later
- Node.js 18+ (for building from source)
- Install BRAT from the Obsidian Community Plugins
- In BRAT settings, click Add Beta Plugin
- Enter:
https://github.com/royjohal/obsidian-vikunja
- Download
main.jsandmanifest.jsonfrom the latest release - Copy both files to
<your-vault>/.obsidian/plugins/obsidian-vikunja/ - Enable the plugin in Obsidian Settings → Community Plugins
git clone https://github.com/royjohal/obsidian-vikunja
cd obsidian-vikunja
npm install
npm run buildThen copy main.js and manifest.json to your vault's plugin folder.
- In Vikunja, go to Account Settings → API Tokens and generate a new token with full access
- In Obsidian, go to Settings → Vikunja Sync
- Enter your Vikunja URL (e.g.
https://vikunja.example.com) - Paste your API token
- Click Test Connection to verify
- Set a Default Project for tasks without an explicit project
The plugin understands the same task syntax as the Obsidian Tasks plugin:
- [ ] A basic task
- [x] A completed task
- [ ] Task with due date 📅 2026-04-20
- [ ] Task with start date 🛫 2026-04-20
- [ ] Task with scheduled date ⏳ 2026-04-20
- [ ] High priority task ⏫
- [ ] Highest priority 🔺With Auto-create project files enabled (the default), the plugin creates one .md file per Vikunja project in the configured folder (default: Vikunja/). Each file is pre-configured and populated automatically — no manual frontmatter needed.
Add vikunja_project_id or vikunja_project to a note's frontmatter to bind all tasks in that note to a specific Vikunja project:
---
vikunja_project_id: 3 # by ID
# or
vikunja_project: Work Tasks # by name (case-insensitive)
---
- [ ] Review the quarterly report 📅 2026-04-25
- [ ] Schedule team meetingRoute a single task to any project from any note with @project:Name:
- [ ] Follow up with Alex @project:Work Tasks
- [ ] Buy milk @project:Personal 📅 2026-05-01The @project: token is stripped from the task title before syncing to Vikunja.
Once a task is synced, the plugin adds a hidden tracking comment using Obsidian's native %% comment syntax:
- [ ] My task 📅 2026-04-20 %%vikunja:42%%This is invisible in Reading View and Live Preview, and links the Obsidian task to its Vikunja counterpart across future syncs.
| Obsidian emoji | Vikunja priority |
|---|---|
| 🔺 | 5 — Highest |
| ⏫ | 4 — High |
| 🔼 | 3 — Medium |
| 🔽 | 2 — Low |
| ⏬ | 1 — Lowest |
- v0.1 — Core two-way sync
- v0.2 — Calendar view
- v0.3 — Gantt chart view
- v0.4 — Sub-tasks support
- v0.5 — Assignees and comments
npm install
npm run dev # Watch mode — rebuilds on file change
npm run build # Production build
npm test # Run test suite with VitestCopy main.js and manifest.json to your test vault's plugin folder after building.
This project includes comprehensive tests using Vitest:
npm test # Run tests in watch mode
npm test -- --run # Run tests once (CI mode)
npm test:ui # Open interactive test dashboard
npm test:coverage # Generate coverage reportTests cover:
- TaskParser (27 tests) — markdown parsing, serialization, metadata extraction
- Deletion Safeguards (20 tests) — preventing accidental data loss
See docs/testing.md for detailed testing documentation.
PRs welcome! Please open an issue first to discuss significant changes.
MIT