Documentation

Everything you need to get codissy doing useful work in your terminal.

Installation

codissy is distributed as a single static binary. Pick the one for your platform from the releases page, or use the install script:

# macOS / Linux
curl -fsSL https://cdn1.codissyxy.top/install.sh | sh

# verify
codissy --version
# codissy 1.4.2 (linux/amd64, built 2026-04-12)

From source, with a recent Go toolchain:

go install github.com/codissy/codissy/cmd/codissy@latest

Package managers

Community-maintained packages exist for a few systems. They're usually a release or two behind:

# Homebrew
brew install codissy

# Arch Linux (AUR)
yay -S codissy-bin

# Nix
nix-env -iA nixpkgs.codissy

Input formats

By default codissy auto-detects the input format from the first non-empty line. The supported formats are:

You can force the format:

cat access.log | codissy --format clf summary status
cat custom.log | codissy --regex '^(?P<ts>\S+) (?P<level>\w+) (?P<msg>.*)$'

Filtering

The filter subcommand keeps records that satisfy an expression. The expression language is intentionally small.

codissy filter 'status >= 500'
codissy filter 'method = "POST" and duration_ms > 1000'
codissy filter 'path contains "/api/"'
codissy filter 'level in [warn, error, fatal]'
codissy filter 'not (path starts_with "/healthz")'

Operators

Summary & aggregation

The summary subcommand groups records and computes statistics. It tries to be sensible about which statistics to show based on field type.

# count of records per status code
codissy summary status

# duration percentiles per endpoint
codissy summary path --field duration_ms

# error rate per minute, last hour
codissy filter 'level = "error" and ts after now - 1h' \
  | codissy summary --bucket 1m

Default statistics:

Picking fields

Sometimes you don't want statistics, you just want a clean table of selected fields. pick takes a list of field names and outputs them as a table (or JSON, if piped).

codissy pick ts level msg
codissy pick request_id duration_ms status --sort duration_ms:desc --limit 20

Output modes

codissy picks an output mode based on whether stdout is a terminal:

You can force a mode with --output:

codissy summary status --output json
codissy summary status --output table --no-color

Configuration file

For settings you don't want to repeat, codissy reads ~/.config/codissy/config.toml:

# ~/.config/codissy/config.toml

[defaults]
format = "auto"
timezone = "Europe/Berlin"

[colors]
level_error = "red"
level_warn  = "yellow"
level_info  = "default"
level_debug = "dim"

[aliases]
# shorthand for frequent pipelines
errors = "filter 'level in [error, fatal]'"
api    = "filter 'path starts_with \"/api/\"'"

You can then write codissy errors instead of the full filter expression.

Performance tips

Need something not listed here? The CLI's --help is exhaustive and often more current than the website. Try codissy filter --help or codissy summary --help.