Jiro v0.2 - Search Intelligence Platform
Local-first web search, scraping, and social media intelligence platform.
Features
Phase 1: Search Intelligence
- Hybrid Search - Combines keyword, semantic, and freshness signals
- Relevance Scoring - Multi-signal ranking with configurable weights
- Search Filters - Domain include/exclude, time range, category filters
- Highlights - Query-aware snippet extraction
- Answer Synthesis - Extractive answers from search results
- Multi-Query - Parallel query expansion for complex topics
Phase 2: Social Scraping (12 Platforms)
- Reddit, Hacker News, YouTube, Bluesky, Twitter/X
- Threads, Instagram, TikTok, LinkedIn, Facebook
- Telegram, Pinterest
Phase 3: Advanced Features
- Structured Extraction - JSON Schema-based data extraction
- Intent Classification - Rule-based intent detection (16 types)
- Smart Search - Auto-routing based on intent
- Plugin System - 5 plugin types: engine, search, datasource, extractor, social
Phase 4: Pro Tier
- API Key Authentication - Secure key-based access
- Rate Limiting - Token bucket per API key
- Quota Management - Daily request limits
- Usage Analytics - Detailed usage tracking
- Tiered Plans - Free, Starter ($29), Pro ($99), Enterprise ($499)
Phase 5: Production Ready
- Docker Support - One-command deployment
- Kubernetes Helm Chart - Production-ready orchestration
- OpenAPI 3.1 Spec - Complete API documentation
- SDK Generation - Python, TypeScript, Go clients
Quick Start
Installation
# Install from PyPI
pip install jirosearch
# Or clone and install from source
git clone https://github.com/DevAnimecx/jiro.git
cd jiro-search
pip install -e .
Update
# Check for updates
jiro check-update
# Update to latest version with health checks
jiro update
# Update without running tests
jiro update --no-tests
# Force reinstall current version
jiro update --force
Run Server
# Start the API server
jiro serve
# Or with specific host/port
jiro serve --host 0.0.0.0 --port 8000
Run Dashboard
# Start the web dashboard on port 3000
jiro dashboard
Docker Deployment
# Build and run with Docker
docker-compose up -d
# Or build image manually
docker build -t jiro .
docker run -p 8000:8000 jiro
API Usage
Basic Search
curl -X POST http://localhost:8000/v1/search \
-H "Content-Type: application/json" \
-d '{
"q": "python web scraping",
"engine": "google",
"max_results": 10
}'
Hybrid Search
curl -X POST http://localhost:8000/v1/search \
-H "Content-Type: application/json" \
-d '{
"q": "latest AI research",
"hybrid": true,
"answer": true,
"highlights": true
}'
Social Media Scraping
# Scrape a Reddit post
curl -X POST http://localhost:8000/v1/social \
-H "Content-Type: application/json" \
-d '{"url": "https://reddit.com/r/programming/comments/abc123"}'
# Scrape a YouTube video
curl -X POST http://localhost:8000/v1/social \
-H "Content-Type: application/json" \
-d '{"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"}'
Smart Search (Intent Routing)
# Auto-detect intent and route
curl -X POST http://localhost:8000/v1/smart \
-H "Content-Type: application/json" \
-d '{"query": "github.com/fastapi"}'
# Classify intent without executing
curl -X POST http://localhost:8000/v1/smart/classify \
-H "Content-Type: application/json" \
-d '{"query": "buy iphone 15 pro"}'
Structured Extraction
curl -X POST http://localhost:8000/v1/structured/extract \
-H "Content-Type: application/json" \
-d '{
"query": "python web frameworks",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"stars": {"type": "integer"},
"description": {"type": "string"}
}
}
}'
Pro Tier & Pricing
Plans
| Plan | Price | RPM | RPD | Features |
|---|---|---|---|---|
| Free | $0 | 10 | 100 | Basic search, social scraping |
| Starter | $29/mo | 60 | 5,000 | Hybrid search, structured extraction |
| Pro | $99/mo | 300 | 50,000 | All features, webhooks |
| Enterprise | $499/mo | 1,000 | 500,000 | Custom models, priority support |
API Key Management
# Create a new API key
curl -X POST http://localhost:8000/v1/pro/keys \
-H "Content-Type: application/json" \
-d '{"name": "My App", "tier": "starter"}'
# List API keys
curl http://localhost:8000/v1/pro/keys
# Get usage stats
curl "http://localhost:8000/v1/pro/usage?key_id=YOUR_KEY_ID&days=30"
# Upgrade tier
curl -X PUT http://localhost:8000/v1/pro/keys/KEY_ID/upgrade \
-H "Content-Type: application/json" \
-d '{"tier": "pro"}'
MCP Integration
Jiro works with MCP-compatible clients (Claude Desktop, Cursor, Continue.dev):
{
"mcpServers": {
"jiro": {
"command": "jiro",
"args": ["mcp"]
}
}
}
Available MCP Tools
| Tool | Description |
|---|---|
search |
Search the web via multiple engines |
scrape |
Scrape URL content as markdown |
ai_search |
Research with citations |
search_hybrid |
Hybrid search with multi-signal ranking |
search_structured |
Extract structured data with JSON schema |
social_scrape |
Scrape social media URLs |
social_search |
Search across social platforms |
social_batch |
Batch scrape multiple URLs |
smart_search |
Intent-aware smart routing |
smart_classify |
Classify search intent |
compare_engines |
Compare results across engines |
monitor_status |
Get server health and metrics |
Configuration
Environment Variables
# Database
JIRO_DB_PATH=/path/to/jiro.db # SQLite path
JIRO_DB_POSTGRES=postgresql://user:pass@localhost/jiro # PostgreSQL URL
# Cache
JIRO_CACHE_TYPE=sqlite # sqlite, memory, redis
JIRO_CACHE_TTL=3600
# API
JIRO_API_KEY=your_api_key
JIRO_SECRET_KEY=your_secret_key
# Engines
JIRO_ENGINES=google,bing,brave,duckduckgo
# Proxy
JIRO_PROXY_URL=http://proxy:8080
Config File
# jiro.yaml
server:
host: 0.0.0.0
port: 8000
engines:
- google
- bing
- brave
- duckduckgo
cache:
type: sqlite
ttl: 3600
pro:
enabled: true
default_tier: free
Architecture
jiro/
├── server/ # FastAPI application
│ ├── routers/ # API endpoints
│ └── deps.py # Dependencies
├── search/ # Search intelligence
│ ├── hybrid.py # Hybrid search
│ ├── reranker.py # Result reranking
│ ├── embeddings.py # Semantic search
│ ├── relevance.py # Relevance scoring
│ ├── filters.py # Search filters
│ ├── highlights.py # Snippet highlights
│ ├── answer.py # Answer synthesis
│ ├── multiquery.py # Query expansion
│ ├── structured.py # Structured extraction
│ └── intent.py # Intent classification
├── scraping/ # Web scraping
│ ├── engines.py # Search engines
│ ├── client.py # HTTP client
│ └── social/ # Social platform scrapers
├── plugins/ # Plugin system
│ ├── engine/ # Engine plugins
│ ├── search_plugin/# Search plugins
│ └── datasource/ # Datasource plugins
├── ai/ # AI/LLM integration
├── mcp.py # MCP server
├── pro.py # Pro tier system
├── db.py # SQLite database
├── db_postgres.py # PostgreSQL database
└── dashboard.py # Web UI dashboard
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run type checker
mypy jiro/
# Run linter
ruff check jiro/
License
MIT License - see LICENSE for details.
Support
- Documentation: https://jiro.dev/docs
- Issues: https://github.com/DevAnimecx/jiro/issues
- Discord: https://discord.gg/jiro
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jirosearch-0.2.7.tar.gz
(288.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
jirosearch-0.2.7-py3-none-any.whl
(296.0 kB
view details)
File details
Details for the file jirosearch-0.2.7.tar.gz.
File metadata
- Download URL: jirosearch-0.2.7.tar.gz
- Upload date:
- Size: 288.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5069c93b00bb6d8815bbd9a0ca3544b162e03ec2fbc50411362583377d83c7d
|
|
| MD5 |
b62d60fb7a929864a2257b6df9ce7259
|
|
| BLAKE2b-256 |
d3f6e06f9ff3826f043c24e93ce8313fdb6ddbee2cc38fe4f9b4c5893260733e
|
File details
Details for the file jirosearch-0.2.7-py3-none-any.whl.
File metadata
- Download URL: jirosearch-0.2.7-py3-none-any.whl
- Upload date:
- Size: 296.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43d604fbea3b1fb2903d7e00c28e9b79f7b452c516659d20a565b462d67fb45d
|
|
| MD5 |
bf04abc519968e882c0e3158df9f5374
|
|
| BLAKE2b-256 |
b61608718542b7d6a3632c1c27e35a9d5f1a2524ae709bad03ed038e820ee2d2
|