Directive (Jay): SearXNG installs on taOS should ship with the JSON output format enabled by default, so agents can query it programmatically. SearXNG is the offline, no-external-key web-search backend for agents.
Current state
app-catalog/services/searxng/manifest.yaml installs searxng/searxng:latest with a config:/etc/searxng named volume. The image generates a default settings.yml whose search.formats is [html] only, so ?format=json returns empty and agents cannot use it. Confirmed on the live Pi instance (port 36130): manually adding formats: [html, json] and restarting made the JSON API return results.
No post-install hook or config-seeding mechanism exists today (docker_installer.py only generates compose from the manifest; no catalog service ships a settings file).
Recommended approach
- A (lean): add a small generic
post_install capability (declarative steps run after the container is healthy) and a searxng step that enables search.formats: [html, json] then restarts. Mirrors the manual fix, reusable for other services. Catalog is trusted; keep the step narrow.
- B: seed a settings.yml (use_default_settings: true + formats + a per-install-generated server.secret_key) into the config volume at install. Cleaner result, needs new file-seeding + secret generation.
Include a test. Keep searxng an optional/arms-length install (manifest license is AGPL-3.0).
Relates to #72 (Browser address-bar search requires SearXNG).
Directive (Jay): SearXNG installs on taOS should ship with the JSON output format enabled by default, so agents can query it programmatically. SearXNG is the offline, no-external-key web-search backend for agents.
Current state
app-catalog/services/searxng/manifest.yaml installs searxng/searxng:latest with a
config:/etc/searxngnamed volume. The image generates a default settings.yml whosesearch.formatsis[html]only, so?format=jsonreturns empty and agents cannot use it. Confirmed on the live Pi instance (port 36130): manually addingformats: [html, json]and restarting made the JSON API return results.No post-install hook or config-seeding mechanism exists today (docker_installer.py only generates compose from the manifest; no catalog service ships a settings file).
Recommended approach
post_installcapability (declarative steps run after the container is healthy) and a searxng step that enablessearch.formats: [html, json]then restarts. Mirrors the manual fix, reusable for other services. Catalog is trusted; keep the step narrow.Include a test. Keep searxng an optional/arms-length install (manifest license is AGPL-3.0).
Relates to #72 (Browser address-bar search requires SearXNG).