Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
ypares avatar

Searxng Search

  • 774 installs
  • 28 repo stars
  • Updated July 29, 2026
  • ypares/agent-skills

searxng-search is a portable agent skill that runs SearXNG metasearch via podman or docker to return JSON results across npm, Cargo, Docker Hub, PyPI, and technical sources for developers avoiding single-vendor search in

About

searxng-search is a skill in ypares/agent-skills providing enhanced web and package repository search through a self-hosted SearXNG metasearch engine. It is fully portable on any machine with podman or docker and no external dependencies beyond the container runtime. Features include a unified interface across npm, Cargo, Docker Hub, and other repos; category-based filtering for IT, repos, and scientific publications; JSON output for programmatic use; PyPI workarounds via direct API plus qypi CLI; and a Nushell helper script. Quick start runs start-searxng --detach then search helpers from the shell. Developers use searxng-search when agents need unbiased, multi-source package and documentation lookup without relying on one commercial index.

  • Unified search across 14+ package repositories including npm, Cargo, Docker Hub, PyPI and more
  • Category-based filtering with 20+ categories such as IT, repos, scientific publications
  • Fully portable Docker/Podman container with zero external service dependencies
  • JSON output optimized for agent consumption plus Nushell helper script
  • Includes PyPI workarounds via direct API and qypi CLI tool

Searxng Search by the numbers

  • 774 all-time installs (skills.sh)
  • +18 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #583 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 30, 2026 (Skillselion catalog sync)
npx skills add https://github.com/ypares/agent-skills --skill searxng-search

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs774
repo stars28
Security audit2 / 3 scanners passed
Last updatedJuly 29, 2026
Repositoryypares/agent-skills

How do you search multiple package registries locally?

Get unbiased, privacy-preserving search results across package registries, documentation, and technical forums without relying on a single vendor index.

Who is it for?

Developers running local agents who need multi-registry package and docs search without a single-vendor index dependency.

Skip if: Teams forbidden from running local containers or workflows satisfied by one registry's built-in search UI only.

When should I use this skill?

A developer needs metasearch across npm, Cargo, Docker Hub, PyPI, or IT documentation with JSON output inside an agent session.

What you get

JSON search results across package registries and technical sources from a local SearXNG instance.

  • JSON search results
  • Package metadata from multiple registries

By the numbers

  • Runs on podman or docker with zero external dependencies beyond the runtime
  • Covers npm, Cargo, Docker Hub repos plus PyPI via API and qypi

Files

SKILL.mdMarkdownGitHub ↗

SearXNG Search

SearXNG is a privacy-respecting metasearch engine that you can run locally. It aggregates results from multiple search engines and package repositories, returning clean JSON output.

Quick Start

Start SearXNG:

start-searxng --detach

This will:

  • Auto-detect podman or docker
  • Create a minimal config with JSON output enabled
  • Start SearXNG on http://localhost:8888
  • Wait until ready

Stop SearXNG:

podman stop searxng  # or: docker stop searxng

Custom port:

start-searxng --port 9999 --detach

Quick Reference

TaskCommandCategory
General web searchcurl "http://localhost:8888/search?q=<query>&format=json"general
Search Cargo/crates.iocurl "http://localhost:8888/search?q=<crate>&format=json&categories=cargo"cargo
Search npm packagescurl "http://localhost:8888/search?q=<pkg>&format=json&categories=packages"packages
Search code repositoriescurl "http://localhost:8888/search?q=<query>&format=json&categories=repos"repos
Search IT resourcescurl "http://localhost:8888/search?q=<query>&format=json&categories=it"it
Limit resultsAdd &limit=N to URL-
Multiple categories&categories=cat1,cat2-

Available Categories

Run to see all categories:

curl -s "http://localhost:8888/config" | jq '.categories'

Notable categories:

  • general: General web search (default)
  • cargo: Rust crates from crates.io
  • packages: Multi-repo (npm, rubygems, haskell/hoogle, hex, packagist, metacpan, pub.dev, pkg.go.dev, docker hub, alpine, etc.)
  • it: IT/tech resources (includes GitHub, Docker Hub, crates.io)
  • repos: Code repositories
  • code: Code search
  • scientific publications: Academic papers
  • news, videos, images, books, etc.

See [package-engine-status.md](references/package-engine-status.md) for comprehensive package search testing results.

JSON Response Structure

{
  "query": "search term",
  "number_of_results": 0,
  "results": [
    {
      "url": "https://example.com",
      "title": "Result Title",
      "content": "Snippet of content...",
      "publishedDate": "2025-01-01T00:00:00",
      "engine": "duckduckgo",
      "engines": ["duckduckgo", "startpage"],
      "score": 3.0,
      "category": "general"
    }
  ],
  "answers": [],          // Direct answers/infoboxes
  "suggestions": [],      // Search suggestions
  "corrections": [],      // Query corrections
  "infoboxes": [],       // Knowledge panels
  "unresponsive_engines": []
}

