Implemented optional authentication to keep strangers out of the Claude OS frontend when deployed to production servers. Backend (FastAPI): - mcp_server/auth.py: JWT-based authentication * Bcrypt password hashing * Environment-based user credentials (no database needed) * 7-day token expiration * Optional - disabled by default - mcp_server/server.py: Auth endpoints * POST /api/auth/login - Returns JWT token * GET /api/auth/me - Get current user * GET /api/auth/status - Check if auth enabled - requirements.txt: Added dependencies * passlib[bcrypt] for password hashing * python-jose[cryptography] for JWT * python-multipart for form data Frontend (React): - frontend/src/lib/auth.tsx: Auth context and hooks * Manages authentication state * Automatic token validation * localStorage for token persistence - frontend/src/pages/Login.tsx: Beautiful login page * Gradient design matching Claude OS branding * Clear error messages * Loading states - frontend/src/components/ProtectedRoute.tsx: Route protection * Automatically redirects to login if not authenticated * Shows loading state during auth check * Bypasses auth if disabled - frontend/src/App.tsx: Integrated auth * Wrapped app in AuthProvider * Protected routes for Welcome and MainApp * Login route for authentication Documentation: - AUTH_SETUP.md: Complete authentication guide * Quick start instructions * Password hash generation * Production deployment steps * Troubleshooting guide - .env.example: Added auth configuration * CLAUDE_OS_EMAIL (login email) * CLAUDE_OS_PASSWORD (dev - plain text) * CLAUDE_OS_PASSWORD_HASH (production - bcrypt hash) * CLAUDE_OS_SECRET_KEY (JWT secret) - docs/PRODUCTION_DEPLOYMENT.md: Added Step 5 * Authentication setup for production * Hash and secret generation commands * Testing instructions Features: ✅ Optional authentication (disabled by default) ✅ Single user via environment variables ✅ Secure bcrypt hashing ✅ JWT tokens with 7-day expiration ✅ Beautiful login UI ✅ No database required for user management Usage: 1. Set CLAUDE_OS_EMAIL and CLAUDE_OS_PASSWORD in .env 2. Restart Claude OS 3. Visit /login to authenticate 4. Token valid for 7 days To disable auth: Remove CLAUDE_OS_EMAIL from .env 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
45 lines
868 B
Text
45 lines
868 B
Text
# LlamaIndex and RAG
|
|
llama-index>=0.10.0
|
|
llama-index-llms-ollama>=0.1.0
|
|
llama-index-embeddings-ollama>=0.1.0
|
|
|
|
# Vector Database (SQLite-based)
|
|
sqlite-vec>=0.1.0
|
|
numpy>=1.24.0
|
|
|
|
# File system watching
|
|
watchdog>=3.0.0
|
|
|
|
# Document Processing
|
|
pymupdf>=1.23.0
|
|
|
|
# Reranking and Hybrid Search
|
|
sentence-transformers>=2.2.0
|
|
rank-bm25>=0.2.2
|
|
|
|
# MCP Server
|
|
mcp>=1.0.0
|
|
fastapi>=0.104.0
|
|
uvicorn>=0.24.0
|
|
pydantic>=2.0.0
|
|
|
|
# Authentication
|
|
passlib[bcrypt]>=1.7.4
|
|
python-jose[cryptography]>=3.3.0
|
|
python-multipart>=0.0.6
|
|
|
|
# Utilities
|
|
python-dotenv>=1.0.0
|
|
requests>=2.31.0
|
|
|
|
# Real-time Learning System
|
|
redis>=5.0.0 # Redis client for pub/sub and caching
|
|
rq>=1.14.0 # Job queue (Python equivalent of Sidekiq)
|
|
|
|
# Testing
|
|
pytest>=7.4.0
|
|
pytest-asyncio>=0.21.0
|
|
pytest-cov>=4.1.0
|
|
pytest-mock>=3.12.0
|
|
httpx>=0.25.0 # For testing FastAPI endpoints
|
|
faker>=20.0.0 # For generating test data
|