sum
The sum command shows the current month’s working hours: one row per recorded day, plus totals and an average.
kasl sum [OPTIONS]--json: Print the month as one JSON document instead of the table - see JSON output.
sum only shows the month. The month is sent with
kasl report --month; until 1.21 sum also took a
--send flag that did nothing, and it is gone so that one command sends a
month.
Examples
Section titled “Examples”# Display this month's summarykasl sum
# The month as JSON, for a scriptkasl sum --json
# Submit the monthly reportkasl report --monthSample Output
Section titled “Sample Output”$ kasl sumWorking hours for August, 2026
+------------+-------+--------------+| DATE | HOURS | PRODUCTIVITY |+------------+-------+--------------+| 2026-08-07 | 08:04 | 94.7% || 2026-08-08 | 07:37 | 96.1% || | | || TOTAL | 15:41 | || AVERAGE | 07:50 | |+------------+-------+--------------+
Monthly work productivity: 95.4%Each day’s hours are the TOTAL its report shows: the
intervals between long pauses, with the ones shorter than min_work_interval
left out. A day reads the same in the report and in the month.
JSON output
Section titled “JSON output”kasl sum --json prints the same month as one document (conventions:
kasl in scripts and CI):
{ "month": "2026-08", "days": [ { "date": "2026-08-07", "work_seconds": 29040, "productivity": 94.7, "rest_day": false }, { "date": "2026-08-08", "work_seconds": 27420, "productivity": 96.1, "rest_day": false } ], "total_seconds": 56460, "average_seconds": 28230, "productivity": 95.4}rest_day marks a company rest day the reporting API named, which the month
counts as a full eight-hour day without anyone having worked it. The closing
productivity is the average over recorded days; it is null while there are
none.