""" Aurelius โ€” Wikipedia Rabbit-Hole Navigator Backend Architecture: embeddings + graph search only. No LLM, no external services. Thin entrypoint per architect plan ยง1 โ€” everything else lives in config.py, embedding.py, wiki.py, search.py, server.py. This file keeps only the Windows stdout encoding fix (must run before any import that might log non-ASCII, e.g. the arrow characters in search.py's log lines) and the uvicorn launch. """ import sys # Windows redirects stdout to cp1252 when it's not an interactive console # (e.g. piped to a log file), which raises on the arrow/emoji characters # used in log lines below and would otherwise crash mid-search. try: sys.stdout.reconfigure(encoding="utf-8") sys.stderr.reconfigure(encoding="utf-8") except Exception: pass import os # noqa: E402 from server import app # noqa: E402 (must follow the stdout fix above) if __name__ == "__main__": import uvicorn # Render (and most PaaS hosts) inject a dynamic $PORT and require the # app to bind to it; 8000 is just the local-dev fallback. port = int(os.getenv("PORT", "8000")) print(f"\n๐ŸŒ Aurelius backend โ†’ http://localhost:{port}") print(" Open index.html in your browser\n") uvicorn.run(app, host="0.0.0.0", port=port, log_level="info")