# ===================================================================== # owuitools' own SearXNG. # # Separate from /configs/searxng on purpose. That instance is tuned for # the voice assistant, where a slow answer is a bad answer, so it runs # outgoing.request_timeout at 2.0s and drops any engine that dawdles. # Research is the opposite trade: waiting 5s for a good result beats # answering fast from one engine. # ===================================================================== use_default_settings: true general: instance_name: "owuitools" # No public UI, no metrics endpoint to leak engine health. enable_metrics: false server: secret_key: "CHANGE_ME - generate with: openssl rand -hex 32" limiter: false # only owuitools-api can reach this; no bot problem image_proxy: false method: "GET" search: safe_search: 0 autocomplete: "" default_lang: "en" # json is what the tool server consumes. html stays enabled so a human # can port-forward and eyeball why a query returned junk. formats: - html - json outgoing: request_timeout: 5.0 max_request_timeout: 8.0 pool_connections: 100 pool_maxsize: 20 enable_http2: true engines: # The `general` set is chosen by measurement, not reputation. Every engine # below was queried from this host's own egress IP on 2026-09-10; the # result counts are in the comments. Re-measure before changing it - which # engines will serve this IP is a property of the IP, and it drifts. # # The failure this guards against is real and was observed: brave, startpage # and google cse were the entire `general` set, and all three suspended # themselves within one working session (rate limit, CAPTCHA, API quota), # taking web_search - the most-used tool in the suite - to zero results # while every other tool stayed healthy. # Working. DuckDuckGo previously served this IP a CAPTCHA and was disabled # for it; re-measured 2026-09-10 and it now returns full results. The old # note was stale, which is the argument for re-measuring rather than # trusting a comment. - name: duckduckgo # 10 results disabled: false - name: bing # 10 results disabled: false - name: google # 9 results - the scraper, not the quota-limited CSE disabled: false - name: yahoo # 7 results disabled: false # Kept for diversity and because suspensions expire, but not relied on: # each of these returned nothing from this IP on 2026-09-10. - name: mojeek # 0 disabled: false - name: brave # suspended: too many requests disabled: false - name: startpage # suspended: CAPTCHA disabled: false - name: wikipedia disabled: false # Measured and rejected: qwant (CAPTCHA), seznam (timeout), marginalia / # stract / right dao / presearch (no results). wiby (12) and mwmbl (4) # respond but index the small/old web, which is wrong for a suite answering # current IT and engineering questions. # `it` category is the high-value one for this assistant: stackoverflow, # askubuntu, superuser, mdn, mankier, and the distro/docker package # indexes. Measured 126 results vs 20 for `general` on a technical query. - name: stackoverflow disabled: false - name: askubuntu disabled: false - name: superuser disabled: false - name: mdn disabled: false # Package-registry and niche-language engines sit in the `it` category and # match on any keyword, so a query like "qemu bridge networking" led with a # Docker Hub result for "Strimzi Kafka Bridge". lookup_package covers # registry questions properly; here they are just noise crowding out the # Stack Overflow and man-page hits that actually answer the question. - name: docker hub disabled: true - name: gentoo disabled: true - name: hoogle disabled: true # Noise for this use case - all of it costs latency and returns nothing # a technical answer can cite. - name: bing images disabled: true - name: google images disabled: true - name: youtube disabled: true # The `science` category was running on SearXNG's defaults, which are # arXiv-heavy: a biomedical query came back with computer-science preprints # in five of twenty-three result slots. These two ship disabled upstream and # are the ones that carry real bibliographic metadata - journal, authors, # DOI - which web_search now renders as a CITE AS line. Without them the # model gets a title and a URL and fills the venue in from the domain, which # is how an npj Flexible Electronics paper got cited as Nature Electronics. - name: openalex disabled: false - name: crossref disabled: false # Upstream default is 30s, well past this instance's max_request_timeout, # so a slow Crossref would simply never return. timeout: 8.0 - name: pubmed disabled: false ui: static_use_hash: true