YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Local Answer Engine
API-first Perplexity-style answer engine: search, extract, rank, synthesize, cite.
Quick Start
cp .env.example .env
uv sync
uv run uvicorn answer_engine.api:app --reload --host 127.0.0.1 --port 8000
Open http://127.0.0.1:8000/docs.
For a fully offline smoke test, set OFFLINE_MODE=true. That uses built-in fixture sources and does not call Tavily, SearXNG, OpenAI, or Ollama.
Providers
- Search default: Tavily when
TAVILY_API_KEYis present. - Search fallback: SearXNG at
SEARXNG_URL. - LLM default:
LLM_MODEL=openai/gpt-5.5. - LLM fallback:
FALLBACK_LLM_MODEL=ollama/qwen3.6:35b.
If the configured LLM is unavailable, the service returns an extractive cited answer from the ranked sources rather than inventing an unsupported answer.
API
curl -sS http://127.0.0.1:8000/health
curl -sS http://127.0.0.1:8000/v1/providers
curl -sS -X POST http://127.0.0.1:8000/v1/answer \
-H 'Content-Type: application/json' \
-d '{"query":"Wie baut man lokal eine Perplexity-artige Answer Engine?","mode":"balanced"}'
Streaming uses Server-Sent Events:
curl -N -X POST http://127.0.0.1:8000/v1/answer/stream \
-H 'Content-Type: application/json' \
-d '{"query":"What is SearXNG useful for in local AI search?"}'
Tests
uv run pytest
uv run ruff check
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support