Common Usage Patterns

1. Package Repository Searches

Cargo/Rust crates:

curl -s "http://localhost:8888/search?q=tokio&format=json&categories=cargo" | \
  jq '.results[] | {title, url, content}'

npm packages:

curl -s "http://localhost:8888/search?q=express&format=json&categories=packages" | \
  jq '.results[] | select(.engines[] == "npm") | {title, url, content}'

PyPI packages (workaround - see below):

# PyPI engine is enabled but not returning results in current SearXNG config
# Use direct API or qypi CLI instead (see PyPI Workaround section)

2. Web Search with Filtering

IT/Tech search:

curl -s "http://localhost:8888/search?q=rust+async&format=json&categories=it" | \
  jq '.results[0:5] | .[] | {title, url, engines}'

GitHub repositories:

curl -s "http://localhost:8888/search?q=machine+learning&format=json&categories=repos" | \
  jq '.results[] | select(.engines[] == "github") | {title, url}'

3. Extracting Specific Information

Get top 3 results:

curl -s "http://localhost:8888/search?q=rust+ownership&format=json" | \
  jq '.results[0:3] | .[] | {title, url, content}'

Check which engines returned results:

curl -s "http://localhost:8888/search?q=python&format=json" | \
  jq '.results[0].engines'

Get answer boxes/infoboxes:

curl -s "http://localhost:8888/search?q=rust+language&format=json" | \
  jq '.infoboxes, .answers'

PyPI Workaround

Since PyPI is not returning results in SearXNG (despite being enabled), use these alternatives:

Option 1: Direct PyPI JSON API

# Search (limited to simple package name matching)
curl -s "https://pypi.org/pypi/<package>/json" | jq '.info | {name, summary, version, home_page}'

# Example:
curl -s "https://pypi.org/pypi/requests/json" | jq '.info.summary'

Option 2: qypi CLI tool

# Install
uvx qypi search pandas --json

# Get package info
uvx qypi info requests --json

# List releases
uvx qypi releases flask --json

See references/pypi-direct-search.md for more details.

Integration with Nushell

Create a helper function:

def searx [
  query: string,
  --category (-c): string = "general",
  --limit (-l): int = 10
] {
  http get $"http://localhost:8888/search?q=($query | url encode)&format=json&categories=($category)"
  | get results
  | first $limit
  | select title url content engines
}

Usage:

searx "tokio async" --category cargo --limit 5
searx "flask tutorial" --category general

Debugging

Check SearXNG config:

curl -s "http://localhost:8888/config" | jq '.engines[] | select(.name == "pypi")'

Check for engine errors:

curl -s "http://localhost:8888/search?q=test&format=json" | jq '.unresponsive_engines'

Test specific engine:

curl -s "http://localhost:8888/search?q=flask&format=json&engines=pypi" | jq .

Known Issues

  • PyPI engine enabled but not working: Use direct API or qypi CLI as workaround
  • Cargo category sometimes returns empty: Try categories=packages or categories=it which also include crates.io
  • Rate limiting: SearXNG may rate-limit if too many requests in quick succession

Configuration

Using the Helper Script (Recommended)

The start-searxng script creates a minimal configuration automatically:

start-searxng --help

Default config includes:

  • use_default_settings: true (inherits all SearXNG defaults)
  • JSON format enabled
  • Rate limiting disabled (for local use)
  • Secret key (change in production!)

Using Your Own Config

start-searxng --config /path/to/your/config/dir

Your config directory should contain settings.yml.

Manual Container Start

# Create config
mkdir -p /tmp/searxng-config
cat > /tmp/searxng-config/settings.yml << 'EOF'
use_default_settings: true
search:
  formats:
    - html
    - json
server:
  secret_key: "change-me-in-production"
  bind_address: "0.0.0.0"
  port: 8080
EOF

# Start with podman
podman run --rm -d --name searxng \
  -p 8888:8080 \
  -v /tmp/searxng-config:/etc/searxng:Z \
  docker.io/searxng/searxng:latest

# Or with docker
docker run --rm -d --name searxng \
  -p 8888:8080 \
  -v /tmp/searxng-config:/etc/searxng \
  docker.io/searxng/searxng:latest

Check Logs

podman logs searxng  # or: docker logs searxng

Advanced Config

See SearXNG Settings Documentation for all options.

Minimal config to add JSON output to defaults:

use_default_settings: true
search:
  formats:
    - html
    - json

Related skills

How it compares

Pick searxng-search for self-hosted multi-registry JSON search rather than a single-registry CLI or commercial search API.

FAQ

How do you start searxng-search locally?

searxng-search starts a SearXNG container with start-searxng --detach, requiring only podman or docker on the host machine with no other external dependencies.

Which package ecosystems does searxng-search cover?

searxng-search provides a unified interface across npm, Cargo, Docker Hub, and additional repositories, with PyPI-specific workarounds using direct API calls and the qypi CLI tool.

Is Searxng Search safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.