Last Updated: February 11, 2026 Current Version: v4.1.5 Status: Beta / Enabled in GUI
RFlect includes experimental AI-powered features for intelligent antenna analysis. A unified provider abstraction (llm_provider.py) supports OpenAI, Anthropic (Claude), and Ollama (local models), giving users flexibility in choosing a backend.
Status: ~85% Complete
Working Features:
- Real-time conversational analysis of antenna measurements
- Function calling to analyze loaded data
- Rich context awareness (loaded files, frequencies, data shape, key metrics)
- Quick-action buttons (Gain Stats, Pattern, Polarization, All Freqs)
- Multi-turn conversations with history
- Multi-provider support: OpenAI, Anthropic, Ollama
Functions Available:
get_gain_statistics()- Min/max/avg gain calculationsanalyze_pattern()- Pattern characteristics (nulls, beamwidth, F/B ratio)compare_polarizations()- HPOL vs VPOL comparisongenerate_2d_plot()- 2D pattern descriptionsgenerate_3d_plot()- 3D pattern descriptions
Status: ~90% Complete
Working Features:
- Executive summary generation based on measurements
- Automatic gain statistics insertion
- Pattern type classification
- Basic design recommendations
- Vision-capable plot analysis (provider-dependent)
- Uses unified provider abstraction (same providers as chat)
What Needs Work:
- Custom branding integration (partially implemented)
- Multi-frequency comparison tables (missing)
- Automated figure captioning (not integrated with plotting.py)
- Compliance checklist generation (FCC, CE marks - not implemented)
Status: Complete
| Provider | Tool Calling | Vision | Notes |
|---|---|---|---|
| OpenAI | GPT-4 (Chat Completions) + GPT-5 (Responses API) | GPT-4o+ | Default provider |
| Anthropic | Claude Messages API | All Claude models | Via Tools → Manage API Keys |
| Ollama | llama3.1+, qwen2.5+ | llava, llama3.2-vision | Local, no API key needed |
Status: Complete
Working Features:
- Fernet AES-128 encryption with PBKDF2 key derivation (480K iterations)
- Machine-ID based encryption key:
/etc/machine-id(Linux),IOPlatformUUID(macOS),MachineGuid(Windows) replacing MAC-based derivation - OS keyring integration (Windows Credential Manager, macOS Keychain)
- Restrictive file permissions (chmod 600 / Windows ACL)
- Multi-provider tabbed dialog (OpenAI, Anthropic, Ollama)
- Key validation via "Test Connection" button (threaded to prevent GUI freeze)
- Keys stored in
_key_cachedict instead ofos.environ(prevents env pollution) - Legacy base64 auto-migration from v4.0.0
- GUI-based key management (Tools → Manage API Keys)
-
Pattern Analysis
- HPBW and F/B ratio implemented and verified (boundary wrapping fix, IEEE-validated TRP)
- No sidelobe level detection or symmetry analysis
- Pattern classification limited to 3 categories
-
Function Calling Compatibility
- Works with all major model families
- Older Ollama models may have limited tool support
-
Ollama Vision
- Only vision-capable models (llava, llama3.2-vision, gemma3) support plot analysis
- Other Ollama models use text-only mode
plot_antenna/
├── llm_provider.py # Unified provider abstraction (OpenAI, Anthropic, Ollama)
├── ai_analysis.py # Pure analysis logic (GUI-independent)
│ └── AntennaAnalyzer # Reusable analysis class
├── gui/
│ └── ai_chat_mixin.py # AI chat GUI integration
├── save.py # Report generation (uses llm_provider)
└── api_keys.py # Secure key management
rflect-mcp/
├── server.py # FastMCP server
├── tools/
│ ├── import_tools.py # import_antenna_file(), import_antenna_folder(),
│ │ # import_passive_pair(), import_active_processed()
│ ├── analysis_tools.py # Uses ai_analysis.AntennaAnalyzer
│ ├── report_tools.py # generate_report() with YAML template engine
│ └── bulk_tools.py # Batch processing & CST conversion
├── templates/
│ └── default.yaml # Report template definition
├── requirements.txt
└── README.md
Capabilities: AI agents (Claude Code, Cline) can:
- Import antenna data programmatically
- Run analysis via MCP tools (gain stats, pattern, polarization)
- Generate DOCX reports with AI summaries
- Batch process entire measurement folders
- Validate and convert file formats (CST .ffs)
AI features are optional and require one of:
- OpenAI: API key configured via Tools → Manage API Keys
- Anthropic:
ANTHROPIC_API_KEYenvironment variable set - Ollama: Ollama running locally (no API key needed)
Select provider via: Tools → AI Settings
If no provider is configured:
- AI Chat Assistant menu item is hidden
- "Generate Report with AI" falls back to template-only mode
- Core RFlect functionality works normally
OpenAI: GPT-4o-mini (default), GPT-4o, GPT-5-nano, GPT-5-mini, GPT-5.2 Anthropic: Claude Sonnet, Claude Opus Ollama: llama3.1, qwen2.5, mistral, llava (vision), and more
- Complete architecture refactoring (mixin-based GUI)
- Multi-provider AI support (OpenAI, Anthropic, Ollama)
- Secure API key management (Fernet encryption, OS keyring, machine-ID binding)
- AI analysis engine: AntennaAnalyzer with HPBW, F/B ratio, batch analysis
- 11 RF engineering formula fixes (diversity gain, axial ratio, XPD, TRP, HPBW)
- MCP server with 20 tools (import, analysis, report, bulk processing)
- Full GUI dark theme, WCAG AA contrast, keyboard shortcuts
- LLM timeout/retry hardening, provider-aware error messages
- turbo colormap, DPI 300 for saved figures
- 227 tests, 22% code coverage
- Maritime / horizon antenna plots (5 plot types, configurable theta band)
- Horizon TRP, efficiency, and enhanced statistics
- Windows installer overhaul (icon, no console, upgrade handling)
- Non-blocking update checker (background thread)
- Advanced RF analysis suite with 5 new modules:
- Link Budget / Range Estimation (Friis, protocol presets)
- Indoor Propagation (ITU-R P.1238, wall penetration P.2040)
- Multipath Fading (Rayleigh/Rician CDF, Monte-Carlo)
- Enhanced MIMO (capacity curves, combining gain, MEG with XPR)
- Wearable/Medical (body-worn patterns, dense device SINR, SAR screening)
- Smart presets: protocol and environment dropdowns auto-populate parameters
- Scrollable settings dialogs for advanced analysis configuration
- Per-job bulk processing failure reporting
- 450 tests (302 passing), 26% code coverage
- AI datasheet extraction (vision-based parameter extraction from PDF/images)
- Sidelobe detection and reporting
- Automated figure insertion in reports
- Complete branding integration
- Multi-frequency comparison tables
- Enhanced vision integration for all providers
- Simulation vs measurement comparison
- AI-powered anomaly detection
- Integration with electromagnetic simulation tools
# Example: Using AntennaAnalyzer directly
from plot_antenna.ai_analysis import AntennaAnalyzer
data = {
'phi': phi_angles,
'theta': theta_angles,
'total_gain': gain_array,
'h_gain': h_pol_array,
'v_gain': v_pol_array
}
analyzer = AntennaAnalyzer(
measurement_data=data,
scan_type='passive',
frequencies=[2400, 2450, 2500]
)
# Get statistics
stats = analyzer.get_gain_statistics(frequency=2400)
print(f"Max gain: {stats['max_gain_dBi']:.2f} dBi")
# Analyze pattern
pattern = analyzer.analyze_pattern(frequency=2400)
print(f"Pattern type: {pattern['pattern_type']}")
# Compare polarizations
comparison = analyzer.compare_polarizations(frequency=2400)
print(f"XPD: {comparison['avg_xpd_dB']:.1f} dB")- Add function to
AntennaAnalyzerclass inai_analysis.py - Update
ai_chat_mixin.pyto expose function to AI - Add tests to
tests/test_ai_analysis.py - Add MCP wrapper in
rflect-mcp/tools/analysis_tools.py - Update this document with status
See CONTRIBUTING.md for development guidelines.
Issues: https://github.com/RFingAdam/RFlect/issues Discussions: https://github.com/RFingAdam/RFlect/discussions
For AI feature-specific issues, please tag with ai label.
AI-generated analysis and recommendations are provided as guidance only. Always verify results with established RF engineering practices and measurements. RFlect's AI features are experimental and should not be relied upon for critical design decisions without human expert review.