Vikunja
vikunja.ioWeb, Android LinuxVikunja is an open-source to-do application. It is suitable for a wide variety of projects, supporting List, Gantt, Table and Kanban views to visualize all tasks in different contexts. For collaboration, it has sharing support via private teams or public links. It can be self-hosted or used as a managed service for a small fee.
- Homepage:vikunja.io
- GitHub:github.com/go-vikunja/vikunja
- Web info:web-check.xyz/check/vikunja.io
Vikunja Source Code
Author
Description
The task manager you actually own.
Homepage
https://vikunja.ioRepository
- LicenseAGPL-3.0
- Created28 Nov 18
- Primary languageGo
- Size109,274 KB
- Stars5,255
- Forks661
- Watchers5,255
Top Contributors
@kolaente (7484)
@renovate[bot] (1339)
@dpschen (778)
@vikunja-bot (231)
@tink-bot (122)
@Elscrux (35)
@Copilot (28)
@dependabot[bot] (28)
@maggch97 (17)
@WofWca (16)
@claude (14)
@JohnStarich (13)
@mdrkrg (13)
@xela-zone (6)
@adrinux (6)
@profi248 (5)
@Tokra110 (4)
@davidangel (4)
@shilch (4)
@jtojnar (4)
@freaktechnik (4)
@andreymal (4)
@kigiela (4)
@TowyTowy (3)
@surfingbytes (3)
@Viehlieb (3)
@rhclayto (3)
@NeoHuncho (3)
@mithileshgupta12 (3)
@LucaBernstein (3)
@eljef (3)
@13rac1 (3)
@nithinvarma411 (2)
@zapp88 (2)
@kergma-lw (2)
@kallegrens (2)
@gabeklavans (2)
@bradmartin333 (2)
@azymondrian (2)
@vlasov-y (2)
@CrazyWolf13 (2)
@MGChecker (2)
@Quiwy (2)
@mnr73 (2)
@furai (2)
@KaibutsuX (2)
@javabrett (2)
@TheEdgeOfRage (1)
@ThiloSavary (1)
@deadLocks21 (1)
@Uenluom (1)
@v-yarotsky (1)
@vovochka404 (1)
@XiangCany (1)
@TheZoker (1)
@blacksmith-sh[bot] (1)
@confor (1)
@cr1xu5 (1)
@devadattas (1)
@treysu (1)
@reggi (1)
@subnut (1)
@Saxos-Simone (1)
@IAMSamuelRodda (1)
@remilapeyre (1)
@RyanHecht (1)
@RoboMagus (1)
@szuro (1)
@rhysmcneill (1)
@Rein-R3 (1)
@Raymi306 (1)
@probecat (1)
@themylogin (1)
@the-darkvoid (1)
@taiwithers (1)
@stephen-hill (1)
@SteffeyDev (1)
@simonsmd (1)
@BenLocal (1)
@rudd6617 (1)
@rriski (1)
@primeapple (1)
@naleo (1)
@maximilize (1)
@leggettc18 (1)
@kompetenzbolzen (1)
@carl-unique (1)
@jontyms (1)
@jonastheis (1)
@jayden-chan (1)
@j-hugo (1)
@graves501 (1)
@erri120 (1)
@emilsteixner (1)
@edelgrace (1)
@earnestma (1)
@IDDQD69 (1)
@hcuk94 (1)
@HarryEMartland (1)
@hangya (1)
Recent Commits
Tink(02 Sept 26)
fix(editor): don't strike through nested checklist items of a checked parent (#3715) Unchecked checklist item nested under checked parent rendered greyed out and struck through, so it looked checked. Cause: `li[data-checked='true']` styled whole list item, including nested task list inside item's content div. `text-decoration` propagates to descendants and cannot be reset by child. Rule now scoped to item's own content. Fixes #3712 ## How to verify 1. Create a task and open it. 2. Edit the description, add a checklist item "Parent item", then press Enter and Tab to nest a second item "Child item" underneath it. 3. Check the checkbox of "Parent item" only, and save. 4. **Expected:** "Parent item" is greyed out and struck through. "Child item" keeps normal text colour with no strikethrough, and its checkbox stays unchecked. **Before this PR:** "Child item" was greyed out and struck through too, making it look checked. --------- Co-authored-by: kolaente <[email protected]> Co-authored-by: kolaente <[email protected]>
Tea Reggi(02 Sept 26)
fix(db): redact PostgreSQL credentials from connection errors (#3707)
renovate[bot](02 Sept 26)
fix(deps): update module github.com/go-sql-driver/mysql to v1.10.1
renovate[bot](02 Sept 26)
chore(deps): update dependency happy-dom to v20.12.0
renovate[bot](02 Sept 26)
chore(deps): update dependency go to v1.27.1
renovate[bot](02 Sept 26)
fix(deps): update module github.com/coreos/go-oidc/v3 to v3.21.0
Frederick [Bot](02 Sept 26)
chore(i18n): update translations via Crowdin
renovate[bot](01 Sept 26)
chore(deps): update dependency serialize-javascript to v7.1.1
renovate[bot](01 Sept 26)
chore(deps): update pnpm to v11.25.0
renovate[bot](01 Sept 26)
chore(deps): update dependency ip-address to v10.7.0
renovate[bot](01 Sept 26)
fix(deps): update module github.com/aws/aws-sdk-go-v2/config to v1.33.2
renovate[bot](01 Sept 26)
chore(deps): update dependency happy-dom to v20.11.15
renovate[bot](01 Sept 26)
fix(deps): update aws-sdk-go-v2 monorepo
kolaente(31 Aug 26)
refactor(frontend): consolidate task identifier display
kolaente(31 Aug 26)
chore(ai): make vikunja skills generally available
kolaente(31 Aug 26)
docs: trim derivable content from AGENTS.md Cut the sections a session can reconstruct by reading the repo: the project overview and directory layout, the architecture tour, the mage target and pnpm script enumerations, the Go tooling tips, the step lists that restated the Skills section, the ESLint rule list already enforced by eslint.config.js, and a duplicated permissions block. Replaces the worktree and e2e walkthroughs with pointers to the new skills, keeping their guarding prohibitions ("never run pnpm test:e2e directly", "always save test output to a file") in the root file so they do not depend on a skill being loaded. 17500 -> 8466 chars, roughly 2.2k fewer tokens loaded every session.
kolaente(31 Aug 26)
docs: add prepare-worktree and run-e2e-tests skills Move the worktree setup and e2e runner walkthroughs out of the always-loaded AGENTS.md and into skills that load on invocation.
renovate[bot](31 Aug 26)
fix(deps): update dependency @sentry/vue to v10.72.0
renovate[bot](31 Aug 26)
chore(deps): update crowdin/github-action action to v3.0.1
kolaente(31 Aug 26)
refactor(frontend): migrate labels to v2 client
kolaente(31 Aug 26)
feat(frontend): configure v2 client runtime
kolaente(31 Aug 26)
ci: verify generated frontend client is current
kolaente(31 Aug 26)
feat(api): generate canonical v2 frontend client
kolaente(31 Aug 26)
chore: v2.6.0 release preparations
kolaente(31 Aug 26)
fix(migration): reload conflicting claims after rollback
kolaente(31 Aug 26)
test(migration): handle database id sequences
kolaente(31 Aug 26)
test(e2e): make team owner a fixture member
kolaente(30 Aug 26)
chore: regenerate yaegi symbols
kolaente(30 Aug 26)
fix(migration): bound vikunja file imports Preflight over the declared uncompressed sizes (overflow-safe), a file count cap and a per-user storage quota bound the import before anything is read; the actual decompressed bytes are still counted against the same budget while reading. Attachments and backgrounds now stream through a lazy provider: one zip entry is decompressed into a private temp file at a time. A failed import deletes the file blobs it wrote, which were orphaned for every migrator before.
kolaente(30 Aug 26)
fix(migration): bound planka import resources Per-job budget: 128 MiB aggregate response bytes (counted while decoding, not from Content-Length), 64 MiB retained attachments, 50,000 decoded entities and 2,000 outbound request attempts counted at the transport level so retries cannot multiply work. The per-response cap drops to 4 MiB. Budget exhaustion aborts the import with a typed error; ordinary 404/timeout attachment failures keep the log-and-skip.
Vikunja Security
Security Advisories (65)
- highPatched
GHSA-xxc3-xpmc-vmvrUnbounded nested task-filter recursion permits API process termination
- highPatched
GHSA-pqf9-h8g4-8gmhUnbounded CSV row cardinality permits API process termination
- highPatched
GHSA-wq92-8x3r-fm38Planka migration retains an unbounded aggregate of attacker-served attachments and can OOM the API
- mediumPatched
GHSA-4vh2-39rq-rq8jUnbounded image decode on avatar and project-background uploads enables decode/resize amplification
- mediumPatched
GHSA-6rvj-qwjf-3m4qEvery /api/v2 pre-auth endpoint is unthrottled on a stock install while its /api/v1 twin is rate limited
- mediumPatched
GHSA-m469-88xx-8rx2CalDAV and feeds BasicAuth endpoints have no rate limit, bypassing the anti-brute-force floor on account passwords
- lowPatched
GHSA-8wvg-r2j4-3737Assignee email addresses disclosed to read-only project members via the task assignees endpoint
- mediumPatched
GHSA-jp29-jrxc-92vfFavorited tasks remain readable after project access is revoked, including content written post-revocation
- mediumPatched
GHSA-g38j-7v97-x298CalDAV relation creation bypasses TaskRelation.CanCreate, allowing an unauthorized write into any task by known UID
- lowPatched
GHSA-w2ch-4xgr-22wwTask relation deletion does not check read access to the other task, allowing cross-project relation removal
- mediumPatched
GHSA-3hc7-r24j-rpwcCross-project task disclosure through subtask expansion
- highPatched
GHSA-w7jp-mf2v-8342Denial of service via decompression bomb in the data import
- mediumPatched
GHSA-39p5-2wrr-xh29Any user can enumerate every team and its members by attaching arbitrary teams to a throwaway project
- mediumPatched
GHSA-vfxw-3x8p-2vjrLink-share token can enumerate users through the v2 API
- mediumPatched
GHSA-88f6-4rjv-x774TOTP secret is readable after enrollment, no step-up auth
- mediumPatched
GHSA-9rg3-v78m-26q8API token scopes bypassed via task expand parameter (comments, reactions, time entry counts)
- lowPatched
GHSA-w39f-h553-h2mxCross-tenant task-position rows can be injected into arbitrary project views via the unvalidated project_view_id in the task position endpoint (v1 and v2)
- highPatched
GHSA-qfwc-vx6f-3g6gRead-only project members can obtain any link share's access hash via the single-share read endpoint (v1 and v2) and escalate to the share's permission level
- highPatchedCVSS 7.5
CVE-2026-76216Link-share principal-type confusion enables cross-account team removal, bot takeover, and roster disclosure
- highPatchedCVSS 8.1
GHSA-vvcv-vpph-h844Link-share principal ID collision allows cross-account API token issuance and management
- highPatched
GHSA-rj9j-8772-4h6cLink-share token reads any tenant's kanban buckets and enumerates usernames/IDs instance-wide (BOLA)
- highPatched
CVE-2026-62367OIDC email-fallback account linking ignores email_verified, enabling local-account takeover
- highPatchedCVSS 8.1
CVE-2026-62376Plaintext storage of password-reset/email-confirm tokens in database enables account takeover on DB read access
- mediumPatched
CVE-2026-54766Project duplication bypasses write-permission check on the target parent project
- mediumPatchedCVSS 5
CVE-2026-55067Authenticated cross-tenant kanban-bucket relocation via `project_view_id` mass-assignment
- highPatchedCVSS 8.1
CVE-2026-57458Scoped API token can mint unrestricted OAuth session credentials
- highPatchedCVSS 7.1
CVE-2026-55066Cross-tenant IDOR in kanban move-task endpoint via unauthorized body task_id
- highPatchedCVSS 8.1
CVE-2026-55065Improper Authorization and Authorization Bypass Through User-Controlled Key in code.vikunja.io/api
- mediumPatchedCVSS 4.3
CVE-2026-55064Incomplete fix for CVE-2026-35595: Write-only user can detach shared project from parent hierarchy via parent_project_id=0
- mediumPatchedCVSS 4.3
CVE-2026-40103Scoped API tokens with projects.background permission can delete project backgrounds
- highPatchedCVSS 7.4
CVE-2026-34727TOTP Two-Factor Authentication Bypass via OIDC Login Path
- mediumPatchedCVSS 4.1
CVE-2026-35601iCalendar Property Injection via CRLF in CalDAV Task Output
- mediumPatchedCVSS 5.4
CVE-2026-35600HTML Injection via Task Titles in Overdue Email Notifications
- mediumPatchedCVSS 6.5
CVE-2026-35599Algorithmic Complexity DoS in Repeating Task Handler
- mediumPatchedCVSS 5.4
CVE-2026-35602File Size Limit Bypass via Vikunja Import
- mediumPatchedCVSS 4.3
CVE-2026-35598Missing Authorization on CalDAV Task Read
- mediumPatchedCVSS 5.9
CVE-2026-35597TOTP Brute-Force Due to Non-Functional Account Lockout
- mediumPatchedCVSS 4.3
CVE-2026-35596Broken Access Control on Label Read via SQL Operator Precedence Bug
- highPatchedCVSS 8.3
CVE-2026-35595Privilege Escalation via Project Reparenting
- mediumPatchedCVSS 6.5
CVE-2026-35594Link Share JWT tokens remain valid for 72 hours after share deletion or permission downgrade
- mediumPatched
CVE-2026-33700Link Share Delete IDOR — Missing Project Ownership Check Allows Cross-Project Link Share Deletion
- highPatched
CVE-2026-33668Disabled/Locked User Accounts Can Still Authenticate via API Tokens, CalDAV, and OpenID Connect
- mediumPatchedCVSS 6.4
CVE-2026-33679SSRF via OpenID Connect Avatar Download Bypasses Webhook SSRF Protections
- mediumPatchedCVSS 6.4
CVE-2026-33675SSRF via Todoist/Trello Migration File Attachment URLs Allows Reading Internal Network Resources
- mediumPatchedCVSS 6.5
CVE-2026-33676Cross-Project Information Disclosure via Task Relations — Missing Authorization Check on Related Task Read
- mediumPatchedCVSS 6.5
CVE-2026-33677Webhook BasicAuth Credentials Exposed to Read-Only Project Collaborators via API
- highPatchedCVSS 8.1
CVE-2026-33678IDOR in Task Attachment ReadOne Allows Cross-Project File Access and Deletion
- highPatchedCVSS 7.5
CVE-2026-33680Link Share Hash Disclosure via ReadAll Endpoint Enables Permission Escalation
- criticalPatchedCVSS 9.1
GHSA-2pv8-4c52-mf8jUnauthenticated Instance-Wide Data Breach via Link Share Hash Disclosure Chained with Cross-Project Attachment IDOR
- highPatched
CVE-2026-33334Any frontend XSS escalates to Remote Code Execution due to nodeIntegration in Vikunja Desktop
- highPatched
CVE-2026-33335Arbitrary local application invocation via unvalidated shell.openExternal in Vikunja Desktop
- criticalPatched
CVE-2026-33336Remote Code Execution via same-window navigation in Vikunja Desktop
- mediumPatched
CVE-2026-33313IDOR in Task Comments Allows Reading Arbitrary Comments
- mediumPatched
CVE-2026-33312Read-only users can delete project background images via broken object-level authorization
- mediumPatched
CVE-2026-333152FA Bypass via Caldav Basic Auth
- highPatchedCVSS 8.1
CVE-2026-33316Improper Access Control Enables Bypass of Administrator-Imposed Account Disablement
- mediumPatchedCVSS 5.7
CVE-2026-33473TOTP Reuse During Validity Window
- highPatched
CVE-2026-33474DoS via Image Preview Generation
- mediumPatchedCVSS 5.3
CVE-2026-29794Rate-Limit Bypass for Unauthenticated Users via Spoofed Headers
- criticalPatchedCVSS 9.8
CVE-2026-28268Account Takeover via Password Reset Token Reuse
- highPatchedCVSS 7.2
CVE-2026-27819Path Traversal in CLI Restore
- criticalPatchedCVSS 9.1
CVE-2026-27575Weak Password Policy Combined with Persistent Sessions After Password Change
- highPatchedCVSS 7.3
CVE-2026-27616Stored Cross-Site Scripting (XSS) via Unsanitized SVG Attachment Upload Leading to Token Exposure
- mediumPatchedCVSS 6.1
CVE-2026-27116Reflected HTML Injection via filter Parameter in Projects Module
- highPatched
CVE-2026-25935XSS Via Task Preview
Vikunja Website
Website
Vikunja: The task manager you actually own
Vikunja is open-source task management you can self-host. Lists, Kanban, Gantt, and more — on your server or ours. Made and hosted in the EU.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address172.67.172.167
- LocationSan Francisco,California,United States of America,NA
- ISPCloudFlare Inc.
- ASNAS13335
Associated Countries
US
DE
Safety Score
Website marked as safe
100%
Blacklist Check
vikunja.io was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
Vikunja Docker
Container Info
Vikunja
The to-do app to organize your life.| Before use create custom template and Edit: VIKUNJA_SERVICE_FRONTENDURL , VIKUNJA_API_URL & VIKUNJA_SERVICE_JWTSECRET
Run Command
docker run -d \
-e PUID=${PUID} \
-e PGID=${PGID} \
-e PORT=${PORT} \
Compose File
version: 3.8
services:
vikunja:
environment:
PUID: 1000
PGID: 1000
PORT: Environment Variables
- Var NameDefault
- PUID1000
- PGID1000
- PORTnull
Vikunja Reviews
More Task Management
A Getting Things Done + Pomodoro productivity system for desktop and mobile. Local-first, no account required, can sync via WebDAV/Dropbox/local file or self-hosted deployment. With a CLI, REST API and MCP for scripting, has optional BYOK AI.
Privacy-respecting, open-source task manager and time tracker. All data is stored locally on your device - no account required, no cloud dependency, and zero telemetry. Supports Jira, GitLab, GitHub, Gitea, OpenProject and CalDAV integration. Features include time tracking, Pomodoro timer, break reminders, and idle detection.
About the Data: Vikunja
Change History
- Moved from Productivity › Cloud Productivity Suites #805
Edit Vikunja Data
You can edit Vikunja's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access Vikunja's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/vikunjaThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share Vikunja
Help your friends compare Task Management, and pick privacy-respecting software and services.
Share Vikunja and Awesome Privacy with your network!