Architecture Diagram & VM Allocation
To accommodate the resource limits of Oracle Cloud Free Tier AMD Micro VMs (1GB RAM each), Search Valley isolates its stack into 4 independent virtual machines connected via a secure private network (e.g. Tailscale or Oracle VCN).
Network Allocation & Port Matrix
+-----------------------------------------------------------------------------------+
| SEARCH VALLEY |
+-----------------------------------------------------------------------------------+
|
+---------------------------------+---------------------------------+
| |
v v
+-----------------------+ +-----------------------+
| VM1: SearXNG | | VM3: Tools API |
| - Engine Scraper | | - Python FastAPI |
| - Port: 8080 | | - Port: 8000 |
+-----------------------+ +-----------------------+
^ ^
| |
v |
+-----------------------+ |
| VM2: Vane Brain | |
| - Node Engine | |
| - Port: 3000 | |
+-----------------------+ |
^ |
| |
v |
+---------------------------------------------------------------------------+
| VM4: Backend Core |
| - TypeScript Hono Server |
| - Postgres DB (Port 5432) & Qdrant DB (Port 6333) |
| - Port: 8001 |
+---------------------------------------------------------------------------+
VM 1: SearXNG (Aggregator)
- Role: Scrapes web search engine search indexes.
- Port:
8080(Internal only, not exposed publicly). - RAM footprint: ~150MB.
VM 2: Vane (AI Answering Brain)
- Role: Standalone semantic answer engine brain.
- Port:
3000(Exposed for alternative frontends). - Image:
itzcrazykns1337/vane:slim-latest.
VM 3: Tools API (Widget Engine)
- Role: Executing specific tools (arithmetic calculation, LaTeX equation resolution, unit conversions, periodic table properties).
- Stack: FastAPI + Python 3.11.
- Port:
8000(Publicly exposed API).
VM 4: Backend Core (Application Core)
- Role: Handles relational data (PostgreSQL), semantic vector storage (Qdrant), session authentication (JWT + OAuth), PDF text parsing, custom LLM streaming fallback chains, and transparent audit logging.
- Stack: Hono TS + PostgreSQL 15 + Qdrant.
- Port:
8001(Publicly exposed API).