Skip to main content

pypi package version pypi downloads pipeline status coverage report

vja

A command line interface for Vikunja, the open-source todo app to organize your life.

vja lets you add, view and edit your Vikunja tasks and projects directly from the terminal. The goal is a fast, command line based task workflow, similar in spirit to taskwarrior. It also ships an MCP server so AI agents can manage your tasks.

vja add "Buy milk" --due=tomorrow --priority=3   # add a task
vja ls                                           # list active tasks, sorted by urgency
vja check 1                                       # mark task 1 as done

Highlights:

  • Add, list, edit, defer, clone and delete tasks, with natural-language dates and reminders
  • Powerful filtering and sorting, plus an urgency score you can tune
  • Manage projects, labels and kanban buckets
  • Custom output formats for scripting
  • Optional MCP server to drive vja from AI agents

More user documentation is in Features.md.

❗ Important change in vja 6.0.0 — a Vikunja server with version >= 2.5.0 is required, and api_url must point to /v2, e.g. api_url=https://my.domain/api/v2.

Table of contents

Installation

(More on pipx here.)

pipx install vja

Upgrade an existing version:

pipx upgrade vja

Install with pip

Not recommended as it might break system dependencies.

python -m pip install --user vja
vja --help

Configuration

Before using vja you must provide a configuration. vja looks for its configuration at the following paths (in order):

  1. $VJA_CONFIGDIR/config.rc
  2. $XDG_CONFIG_HOME/vja/config.rc
  3. $HOME/.config/vja/config.rc
  4. $HOME/.vjacli/vja.rc (deprecated - for backward compatibility only)

A full example can be found in config.rc.

  • Create a configuration file at any valid path (see above) with the following minimal contents:
    [application]
    frontend_url=https://try.vikunja.io/
    api_url=https://try.vikunja.io/api/v2
    
    (If you cloned from git, you may copy the folder .config/vja to your $HOME/.config directory instead.)
  • Adjust to your needs. frontend_url and api_url must point to your own Vikunja server. In particular, api_url must be reachable from your client. You can verify this, for example, with curl https://mydomain.com/api/v2/info.

You may change the location of the configuration directory with an environment variable like VJA_CONFIGDIR=/not/my/home.

Description of configuration

Required options

Section Option Description
[application] api_url The Vikunja instance vja should connect to
[application] frontend_url Base URL used to open Vikunja in the browser

Optional options

Section Option Description
[output] (custom formats) Named python format strings for --custom-format. See Output format.
[urgency_coefficients] due_date_weight Weight of dueness in the urgency score. Default: 1.0
[urgency_coefficients] priority_weight Weight of priority in the urgency score. Default: 1.0
[urgency_coefficients] favorite_weight Weight of is_favorite in the urgency score. Default: 1.0
[urgency_coefficients] project_weight Weight of keyword occurrence in the project title (see project_keywords). Default: 1.0
[urgency_coefficients] label_weight Weight of keyword occurrence in label titles (see label_keywords). Default: 1.0
[urgency_keywords] project_keywords Tasks in projects whose title contains one of these keywords are more urgent. Default: None
[urgency_keywords] label_keywords Tasks labeled with one of these keywords are more urgent. Default: None

Usage

Once installed and configured, run:

vja --help
vja ls

On first usage (and whenever the access token expires) you will be prompted for your account. See Login in Features.md for details and the API-token alternative, and Features.md for the full command reference.

Shell completion

Shell tab-completion can be enabled by generating a shell completion script (not specific to vja):

Bash

mkdir -p ~/.config/bash/completions
_VJA_COMPLETE=bash_source vja > ~/.config/bash/completions/vja

Then add to your ~/.bashrc:

source ~/.config/bash/completions/vja

Note: Instead of sourcing the completion script in .bashrc you can just move it to a folder which is supported by bash_completion (e.g. ~/.local/share/bash-completion/completions/).

Zsh

mkdir -p ~/.config/zsh/completions
_VJA_COMPLETE=zsh_source vja > ~/.config/zsh/completions/vja.zsh

Then add to your ~/.zshrc:

source ~/.config/zsh/completions/vja.zsh

Note: The script location is just a suggestion; you can put it wherever you like. If you use ohmyzsh, place completion scripts under ~/.oh-my-zsh/custom/completions.

Fish

_VJA_COMPLETE=fish_source vja > ~/.config/fish/completions/vja.fish

Note: Fish completions in the directory above will be automatically loaded for new sessions.

MCP server

Besides the CLI, vja can act as an MCP server so AI agents (Claude, Kiro, Cursor, ...) can manage your Vikunja tasks. Install the optional dependency and register the vja-mcp command with your client:

pipx install "vja[mcp]"   # or: pip install "vja[mcp]"
{
  "mcpServers": {
    "vja": {
      "command": "vja-mcp"
    }
  }
}

The server uses the same configuration as the CLI. See Features.md for the available tools and AGENTS.md for agent-specific guidance.

Development

Prepare python virtual environment

First create a local environment:

python -m venv ./venv
source venv/bin/activate

(That may be source venv/Scripts/activate on some windows machines.)

Local build

Local development install

python -m pip install -r requirements_dev.txt
python -m pip install -e .

Run integration test

Start docker container for vikunja/api:latest and execute pytest against that server instance:

docker compose -f tests/docker-compose.yml up -d
VJA_CONFIGDIR=tests/.vjatest pytest
docker compose -f tests/docker-compose.yml down

Metadata

Release files for vja 6.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vja 6.1.0
File Size Uploaded
vja-6.1.0.tar.gz 50.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vja 6.1.0
File Interpreter ABI Platform
vja-6.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 99.2 kB

Release files / vja-6.1.0.tar.gz

Download URL vja-6.1.0.tar.gz
Size 50.2 kB
Tags Source
SHA-256 checksum
How to use checksums
fe53ac58f1e00420dcd0c7ce3c0caa0f127e83a8e0f5a9682cbb33ae04d7ad94
BLAKE2b-256 checksum
How to use checksums
74289f604b0752506da7e68d459d0936e0e2c0f6b46e1dd83149ebf5ff0f4fcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release files / vja-6.1.0-py3-none-any.whl

Download URL vja-6.1.0-py3-none-any.whl
Size 48.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd0654bba4427c4d4da4dc433ed851636915c95037b98c5eea3d8ab367179d44
BLAKE2b-256 checksum
How to use checksums
e8987146d4fefcb9fd3783db6cf9342f73c13e1fcc687e806b56b8a91c600ad8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release history Release notifications | RSS feed

6.1.1

2 release files

This release

6.1.0 This release

2 release files

6.0.4

2 release files

6.0.3

2 release files

6.0.2

2 release files

6.0.1

2 release files

6.0.0

2 release files

5.4.2

2 release files

5.4.1

2 release files

5.4.0

2 release files

5.3.0

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.10.1

2 release files

4.9.0

2 release files

4.8.0

2 release files

4.7.3

2 release files

4.7.2

2 release files

4.7.1

2 release files

4.7.0

2 release files

4.6.0

2 release files

4.5.2

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.4.0

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

1 release file

1.0.2

1 release file

1.0.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

2 release files

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

2 release files

0.1.5

1 release file

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page