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 health
reports the status of the machine that receives the/health
requestseqcli cluster health
reports 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 uninstall
seqcli 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.