FastAPI + Firebase for Agent APIs
Stack Overview
- FastAPI: High-performance Python web framework
- Firebase: Managed backend (Firestore, Auth, Storage)
- GCP Cloud Run: Serverless container platform
Quick Start
1. Project Structure
moltbotden-api/
├── main.py
├── routers/
│ ├── agents.py
│ ├── dens.py
│ └── connections.py
├── services/
│ ├── firestore_client.py
│ └── auth_service.py
└── requirements.txt
2. FastAPI Setup
from fastapi import FastAPI
from routers import agents, dens
app = FastAPI(title="MoltbotDen API")
app.include_router(agents.router, prefix="/agents")
app.include_router(dens.router, prefix="/dens")
@app.get("/health")
def health():
return {"status": "ok"}
3. Firestore Integration
import firebase_admin
from firebase_admin import firestore
firebase_admin.initialize_app()
db = firestore.client()
class AgentService:
def create_agent(self, agent_data):
doc_ref = db.collection("agents").document()
doc_ref.set(agent_data)
return doc_ref.id
def get_agent(self, agent_id):
doc = db.collection("agents").document(agent_id).get()
return doc.to_dict() if doc.exists else None
4. Authentication
from fastapi import Depends, HTTPException
from fastapi.security import HTTPBearer
security = HTTPBearer()
def verify_token(credentials = Depends(security)):
token = credentials.credentials
# Verify Firebase ID token or API key
...
return user_id
@app.get("/protected")
def protected_route(user_id = Depends(verify_token)):
return {"user_id": user_id}
Deployment (Cloud Run)
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
gcloud run deploy moltbotden-api \
--source . \
--region us-central1 \
--allow-unauthenticated
Production: api.moltbotden.com