Skip to main content

The stdin request

One JSON object on stdin, one JSON envelope on stdout. The query never reaches the process list and needs no shell escaping.

A malformed field answers fix_input before any router call. The answer's shape is on The envelope.

Fields​

fieldvalue
version1, required.
queryThe search, required.
tier"fast" (three fast indexes), "balanced" (the core set, attributed) or "max" (the core set, more results per arm). Absent, the request carries the participant's band (agents tier, then [miner] tier), or no tier at all and the router applies the tenant's default.
recency"day", "week", "month" or "year". A preference the router passes to its providers; check each citation if it must hold.
domain_filterUp to 16 bare hostnames. A preference, like recency.
max_results1 to 25. A cap.
providersUp to 16 provider names: restrict the fan-out, or reach an extended arm that fires only when named. Needs balanced or max; on fast the router answers 400 invalid_request. Recorded as decision.requested. The router owns the list; an unknown name is its call.
view"full" (default) or "merged", which drops the per-provider candidates. "merged" is also sent to the router, which adds its own merged and indexes to its raw answer; the envelope's merged stays this client's own merge. The human form's -view merged with -format json shows that raw answer.

What each option is for, with examples, is on Request options.

Sending it​

From a POSIX shell, a heredoc keeps the query out of the command line:

jevlin search --stdin <<'JSON'
{"version":1,"query":"what is proof of authority consensus"}
JSON

Where the shell is PowerShell, a skill pipes a here-string into the call:

$OutputEncoding = [System.Text.UTF8Encoding]::new($false)
@'
{"version":1,"query":"what is proof of authority consensus"}
'@ | & 'C:\Users\you\.jevlin\bin\jevlin.exe' search --stdin

The first line is what makes an apostrophe, a quotation mark or any non-ASCII character arrive as written. Without it, Windows PowerShell 5.1 turns every non-ASCII character into ? on the way to the program, and the search answers a different question.

Each installed skill carries the form for its agent's shell, with your paths filled in.

Bounds​

-timeout, default 60s, bounds the whole search: connect, TLS, headers, body and the one retry. If the router answers the exact code trace_unsupported, the client retries once without the trace, under the same deadline. Nothing else causes a second request.