Commands
kasl provides a comprehensive set of commands for work activity tracking, task management, and reporting.
Command Overview
Section titled “Command Overview”Core Commands
Section titled “Core Commands”setup- Set up application configuration, module by moduleconfig- Read and change one setting at a time, checked against the config’s JSON Schemawatch- Start activity monitoringtask- Manage tasks and work itemsreport- Generate and submit reportssum- View monthly summariesend- Close today’s workday by hand
Data Management
Section titled “Data Management”Incoming work
Section titled “Incoming work”inbox- Issues assigned to you, polled in the background from Jira and from plugin sources
Organization
Section titled “Organization”System Integration
Section titled “System Integration”server- Connect to a team kasl-server, send your days to it, tell it whether you are working right now if you choose to, and read what it stores about youautostart- Configure automatic startupself-update- Update application to latest versioncompletions- Print a shell completion scriptplugin- List, set up and run plugins: programs namedkasl-plugin-*that hear kasl’s events and fill the inbox
Coding assistants
Section titled “Coding assistants”mcp- Serve the day, the week, tasks and the inbox to a coding assistant over MCP, read-only
Quick Reference
Section titled “Quick Reference”Daily Workflow
Section titled “Daily Workflow”# Start monitoring (if not already running)kasl watch
# Create today's taskskasl task add --name "Code review" --completeness 0kasl task add --name "Team meeting" --completeness 0
# Update task progresskasl task edit 1
# View today's reportkasl report
# Submit report (if configured)kasl report --sendTask Management
Section titled “Task Management”# Create taskskasl task add --name "Task name" --comment "Description" --completeness 0
# List taskskasl task listkasl task list --all
# Edit taskskasl task edit 1kasl task edit
# Remove taskskasl task remove 1 2 3kasl task remove --todayRecording Missed Absences
Section titled “Recording Missed Absences”# Record an hour-long lunch the monitor missedkasl pauses add --start 13:00 --minutes 60 --reason "lunch"
# Record a short absence that must survive the duration filterkasl pauses add --start 16:20 --minutes 10 --keep
# Review the daykasl pauses listData Export
Section titled “Data Export”# Export today's datakasl export --format csv
# Export all datakasl export all --format json
# Export to specific filekasl export --output my_report.csvTag Management
Section titled “Tag Management”# Create tagskasl tag add "urgent" --color "red"kasl tag add "backend" --color "blue"
# List tagskasl tag list
# Assign tags to taskskasl task add --name "Fix bug" --tags "urgent,backend"
# Filter by tagskasl task list --tag "urgent"Templates
Section titled “Templates”# Create templatekasl template add --name "daily-standup"
# Use templatekasl task add --from-templatekasl task add --template "daily-standup"Command Categories
Section titled “Command Categories”Activity Monitoring
Section titled “Activity Monitoring”Commands for tracking work sessions and activity:
watch- Core monitoring functionalitypauses- View pauses and record ones the monitor missed
Task Management
Section titled “Task Management”Commands for organizing and tracking work items:
task- Complete task lifecycle managementtag- Task categorization and organizationtemplate- Reusable task templates
Reporting & Analytics
Section titled “Reporting & Analytics”Commands for generating insights and reports:
report- Daily work reportssum- Monthly summaries and statisticsexport- Data export for external analysis
System Management
Section titled “System Management”Commands for application configuration and maintenance:
setup- Initial setup and configurationconfig- One setting at a time: show, get, set, unset, checkserver- Connection to a team server, the queue of days owed to it, the live pulse, and its privacy manifestautostart- System integrationself-update- Application updates
Output for scripts and logs
Section titled “Output for scripts and logs”--json, on every command that prints data (report,sum,pauses list,task list/show,tag,template,inbox list/show/rules,server status/queue/pulse/manifest,autostart status,config show/get/check): one JSON document on stdout, everything else on stderr.--plain, on every command: the same output without colour, emoji or blank padding, and tables as tab-separated lines that are never cut to the terminal’s width - for logs andgrep.NO_COLORis honoured everywhere kasl paints.
The conventions and the full list are in kasl in scripts and CI.
Getting Help
Section titled “Getting Help”Omitting an identifier
Section titled “Omitting an identifier”Commands that act on one thing - an inbox issue, a pause, a tag, a task - take its identifier as an argument. Leave the argument out on a terminal and kasl lists what is there and lets you choose, showing summaries and durations rather than bare keys and ids.
This is a convenience for interactive use only. With no terminal attached - under the watch daemon, in CI, behind a pipe - the same command fails and names the argument it wanted, so an unattended run reports the problem instead of hanging on a prompt nobody can answer.
Command Help
Section titled “Command Help”Get help for any command:
kasl --helpkasl <command> --helpExamples
Section titled “Examples”View command examples:
# Show all available commandskasl --help
# Show specific command helpkasl task --helpkasl task add --helpkasl report --helpInteractive Mode
Section titled “Interactive Mode”Some commands support interactive mode:
# Interactive task creationkasl task
# Interactive template selectionkasl task add --from-template
# Interactive task editingkasl task editOptions you will meet everywhere
Section titled “Options you will meet everywhere”--helpon any command or subcommand prints its own help;kasl --versionprints the version.--date <YYYY-MM-DD|today>selects the day forreport,exportandpauses.-y/--yesskips the confirmation on destructive commands, which is what makes them usable from a script.- Commands that would otherwise prompt refuse with an explanatory error when there is no terminal, rather than waiting for an answer nobody can give.
Debug logging is a environment variable, not a flag:
KASL_DEBUG=1 kasl watch --foregroundRUST_LOG=kasl=debug kasl task findRelated pages
Section titled “Related pages”- Getting Started - installing kasl and the first run
- Configuration - every setting in one place
- API Integrations - Jira, report submission and the GitLab plugin