It's been a while since we posted an update on Seq's hard-working command-line client, seqcli.
The 2025.1 build has just been released, but I'll include some favorites here from the 2024.x series as well, since we've kept a few features under our hats.
Streaming searches
The 2025.1 seqcli search command now uses streaming searches. Streaming turns event searches from a "pull" model into a "push": as soon as the back-end worker processes find results, they're pushed all the way down to the client using WebSockets, and immediately rendered to the terminal.
Not only is this more responsive, it's substantially faster than the pull-based paging model used by earlier versions of seqcli.
To opt out of streaming, for example to run searches against an older Seq server, or behind a proxy that doesn't support WebSockets, pass --no-websockets.
Environment variables for all configuration options
The configuration options exposed by the seqcli config command, such as connection.serverUrl, now all have environment variable equivalents. The environment variable version of a setting is just SEQCLI_ and then the setting name in uppercase, with dots replaced by underscores: SEQCLI_CONNECTION_SERVERURL in this case.
You can find all available settings by running seqcli config.
seqcli node health and seqcli cluster health
These two handy commands probe the target server's /health endpoint and /health/cluster endpoints, respectively.
seqcli node healthreports the status of the machine that receives the/healthrequestseqcli cluster healthreports the status of the cluster, failing if there are insufficient nodes with up-to-date data
The --wait-until-healthy option, supported by both, is designed to slot into automated deployment/update pipelines:
> seqcli node health -s http://seq.example.com --wait-until-healthy
200
update everywhere
The seqcli apikey, appinstance, feed, retention, signal, user, and workspace command groups now include update alongside the create, list, and remove commands you may already have encountered.
The commands accept JSON on STDIN, which works particularly nicely in shells that have object/JSON support:
PS > $warnings = (seqcli signal list -i signal-m33302 --json | ConvertFrom-Json)
PS > $warnings.Title
Warnings
PS > $warnings.Title = "Caution"
PS > (echo $warnings | ConvertTo-Json) | seqcli signal update --json-stdin
PS > seqcli signal list -i signal-m33302 --json
{"Title": "Caution", "Description": "Automatically created", "Filters": [{"Description": null, "DescriptionIsExcluded": false, "Filter": "@Level in ['w', 'wa', 'war', 'wrn', 'warn', 'warning'] ci", "FilterNonStrict": null}], "Columns": [], "IsProtected": false, "IsIndexSuppressed": true, "Grouping": "Explicit", "ExplicitGroupName": "@Level", "OwnerId": null, "Id": "signal-m33302"}
More new commands
A few more tasks can now be easily automated:
seqcli app uninstallseqcli index (list|suppress)andseqcli expressionindex (create|list|remove)seqcli setting (names|show|set|clear)
As with all seqcli commands, you can learn more about these ones with:
seqcli help <command name>
Suggestions and requests for more commands are welcome over in the project's GitHub repository.