This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
- Initial setup:
./setup.sh- Creates virtual environment and installs dependencies - Activate environment:
source venv/bin/activate
- Start FastAPI app:
python app.py(runs on http://localhost:5000) - Alternative:
uvicorn app:app --host 0.0.0.0 --port 5000 --reload(for development)
- Core dependencies in
requirements.txt: fastapi>=0.115.0, uvicorn[standard]>=0.30.0, jinja2>=3.1.2, python-multipart>=0.0.6, requests>=2.31.0, python-dotenv>=1.0.0, mcp>=1.0.0, pydantic>=2.0.0, ollama, anyio>=4.5.0
- FastAPI Web Application (
app.py): Main web server with async REST API endpoints for chat interactions - Chainlet Framework (
chainlet/): Modular conversation management systemcore.py: Base classes for Message, Role enum, and abstract Chainletollama.py: OllamaChainlet implementation for Ollama API integration using official ollama Python clientmcp.py: MCP (Model Context Protocol) infrastructure for external tool integrationmcp_chainlet.py: MCP-enhanced chainlet that extends OllamaChainlet with tool capabilities
- Conversation Management: Each conversation has a unique ID and maintains message history
- Async Architecture: Native async/await support for all I/O operations
- Streaming Support: Both regular and streaming chat responses via
/api/chatand/api/chat/stream - Model Abstraction: Chainlet base class allows for different LLM integrations
- MCP Integration: Model Context Protocol support for external tool access and enhanced capabilities
- Type Safety: Pydantic models for request/response validation
GET /api/models- List available Ollama modelsPOST /api/chat- Send message and get complete responsePOST /api/chat/stream- Send message and stream response chunksDELETE /api/conversations/<id>- Clear conversation history
OLLAMA_BASE_URL: Ollama server URL (default: http://localhost:11434)DEFAULT_MODEL: Default model name (default: llama3)DEFAULT_SYSTEM_PROMPT: Default system prompt for conversations
- Frontend sends chat request to FastAPI endpoint
- Request validated through Pydantic models
- OllamaChainlet manages conversation state and calls Ollama API
- Responses are returned either complete or streamed via async generators
- Conversation history is maintained in memory per conversation ID
- Automatic API Documentation: Available at
/docs(OpenAPI/Swagger UI) - Alternative Docs: Available at
/redoc(ReDoc UI) - Request Validation: Automatic validation via Pydantic models
- Async Support: Native async/await throughout the application
- Type Hints: Full type annotation support