Cashy / app.py
GitHub Actions
Deploy to HF Spaces
17a78b5
import logging
from src.config import settings
from src.agent.graph import create_agent
from src.ui import create_ui
from langgraph.checkpoint.postgres import PostgresSaver
logging.basicConfig(
level=logging.DEBUG if settings.debug else logging.INFO,
format="%(asctime)s [%(name)-12s] %(levelname)-7s %(message)s",
datefmt="%H:%M:%S",
)
# Quiet noisy third-party loggers
for name in ("httpx", "httpcore", "urllib3", "hf_transfer", "gradio", "uvicorn",
"openai", "anthropic", "google", "google.auth", "google.generativeai",
"matplotlib", "psycopg", "psycopg.pool"):
logging.getLogger(name).setLevel(logging.WARNING)
logger = logging.getLogger("cashy.main")
def main():
provider = settings.resolved_provider
model_name = settings.model_name or "default"
logger.info("Mode: %s", settings.app_mode)
if provider:
logger.info("LLM: %s (%s)", provider, model_name)
else:
logger.warning("LLM: No API key configured — user must provide one via UI")
logger.info("Database: %s@%s:%s", settings.resolved_db_name, settings.db_host[:8] + "...", settings.db_port)
with PostgresSaver.from_conn_string(settings.database_url) as checkpointer:
checkpointer.setup()
logger.info("Checkpoint tables ready")
agent = create_agent(checkpointer=checkpointer)
logger.info("Agent graph compiled")
demo, theme = create_ui(agent)
logger.info("Launching Gradio on http://localhost:7860")
demo.launch(server_name="0.0.0.0", server_port=7860, theme=theme)
if __name__ == "__main__":
main()