Common questions and troubleshooting for GitLab Issues Analyzer.
An automated tool that analyzes GitLab issues using AI and sends structured email reports using the WWWH-TR framework.
It provides a structured approach to understanding issues:
- W1 β Why: Root cause and goal
- W2 β What: Problem identification
- W3 β Who: Stakeholders
- H β How: Solutions and trade-offs
- T β Test: Quick experiments
- R β Reflect: Best choice and next steps
Yes, designed to use free tiers:
- Free deployment (Docker, local)
- OpenRouter/OpenAI free tiers (check current limits)
- No database or paid services required
Typically 2-5 minutes per issue:
- Issue fetching: < 1 second
- AI analysis: 30-120 seconds
- Email sending: 1-5 seconds
No. The project is stateless. Uses file-based cache (analysis_cache.json) for processed issues.
- Webhook: Real-time, no rate limit concerns, requires public URL
- Polling: Simpler setup, works everywhere, may hit rate limits
Currently supports OpenRouter and OpenAI. The architecture supports adding more providers.
Python 3.9 or higher.
Yes, the system uses the global GitLab issues API endpoint which can return issues from multiple projects. Filter by labels using GITLAB_ISSUE_LABELS.
- GitLab β Settings β Access Tokens
- Create token with
apiscope - Copy token (starts with
glpat-)
- Sign up at openrouter.ai
- Go to API Keys section
- Create new key
- Copy key (starts with
sk-or-)
Yes, but you need an App Password:
- Enable 2FA on Google account
- Generate App Password for "Mail"
- Use the 16-character password (remove spaces)
Yes, use comma-separated list in SMTP_TO_EMAIL:
SMTP_TO_EMAIL=email1@example.com,email2@example.com
Docker/Docker Compose is recommended for easy setup and supports both polling and webhook modes.
- Deploy app and get public URL
- GitLab β Project β Settings β Webhooks
- URL:
https://your-app.com/webhook - Secret: Your webhook secret (set in
GITLAB_WEBHOOK_SECRET) - Trigger: "Issue events"
Yes, just set GITLAB_URL to your instance URL.
Yes, use Docker Compose or run directly with Python. Polling mode works without public URL.
By default, yes. You can filter by labels, scope, etc. using configuration variables.
Currently only processes new issues. Update notifications can be added as enhancement.
The system will retry with exponential backoff (3 attempts). If it fails completely, an error is logged and stored in cache. Check logs and manually review the issue.
Yes, modify src/reporter.py to change email templates.
The system tracks processed issue IDs in analysis_cache.json. Issues are only processed once.
Check all required environment variables are set in your .env file or system environment. See Configuration Guide.
- Verify token is correct
- Check token has
apiscope - Verify GitLab URL is correct
- For Gmail, use App Password (not regular password)
- Check SMTP host and port
- Verify firewall isn't blocking port 587 or 465
- Verify API key is valid (OpenRouter or OpenAI)
- Check API key has credits/balance
- Verify model name is correct (e.g.,
tngtech/deepseek-r1t2-chimera:freefor OpenRouter)
- Check webhook URL is accessible
- Verify secret token matches
- Check GitLab webhook logs
- Ensure "Issue events" trigger is enabled
- Reduce polling frequency (
POLL_INTERVAL) - Use webhook mode instead
- Check API provider rate limits
Check OpenRouter or OpenAI pricing. Free tiers usually have limits. Monitor usage in the provider dashboard.
Are there any hidden costs?
No, if you stay within free tiers:
- Deployment: Free (Docker, local deployment)
- GitLab: Free (API access included)
- SMTP: Free (Gmail/Outlook free tier)
- AI API: Free tier (check OpenRouter/OpenAI limits)
- AI API: Upgrade to paid tier or reduce usage
- Deployment: Some platforms have paid tiers, but free tier usually sufficient
- GitLab: API limits are generous (2000 req/hour)
- Never commit
.envfile to git (it's in.gitignore) - Use environment variables in production
- Use App Passwords (not main passwords)
- Rotate credentials periodically
- Webhook secret token validation
- HTTPS required for production
- Request signature verification (if available)
Never. Use environment variables or secure config files. Never commit to version control.
- Check Configuration Guide for config questions
- Review Deployment Guide for deployment issues
- See API Integration Guide for API details
- Read Architecture Document for system design