What's new in 6.20.2
- Miller now treats AI agents as first-class users
- There is shell tab-completion for
bashandzsh - There is a new
bytesdatatype, along with base64 encode/decode support
(Note: versions 6.20.0 and 6.20.1 were in error and are not released.)
Miller and AI
Miller now treats AI agents as first-class users. Everything an agent needs to drive Miller well --
discovering what exists, learning your data's shape, validating expressions before running them, and
recovering from errors -- is now a built-in, structured feature of the mlr binary, packaged for
MCP-speaking agents (Claude Code, Claude Desktop, Cursor, ...) via a one-line setup. Your choice of
# Claude
mlr skill install ~/.claude/skills/miller
# Codex and Gemini
mlr skill install ~/.agents/skills/miller
or
# Claude
claude mcp add miller -- mlr mcp
# Codex
codex mcp add miller -- mlr mcp
# Gemini
gemini mcp add miller mlr mcp
See the new Miller and AI docs page for the quick start.
Reference pages:
- https://miller.readthedocs.io/en/latest/ai
- https://miller.readthedocs.io/en/latest/agent-skill
- https://miller.readthedocs.io/en/latest/mcp-server
- https://miller.readthedocs.io/en/latest/ai-support
PRs:
- Machine-readable help catalog,
mlr help --as-json: by @johnkerl in https://github.com/johnkerl/miller/pull/2099, https://github.com/johnkerl/miller/pull/2106 - JSON capability index and
mlr whichintent router by @johnkerl in https://github.com/johnkerl/miller/pull/2107 - Structured verb options, with enum value-sets by @johnkerl in https://github.com/johnkerl/miller/pull/2111
- Structured error output,
--errors-json, with hints and did-you-mean suggestions by @johnkerl in https://github.com/johnkerl/miller/pull/2113 - DSL validate/dry-run,
mlr put --explain/mlr filter --explainby @johnkerl in https://github.com/johnkerl/miller/pull/2131 - New
mlr describeverb: field names, types, cardinality, and value domains of your data in one pass by @johnkerl in https://github.com/johnkerl/miller/pull/2132 - New
mlr mcpMCP server and agent playbook, with a--no-shellsandbox flag by @johnkerl in https://github.com/johnkerl/miller/pull/2133 - Roadmap doc by @johnkerl in https://github.com/johnkerl/miller/pull/2103; "Miller and AI" docs page by @johnkerl in https://github.com/johnkerl/miller/pull/2134
Shell tab-completion for bash and zsh
Documentation:
https://miller.readthedocs.io/en/latest/shell-completion/
PR:
- Shell tab-completion for bash and zsh by @johnkerl in https://github.com/johnkerl/miller/pull/2096
A first-class bytes type in the DSL
Docs:
- https://miller.readthedocs.io/en/latest/reference-main-data-types/
- https://miller.readthedocs.io/en/latest/reference-dsl-builtin-functions/#base64_encode
- https://miller.readthedocs.io/en/latest/reference-dsl-builtin-functions/#base64_decode
PR:
- New
bytestype withb"..."literals and base64/hex codecs by @johnkerl in https://github.com/johnkerl/miller/pull/2122
More features
- New
tail -n +Nandhead -n -Noptions by @farnoy in https://github.com/johnkerl/miller/pull/2071 - Long-overdue
--mdflag by @johnkerl in https://github.com/johnkerl/miller/pull/2100 - Windows-arm64 releases by @teo-tsirpanis in https://github.com/johnkerl/miller/pull/2127
Bug fixes
- Fix masked unset-on-array error path (along with govet lint findings) by @johnkerl in https://github.com/johnkerl/miller/pull/2129
Documentation
- CSV and JSON troubleshooting tips by @dashitongzhi in https://github.com/johnkerl/miller/pull/2123, with page-refactor by @johnkerl in https://github.com/johnkerl/miller/pull/2128
- Document time-conversion thread safety by @dashitongzhi in https://github.com/johnkerl/miller/pull/2115
- PNG graphics in perf docs for issue-2084 perf mods by @johnkerl in https://github.com/johnkerl/miller/pull/2095
Internals
- golangci-lint CI workflow by @dashitongzhi in https://github.com/johnkerl/miller/pull/2076
- Lint fixes bringing staticcheck and errcheck to zero by @johnkerl in https://github.com/johnkerl/miller/pull/2108, https://github.com/johnkerl/miller/pull/2110, https://github.com/johnkerl/miller/pull/2112, https://github.com/johnkerl/miller/pull/2130
- Strip dead code from pkg/ by @johnkerl in https://github.com/johnkerl/miller/pull/2121
- CI/actions updates by @johnkerl in https://github.com/johnkerl/miller/pull/2119 and by @dependabot in https://github.com/johnkerl/miller/pull/2101, https://github.com/johnkerl/miller/pull/2102, https://github.com/johnkerl/miller/pull/2104, https://github.com/johnkerl/miller/pull/2105, https://github.com/johnkerl/miller/pull/2114, https://github.com/johnkerl/miller/pull/2116, https://github.com/johnkerl/miller/pull/2118, https://github.com/johnkerl/miller/pull/2124, https://github.com/johnkerl/miller/pull/2125, https://github.com/johnkerl/miller/pull/2126
- Dependency bumps by @dependabot in https://github.com/johnkerl/miller/pull/2117, https://github.com/johnkerl/miller/pull/2120
New Contributors
- @farnoy made their first contribution in https://github.com/johnkerl/miller/pull/2071
- @dashitongzhi made their first contribution in https://github.com/johnkerl/miller/pull/2076
- @teo-tsirpanis made their first contribution in https://github.com/johnkerl/miller/pull/2127
Full Changelog: https://github.com/johnkerl/miller/compare/v6.19.0...v6.20.0