Skip to main content

Vikunja Kanban

@sntxrr/vikunja-kanbanv2026.09.19.2· 1d agoMODELS
01README

Vikunja kanban orchestrator — creates tasks in a Vikunja project directly via the Vikunja REST API and records each as a swamp data resource with its ID, title, labels, and status. Built as a homelab-native replacement for @webframp/hermes-kanban-orchestrator: no hermes binary, no shell-out — just an authenticated HTTP client talking to a self-hosted Vikunja instance.

New tasks are placed into a named kanban bucket (default "Backlog") of the target project — the kanban view is discovered automatically — so automation-created tasks land in a backlog column rather than the view's default working column. The bucket is resolved before the task is created, so an unknown bucket name fails with nothing created. Any project can be targeted per call via a projectId argument.

Methods

  • new_task — Create a task in a Vikunja project (default or per-call projectId), placing it in a named bucket (bucketName) and optionally attaching an existing label by name (e.g. Urgent, High, Medium).
  • list_recent — List the most recently created tasks in a project.
  • audit — Read-only Definition-of-Ready audit of the whole board: empty/short descriptions, missing labels or label groups, unset priority, missing verdict/acceptance/source-link markers, stale cards per bucket role, WIP over the limit, buckets out of order.
  • reorder — Sort every non-done bucket by priority then age. Dry run by default; apply moves one card at a time and re-reads until the board converges.
  • due_report — Read-only: split the board's dated, not-done cards into overdue / due today / upcoming (lookaheadDays) with a link per card and a ready-to-send Markdown message, so a scheduled workflow can nudge on a card's due date.
  • set_due_date — Set or clear one card's due date via a full-task read-modify-write, refusing done cards and asserting on read-back that the date took and the bucket did not change.
02Models1
@sntxrr/vikunja-kanbanv2026.09.19.2extensions/models/vikunja_kanban.ts

Global Arguments

ArgumentTypeDescription
baseUrlstringBase URL of the Vikunja instance, e.g. https://vikunja.example.com
webBaseUrl?stringBase URL the web UI is reached at, used only to build task links in
apiTokenstringVikunja personal API token (Bearer). Supply via a swamp vault
projectIdnumberDefault Vikunja project id tasks are created in and listed from (e.g.
viewId?numberOptional explicit kanban view id for the default projectId. Normally
defaultBucketNamestringBucket title (case-insensitive) that new_task places tasks into by
bucketRolesobjectWhich bucket title (case-insensitive) plays which role on the board.
policyobjectDefinition-of-Ready thresholds used by audit and the sort order used
timeoutMsnumberPer-request fetch timeout in milliseconds.
maxRetriesnumberHow many times to retry a request after an HTTP 429 rate-limit response.
userAgentstringUser-Agent header sent on all outbound requests.
fn audit()
Read-only Definition-of-Ready audit of a project's kanban board:
fn reorder(apply: boolean, buckets?: array, maxIterations: number)
Sort each non-done bucket by priority (desc) then age. Dry run by
ArgumentTypeDescription
applybooleanfalse (default) only reports the moves that would be made. true
buckets?arrayBucket titles (case-insensitive) to reorder. Default: every bucket
maxIterationsnumberUpper bound on single-card moves before reorder gives up.
fn due_report(lookaheadDays: number, now?: string)
Read-only: list the not-done cards on a project's board that are
ArgumentTypeDescription
lookaheadDaysnumberCards due within this many days after today are listed as upcoming.
now?stringISO 8601 instant to evaluate against instead of the clock (for tests
fn set_due_date(taskId: number, dueDate: string)
Set or clear one card's due date — the day to look at it again.
ArgumentTypeDescription
taskIdnumberVikunja task id.
dueDatestringISO 8601 instant to set as the due date (the day to look at the card
fn new_task(title: string, description?: string, dueDate?: string, priority?: number, bucketName?: string, skipIfTitleExists: boolean)
Create a task in a Vikunja project (the configured default, or a
ArgumentTypeDescription
titlestringTask title.
description?stringOptional task description/body.
dueDate?stringOptional ISO 8601 due date, e.g. 2026-09-20T00:00:00Z.
priority?numberOptional Vikunja numeric priority override (0=unset .. 5=DO NOW).
bucketName?stringKanban bucket title (case-insensitive) to place the task into,
skipIfTitleExistsbooleanIf true (default), checks for a non-done task with the exact same
fn list_recent(limit: number, includeDone: boolean)
List the most recently created tasks in a Vikunja project (the
ArgumentTypeDescription
limitnumberMax results to return.
includeDonebooleanInclude tasks already marked done.

Resources

vikunjaTask(infinite)— A Vikunja task with id, title, labels, priority, bucket, and status.
summary(infinite)— Per-listing summary: scope, endpoint, count, and item ids.
boardAudit(infinite)— One audit run of a kanban board: per-card and per-bucket
reorderPlan(infinite)— One reorder run: the moves planned (dry run) or performed
dueReport(infinite)— One due-date pass over a board: overdue, due-today and upcoming
03Previous Versions5
2026.09.19.1

Modified 1 models

2026.09.15.1

Modified 1 models

2026.09.14.1
2026.09.13.2
2026.09.13.1
04Stats
A
100 / 100
Downloads
3
Archive size
32.8 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License declared1/1earned
  • Verified public repository2/2earned
05Platforms
06Labels