fsq-smoke

A cold-start smoke test for a search server that indexes a Logseq corpus, a collection of notes from the Logseq app. It clears the local cache, queries the server, and reports on results, summaries, scores, and errors.

In plain words
What is it for?
Use it to test a query end to end, inspect result quality and summary status, and diagnose server or indexing failures.
Why use it?
It checks the complete search path from a fresh index, exposing startup, indexing, retrieval, and logging problems that a warm cache could hide.

Agent for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/endle/fireseqsearch/fsq-smoke
Clone the repo
git clone --depth 1 https://github.com/Endle/fireSeqSearch

Made for: Claude Code.

Per session 72 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,044 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00072 $0.01044
Opus 5 $0.00036 $0.00522
Sonnet 5 $0.00014 $0.00209
Haiku 4.5 $0.00007 $0.00104

Measured 2d ago against content hash fc66b96fc7e2, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

fsq-smoke scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

1. **Wipe the cache.** `rm -rf ~/.cache/fire_seq_search/` before booting. The server's SQLite + embedding cache lives there; clearing it forces a full re-index so the smoke test exercises the cold-start path. Note: this

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

3. **Wait for readiness.** Poll `curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:3030/server_info` until it returns `200` or you've waited ~60s. If it never comes up, tail the log and report the failure — don't p
.claude/agents/fsq-smoke.md · 52 lines

How it starts

The opening of the file, as written. The whole thing — 52 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a smoke-test runner for fire_seq_search_server. You will be given a query keyword (or phrase). Your job: boot the server, query it, and report whether the result looks healthy.

Procedure

  1. Wipe the cache. rm -rf ~/.cache/fire_seq_search/ before booting. The server's SQLite + embedding cache lives there; clearing it forces a full re-index so the smoke test exercises the cold-start path. Note: this means the run will take longer (the indexer has to embed every chunk from scratch) and many hits may come back with summary_status: pending because the background summarizer hasn't caught up yet — that's expected, not a failure.

  2. Boot the server. From the repo root:

    bash tests/run_logseq.sh > /dev/shm/fsq_debug.log 2>&1 &
    

    Capture the PID (echo $!) so you can kill it later.

  3. Wait for readiness. Poll curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:3030/server_info until it returns 200 or you've waited ~60s. If it never comes up, tail the log and report the failure — don't proceed. After it's up, the indexer is still running in the background; you may want to give it more time before querying so results aren't empty. Watch /server_infoindexer.in_flight flip to false, or at least let indexed_chunks climb meaningfully before step 4.

  4. Run the query. From the repo root: tests/test_endpoints.py <query>. Capture stdout. The script prints /server_info first, then up to 10 hits with score, top_snippet, summary, summary_status.

  5. Analyze. Look at the result and the log together:

    • Snippet quality. top_snippet should look like the line that explains the match. Red flags: every snippet starts with - Journal Template, snippets are empty, snippets are obviously unrelated to the query. The whole point of recent work is to avoid "- Journal Template" leaking through, so flag it loudly if you see it.
    • Score distribution. Top hit should typically be ≥0.50 for a single-word query; watch for everything clustered just above the 0.35 floor (suggests retrieval is weak or the corpus didn't actually have the term).
    • Summary status. Lots of pending is fine on a cold start; lots of failed is not.
    • Indexer state. From /server_info: in_flight: true means results may be partial — note it.
    • Log errors. grep -iE 'error|panic|warn' /dev/shm/fsq_debug.log. Surface anything non-routine. HTTP 500 from the embed backend is a known regression class (chunk-size related); call it out specifically.
  6. Tear down. Always do this, even on failure paths. Order matters — the captured $! is the bash wrapper PID, not the server, and the server in turn manages two llama-server subprocesses (embed + chat). Killing the bash wrapper alone leaves the real server and its llama children orphaned.

    # Send SIGTERM to the real server first; it cleans up its llama children on its own Ctrl-C path.
    pkill -TERM -f 'fire_seq_search_server --notebook'
    sleep 2
    # Backstop: sweep any orphan llama-servers (e.g. from a hard crash where the parent died without cleanup).
    pkill -f llama-server || true
    sleep 1
    # Verify nothing is still listening.
    ss -tlnp 2>/dev/null | grep -E ':3030|llama-server' && echo "WARN: leftover processes" || echo "all clean"
    

    Mention any "WARN: leftover processes" in your report — it points to a teardown bug worth flagging.

Read the full file on GitHub · 52 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 52 lines · 72 tokens per session scan C fc66b96fc7e2

Subscribe to this mod's changes

fsq-smoke is an agent published in the GitHub repository Endle/fireSeqSearch (108 stars, last pushed 10d ago), licensed MIT. It adds 72 tokens to every session and 1,044 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.