Loading
Loading

Neuron registration trends
Organizations building search-dependent applications face a centralized bottleneck: search results depend on a single provider's uptime, bias, and pricing. When that provider changes rates, throttles access, or degrades quality, there is no recourse. Real-time search systems also struggle with cost, coverage, and verification of result accuracy across multiple sources—web, social media, and specialized indices.
A decentralized search network solves this by creating an open market of independent miners (search nodes) that compete to answer queries, while validators verify their work against multiple independent providers and score them on quality. Miners that consistently return accurate results earn rewards; poor performers lose standing. This creates economic incentive for high-quality, truthful search without central control.
Desearch Subnet 22 implements this model on Bittensor. Miners run axons that serve web, X/Twitter, and AI search queries. Validators dispatch synthetic and organic queries to multiple miners in parallel, verify answers against Apify, ScrapingDog, and OpenAI, score them using language models, persist results in SQLite, and write on-chain weights. A protected FastAPI service lets trusted applications query the subnet's aggregated results. The manifest.json file lets miners declare their capacity per search type, with concurrency limits scaled per active validator.
Use cases were auto-generated from the GitHub repository and may not reflect the latest changes.
Desearch Subnet 22 (SN22) is a Bittensor subnet that coordinates miners and validators to serve decentralized real-time intelligence through live web, X/Twitter, and multi-source search data. Miners run axons that answer search queries and health checks, while validators send synthetic and organic queries to miners, verify results against independent providers, score responses, and write weights on-chain. The subnet powers the Desearch API and console products with a decentralized search infrastructure layer.
The subnet comprises four main components: (1) Miner Axons—each miner runs a single Bittensor axon (neurons/miners/miner.py) that responds to IsAlive pings, declares search capacity via a manifest.json file, and serves three search synapses (web, X/Twitter, AI); (2) Validator Service—runs one core process (neurons/validators/validator_service.py) that syncs the metagraph, generates synthetic queries, dispatches them to miners via Bittensor dendrite, collects responses, verifies results against independent providers (Apify, ScrapingDog, OpenAI), scores responses using an LLM, stores scoring windows in SQLite (.state/miner_state.db), and writes consensus weights on-chain; (3) Validator API—a protected FastAPI service (neurons/validators/api.py) that accepts organic search requests from trusted Desearch backend services (protected by EXPECTED_ACCESS_KEY header) and serves aggregated search results plus public miner state from the SQLite database; (4) Shared Protocol—defines synapses, request/response models, tool helpers, and configuration shared between miners and validators. All three validator processes (service, API, autoupdate) are orchestrated via PM2 and managed by run.sh, which also handles automatic code updates every 20 minutes.
This information was auto-extracted from the GitHub repository and may be incomplete or out of date. Always refer to the subnet's GitHub repository for the latest instructions.
Validators generate synthetic and organic search queries across three types: web search, X/Twitter search, and AI search. Each query is sent to all active miners. Responses are verified using independent data sources (Apify for Twitter/X verification, ScrapingDog for web content verification, OpenAI for LLM-based scoring and summarization).
Scoring dimensions include result relevance, result freshness, response latency, and format correctness. Miner state is tracked per search type with a 72-hour scoring history. Validators run an LLM scoring model (default gpt-4.1-nano, configurable) that evaluates response quality.
Weights computed from scores are written on-chain to incentivize high-quality miners and penalize non-responsive or low-quality miners.
The sections above were auto-generated from the GitHub repository and may not reflect the latest changes. View repository
Decentralized search engine
FAQs were auto-generated from the GitHub repository and may not reflect the latest changes.
Holder & total-staked metrics as of 1h ago (hourly snapshot)
Minimum 4 GB swap space required, 8 GB recommended. Concurrency configured per-search-type in manifest.json; infrastructure scaling depends on declared concurrency multiplied by active validators.
Minimum 4 GB swap space required, 8 GB recommended. Allocate at least 50 GB free disk for Weights & Biases logs. Redis and SQLite required locally. 8 CPU cores recommended for production validators.
Clone the Desearch subnet repository
git clone https://github.com/Desearch-ai/subnet-22.git && cd subnet-22
Install Python dependencies and the desearch package
python3 -m pip install -r requirements.txt && python3 -m pip install -e .
Create coldkey and hotkey pair for miner identity
btcli wallet new_coldkey --wallet.name miner && btcli wallet new_hotkey --wallet.name miner --wallet.hotkey default
Register hotkey on mainnet subnet 22 (or netuid 41 for testnet)
btcli subnet register --netuid 22 --wallet.name miner --wallet.hotkey default --subtensor.network finney
Copy environment variables template for miner configuration
cp neurons/miners/.env.template neurons/miners/.env
Configure miner environment variables with API credentials and wallet settings
# Edit neurons/miners/.env with OPENAI_API_KEY, APIFY_API_KEY, SCRAPINGDOG_API_KEY, WALLET_NAME, WALLET_HOTKEY, SUBTENSOR_NETWORK, NETUID, AXON_PORT
Copy miner manifest template for concurrency configuration
cp neurons/miners/manifest.template.json neurons/miners/manifest.json
Configure concurrency limits per search type in manifest.json
# Edit neurons/miners/manifest.json to set concurrency limits for web_search, x_search, ai_search
Install PM2 for process management (requires sudo)
sudo npm install -g pm2 && pm2 update
Start miner axon with PM2 using environment variables from .env
pm2 start neurons/miners/miner.py --interpreter /usr/bin/python3 --name desearch_miner
Monitor miner process status and logs(optional)
pm2 status && pm2 logs desearch_miner
Clone the Desearch subnet repository
git clone https://github.com/Desearch-ai/subnet-22.git && cd subnet-22
Create and activate Python 3.10 conda environment (recommended)
conda create -n val python=3.10 -y && conda activate val
Install Python dependencies and the desearch package
python3 -m pip install -r requirements.txt && python3 -m pip install -e .
Install system dependencies: Redis, jq, npm (Ubuntu/Debian)
sudo apt update && sudo apt install -y redis-server jq npm
Install PM2 globally for process management
sudo npm install -g pm2 && pm2 update
Create coldkey and hotkey pair for validator identity
btcli wallet new_coldkey --wallet.name validator && btcli wallet new_hotkey --wallet.name validator --wallet.hotkey default
Register validator hotkey on mainnet subnet 22 (or netuid 41 for testnet)
btcli subnet register --netuid 22 --wallet.name validator --wallet.hotkey default --subtensor.network finney
Export required API credentials in shell environment
export OPENAI_API_KEY='...' && export APIFY_API_KEY='...' && export SCRAPINGDOG_API_KEY='...' && export WANDB_API_KEY='...'
Generate and export EXPECTED_ACCESS_KEY for validator API authentication
export EXPECTED_ACCESS_KEY="$(python3 scripts/generate_access_key.py)"
Authenticate with Weights & Biases for metrics logging
wandb login
Start validator with autoupdate loop (recommended; manages validator_process, api_process, and auto-pulls new releases)
pm2 start run.sh --name desearch_autoupdate -- --wallet.name validator --wallet.hotkey default --netuid 22 --subtensor.network finney
Monitor all three validator processes (validator_service, api, autoupdate)(optional)
pm2 status && pm2 logs desearch_validator_process && pm2 logs desearch_api_process
Test validator API health check locally(optional)
curl -s 'http://localhost:8005/' -H 'access-key: <EXPECTED_ACCESS_KEY>'