Client still assumes an external instance; 2dph skill docs are stale (search.ops.io).
Do
Optional compose profile with sanitized settings.yml / limiter.toml from the live internal SearXNG (formats json+html, bing+google cse, short suspended_times, RFC1918 pass_ip).
Pin image 2026.8.10. Generate SEARXNG_SECRET. Do not copy ops base_url, docker0 bind, or Basic Auth.
On a host that already runs SearXNG: set BRAIN_SEARCH_URL, do not start a second copy.
Go client: throttled != absence, PII refuse, sqlite cache.
Test
Fixture tests for classify/throttled. Compose file has no secrets.
## Why
Client still assumes an external instance; 2dph skill docs are stale (`search.ops.io`).
## Do
- Optional compose profile with sanitized `settings.yml` / `limiter.toml` from the live internal SearXNG (formats json+html, bing+google cse, short suspended_times, RFC1918 pass_ip).
- Pin image 2026.8.10. Generate `SEARXNG_SECRET`. Do not copy ops base_url, docker0 bind, or Basic Auth.
- On a host that already runs SearXNG: set `BRAIN_SEARCH_URL`, do not start a second copy.
- Go client: `throttled` != absence, PII refuse, sqlite cache.
## Test
- Fixture tests for classify/throttled. Compose file has no secrets.
Partial: Go SearXNG client (bin/web/search.go + internal/websearch). Empty results = throttled, not absence. Optional compose profile searxng (pinned 2026.8.10, RFC1918 limiter, no secrets). Skip the profile when BRAIN_SEARCH_URL already points at a live instance.
Partial: Go SearXNG client (`bin/web/search.go` + `internal/websearch`). Empty results = `throttled`, not absence. Optional compose profile `searxng` (pinned 2026.8.10, RFC1918 limiter, no secrets). Skip the profile when `BRAIN_SEARCH_URL` already points at a live instance.
GitHub: https://github.com/eSlider/2dph/pull/16
Go client + sanitized compose profile already on main. Remaining operator work: CSE API keys (not in git), live smoke against BRAIN_SEARCH_URL, decide whether this host already runs SearXNG.
Go client + sanitized compose profile already on main. Remaining operator work: CSE API keys (not in git), live smoke against BRAIN_SEARCH_URL, decide whether this host already runs SearXNG.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why
Client still assumes an external instance; 2dph skill docs are stale (
search.ops.io).Do
settings.yml/limiter.tomlfrom the live internal SearXNG (formats json+html, bing+google cse, short suspended_times, RFC1918 pass_ip).SEARXNG_SECRET. Do not copy ops base_url, docker0 bind, or Basic Auth.BRAIN_SEARCH_URL, do not start a second copy.throttled!= absence, PII refuse, sqlite cache.Test
Partial: Go SearXNG client (
bin/web/search.go+internal/websearch). Empty results =throttled, not absence. Optional compose profilesearxng(pinned 2026.8.10, RFC1918 limiter, no secrets). Skip the profile whenBRAIN_SEARCH_URLalready points at a live instance.GitHub: https://github.com/eSlider/2dph/pull/16
Go client + sanitized compose profile already on main. Remaining operator work: CSE API keys (not in git), live smoke against BRAIN_SEARCH_URL, decide whether this host already runs SearXNG.