Modern Blockchain Protocol Monitoring and Analysis Platform
Protocol Tracker is a comprehensive blockchain protocol monitoring system that automatically tracks protocol updates, provides AI-powered analysis, and delivers intelligent insights about hard forks, breaking changes, and security updates across multiple blockchain protocols.
- Automated GitHub Tracking: Monitor multiple blockchain protocols through their GitHub repositories
- Release & Tag Detection: Automatically fetch new releases and tags from configured repositories
- Real-time Updates: Background polling service continuously monitors for new protocol updates
- Client-Protocol Mapping: Track multiple implementations (clients) for each protocol
- Multi-Provider AI Support: OpenAI (GPT-5), Anthropic (Claude-4), and Local LLMs via Ollama
- Intelligent Release Analysis: Automatic summarization of release notes and changelogs
- Hard Fork Detection: Advanced pattern matching to identify critical network upgrades
- Breaking Change Identification: Automatic detection of backwards incompatible changes
- Security Update Flagging: Intelligent identification of security-related patches
- Risk Assessment: AI-generated risk analysis for upgrade decisions
- Confidence Scoring: AI confidence levels for analysis accuracy
- Multi-Channel Support: Discord, Slack, Telegram, and generic webhooks
- Selective Notifications: Configure notifications per client/protocol
- Hard Fork Alerts: Priority alerts for critical network upgrades
- Customizable Filters: Filter notifications by update type, priority, or client
- Comprehensive Database: PostgreSQL with optimized indexing for fast queries
- S3 Integration: Optional cloud storage for snapshot data and backups
- API-First Design: RESTful API with OpenAPI/Swagger documentation
- Advanced Filtering: Search and filter updates by date, client, priority, or type
- OAuth Authentication: Google OAuth integration for secure access
- API Key Management: Generate and manage multiple API keys per user
- Role-Based Access: Admin and user roles with appropriate permissions
- User Profiles: Customizable user profiles with preferences
- Protocol Statistics: Track update frequency, hard fork history, and trends
- Visual Dashboards: Interactive charts and graphs for protocol activity
- Historical Analysis: Track protocol evolution over time
- Export Capabilities: Export data for further analysis
- Fast & Modern: Built with FastAPI for high performance and automatic API documentation
- Async Processing: Asynchronous background services for efficient monitoring
- Robust Database: SQLAlchemy ORM with Alembic migrations
- Service Architecture: Modular services for different functionalities
- Modern UI: Built with React 19, TypeScript, and Mantine UI components
- Responsive Design: Mobile-friendly interface with dark/light theme support
- Real-time Updates: Live updates using React Query for optimal user experience
- Type Safety: Full TypeScript implementation for robust development
- Containerized: Docker and Docker Compose for easy deployment
- Scalable: Designed for horizontal scaling and cloud deployment
- Monitoring: Built-in logging and error tracking
- Background Processing: Asynchronous task processing for heavy operations
- Docker and Docker Compose
- Git
- (Optional) Google OAuth credentials for authentication
-
Clone the Repository
git clone <repository-url> cd proto-tracker
-
Set Up Environment Variables
# Create .env file in project root cp .env.example .env # Edit .env with your configuration vim .env
Required environment variables:
# Google OAuth (for authentication) VITE_GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret VITE_GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback # API Configuration VITE_API_URL=http://localhost:8001 # AI Configuration (optional) OPENAI_API_KEY=your_openai_api_key (can be defined later in the admin panel) ANTHROPIC_API_KEY=your_anthropic_api_key (can be defined later in the admin panel)
-
Start the Application
docker compose up --build
-
Access the Application
- Web Interface: http://localhost:3000
- API Documentation: http://localhost:8001/docs
- API Base URL: http://localhost:8001
- Sign in using Google OAuth
- Configure AI (Settings β AI Settings) - Optional but recommended
- Add GitHub API Key (Settings β GitHub Integration)
- Add Protocols/Clients (Clients page)
- Start Background Polling (Admin β Update Poller)
- Navigate to Clients page
- Click "Add New Client"
- Fill in the form:
- Name: Human-readable name (e.g., "Ethereum")
- Client: Technical identifier (e.g., "geth")
- GitHub URL: Repository URL (e.g., "https://github.com/ethereum/go-ethereum")
- Repository Type: Choose "releases" or "tags"
- Save the client
- Go to Settings β AI Settings
- Enable AI Analysis
- Choose your preferred provider:
- OpenAI: Requires API key, uses GPT-5
- Anthropic: Requires API key, uses Claude-4
- Local: Uses Ollama (free, requires local setup)
- Configure model and timeout settings
- Test the configuration
- Navigate to Settings β Notifications
- Enable desired notification channels
- Configure webhook URLs and credentials
- Set notification preferences per client
- Test notifications
- Go to Admin β Update Poller
- Set your GitHub API key
- Configure polling interval (default: 5 minutes)
- Start the background poller
- Monitor status and recent results
proto-tracker/
βββ api/ # FastAPI Backend
β βββ main.py # API entry point
β βββ models.py # Database models
β βββ crud.py # Database operations
β βββ schemas.py # Pydantic schemas
β βββ services/ # Business logic services
β β βββ ai_service.py # AI analysis
β β βββ background_poller.py # GitHub monitoring
β β βββ github_service.py # GitHub API integration
β β βββ notification_service.py # Notifications
β βββ utils/ # Utilities and migrations
βββ web/ # React Frontend
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ services/ # API client services
β β βββ hooks/ # Custom React hooks
β β βββ contexts/ # React contexts
β β βββ types/ # TypeScript type definitions
β βββ package.json # Node.js dependencies
β βββ vite.config.ts # Vite configuration
βββ docker-compose.yml # Container orchestration
Backend Development:
cd api
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8001Frontend Development:
cd web
npm install
npm run devDatabase Migrations:
cd api
alembic upgrade head # Apply migrations
alembic revision --autogenerate # Generate new migrationProtocol Tracker requires Google OAuth for authentication. To set up local development, you will need to create a Google OAuth client ID and secret. Follow the instructions in the Google OAuth documentation to create a client ID and secret.
Or alternatively you can set the env variables VITE_DEV_MODE=true and DEV_MODE=true in the .env file which will disable authentication and allow you to use the application without a Google account. This setting is NOT recommended for production use.
The API provides comprehensive OpenAPI documentation:
- Interactive Docs: http://localhost:8001/docs
- ReDoc: http://localhost:8001/redoc
Key API endpoints:
GET /protocols- List all protocolsGET /protocol-updates- List protocol updatesPOST /admin/poller/poll-now- Manual poll triggerGET /ai/analysis/{update_id}- Get AI analysisPOST /ai/analyze- Trigger AI analysis
OpenAI (Recommended)
- Sign up at OpenAI
- Create API key
- Supports GPT-5 and GPT-4 models
- Best for accuracy and reliability
Anthropic Claude
- Sign up at Anthropic
- Create API key
- Uses Claude-4 Sonnet model
- Good alternative to OpenAI
Local LLMs (Ollama)
- Install Ollama
- Pull models:
ollama pull llama2 - No API key required
- Runs completely offline
- Create a GitHub Personal Access Token
- Required scopes:
public_repo(for public repositories) - Add the token in Settings β GitHub Integration
- Configure polling interval (recommend 5-60 minutes)
Discord
- Create webhook in Discord server settings
- Copy webhook URL to notification settings
Slack
- Create Slack app with incoming webhooks
- Copy webhook URL to notification settings
Telegram
- Create bot via @BotFather
- Get bot token and chat IDs
- Configure in notification settings
The AI system uses advanced pattern matching to identify hard forks:
- Keyword detection ("hard fork", "consensus change", "protocol upgrade")
- Network upgrade names (Ethereum: "Shanghai", "Dencun", etc.)
- EIP implementation tracking
- Activation block/date extraction
- Coordination requirement assessment
- Summary Generation: Concise overview of each release
- Change Classification: Categorize changes by type and impact
- Priority Assessment: Automatic priority ranking (Critical/High/Medium/Low)
- Risk Analysis: Upgrade vs. non-upgrade risk assessment
- Impact Estimation: Who is affected (developers, node operators, end users)
- Technical & Executive Summaries: Tailored content for different audiences
- Intelligent Polling: Only recent updates get AI analysis
- Rate Limiting: Prevents API overuse with configurable limits
- Error Handling: Robust error recovery and logging
- Manual Override: Force immediate polling when needed
- Status Monitoring: Real-time status of background services
Connection Refused Errors
- Ensure all services are running:
docker compose ps - Check logs:
docker compose logs proto-api
AI Analysis Not Working
- Verify API keys in Settings β AI Settings
- Test configuration using "Test Configuration" button
- Check API provider quotas and billing
GitHub Polling Issues
- Verify GitHub API key has correct permissions
- Check rate limits (5000 requests/hour for authenticated requests)
- Ensure repository URLs are public and accessible
Database Issues
- Reset database:
docker compose down -v && docker compose up --build - Check migrations:
docker compose exec proto-api alembic current
- Increase polling interval for large numbers of repositories
- Limit AI analysis to recent updates only
- Use local LLMs for high-volume deployments
- Configure appropriate timeouts for your environment
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes with proper tests
- Follow code style: Run
npm run lintandnpm run format - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- Python: Follow PEP 8, use Black formatter
- TypeScript: Use ESLint and Prettier configurations
- Git: Use conventional commits format
This project is licensed under GPL v3 License - see the LICENSE file for details.
For support and questions:
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: API docs available at
/docsendpoint
- Multi-Network Support: Cross-chain protocol tracking
- Advanced Analytics: Machine learning trend analysis
- Mobile App: Native mobile applications
- Custom Integrations: Webhook system for third-party tools
- Historical Data: Deep historical analysis and trends
- Alert Automation: Smart alerting based on AI analysis
- AI-powered release analysis
- Hard fork detection system
- Multi-provider AI support
- Background polling optimization
- Modern React frontend
- Comprehensive notification system
Protocol Tracker - Stay ahead of blockchain protocol changes with intelligent monitoring and AI-powered insights.