Command Line Interface

Planify CLI

Manage your tasks directly from the terminal. Perfect for scripting, voice assistants, and automation workflows.

Getting Started

The CLI is included with Planify. Use the following command depending on your installation:

Flatpak

flatpak run --command=io.github.alainm23.planify.cli io.github.alainm23.planify <command>

Tip: Create an alias for convenience:

alias planify-cli="flatpak run --command=io.github.alainm23.planify.cli io.github.alainm23.planify"

Built from source

io.github.alainm23.planify.cli <command>

Commands

add

Add a new task
planify-cli add --content "Buy groceries" --project "Personal" --priority 1 --due 2025-01-15
Option Short Description
--content -c Task content (required)
--description -d Task description
--project -p Project name (defaults to Inbox)
--project-id -i Project ID (preferred over name)
--section -s Section name
--priority -P 1 = high, 2 = medium, 3 = low, 4 = none
--due -D Due date (YYYY-MM-DD)
--labels -l Comma-separated label names
--parent-id -a Parent task ID (creates a subtask)
--pin Pin the task (true/false)

list-projects

List all projects
planify-cli list-projects

Returns a JSON array with all projects and their IDs.

list

List tasks from a project
planify-cli list --project "Personal"
Option Short Description
--project -p Project name (defaults to Inbox)
--project-id -i Project ID (preferred over name)

update

Update an existing task
planify-cli update --task-id "abc123" --content "Updated task" --complete true
Option Short Description
--task-id -t Task ID to update (required)
--content -c New task content
--description -d New description
--project -p Move to project by name
--priority -P 1 = high, 2 = medium, 3 = low, 4 = none
--due -D Due date (YYYY-MM-DD)
--labels -l Comma-separated label names
--complete Mark complete/incomplete (true/false)
--pin Pin/unpin the task (true/false)

backup

Export a JSON backup

Exports all tasks, projects, sections, labels and sources as a JSON backup. Perfect for automated backups via cron.

planify-cli backup --output ~/backup.json
Option Short Description
--output -o Output file path (defaults to stdout)

Examples

Add a high-priority task with labels

planify-cli add -c "Fix login bug" -p "Work" -P 1 -D 2025-04-10 -l "bug,urgent"

Add a subtask

planify-cli add -c "Write unit tests" -p "Work" --parent-id "abc123"

Complete a task

planify-cli update --task-id "abc123" --complete true

Move a task to another project

planify-cli update --task-id "abc123" --project "Personal"

Voice-to-task with a script

#!/bin/bash
# Record audio, transcribe with Whisper, add as task
TASK=$(whisper --model tiny record.wav | tail -1)
planify-cli add --content "$TASK"

Automated daily backup with cron

# Save to file
planify-cli backup --output ~/backup.json

# Pipe to another tool
planify-cli backup | jq '.items | length'

# Crontab: daily backup at 2am (Flatpak)
0 2 * * * flatpak run --command=io.github.alainm23.planify.cli io.github.alainm23.planify backup --output ~/backups/planify-$(date +\%Y\%m\%d).json

Output Format

All commands return JSON output, making it easy to pipe into other tools like jq.

planify-cli list-projects | jq '.[].name'