Files
Antoine 9eed4d81eb feat: Add Claude Code terminal integration to dashboard
- Add embedded Claude Code terminal with xterm.js for full CLI experience
- Create WebSocket PTY backend for real-time terminal communication
- Add terminal status endpoint to check CLI availability
- Update dashboard to use Claude Code terminal instead of API chat
- Add optimization control panel with start/stop/validate actions
- Add study context provider for global state management
- Update frontend with new dependencies (xterm.js addons)
- Comprehensive README documentation for all new features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 15:02:13 -05:00

249 lines
7.1 KiB
Markdown

# Atomizer Dashboard
Real-time optimization monitoring and control dashboard for the Atomizer optimization engine.
## Features
### Core Dashboard
- **Real-time WebSocket streaming** - Instant updates on new trials
- **Interactive charts** - Convergence, Pareto front, parallel coordinates, parameter importance
- **Chart library toggle** - Switch between Plotly (interactive) and Recharts (fast)
- **Pruning alerts** - Toast notifications for failed trials
- **Data export** - Download trial history as JSON or CSV
- **Study discovery** - Automatically detects all active studies
- **Connection monitoring** - WebSocket status indicator
### Optimization Control
- **Start/Kill optimization** - Launch or force-kill optimization processes
- **Validate top N** - Run FEA validation on best neural network predictions
- **Process monitoring** - Real-time status of running optimizations
- **Console output** - Live logs from optimization process
### Claude Code Integration
- **Embedded terminal** - Full Claude Code CLI in the dashboard
- **Context-aware** - Automatically loads CLAUDE.md and .claude/ skills
- **WebSocket PTY** - Real terminal emulation with xterm.js
### Study Reports
- **Markdown viewer** - View study README and reports
- **Auto-generated reports** - Generate OPTIMIZATION_REPORT.md
---
## Quick Start
### 1. Install Backend Dependencies
```bash
cd atomizer-dashboard/backend
pip install -r requirements.txt
```
### 2. Install Frontend Dependencies
```bash
cd atomizer-dashboard/frontend
npm install
```
### 3. Start the Backend
```bash
# From backend directory
python -m uvicorn api.main:app --reload --host 0.0.0.0 --port 8000
```
### 4. Start the Frontend
```bash
# From frontend directory
npm run dev
```
### 5. Access the Dashboard
- **Frontend**: http://localhost:5173
- **API docs**: http://localhost:8000/docs
---
## Architecture
### Backend Stack
- **FastAPI** - Modern async Python web framework
- **Uvicorn** - ASGI server
- **WebSockets** - Real-time communication
- **psutil** - Process management
### Frontend Stack
- **React 18** + **Vite** + **TypeScript**
- **TailwindCSS** - Utility-first CSS
- **Recharts** / **Plotly** - Charting libraries
- **xterm.js** - Terminal emulator
- **React Query** - Server state management
---
## File Structure
```
atomizer-dashboard/
├── backend/
│ ├── api/
│ │ ├── main.py # FastAPI app entry
│ │ ├── routes/
│ │ │ ├── optimization.py # Study REST endpoints
│ │ │ ├── claude.py # Claude chat API (legacy)
│ │ │ └── terminal.py # Claude Code terminal WebSocket
│ │ ├── services/
│ │ │ └── claude_agent.py # Anthropic API agent (legacy)
│ │ └── websocket/
│ │ └── optimization_stream.py # Real-time trial streaming
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── ClaudeTerminal.tsx # Claude Code terminal
│ │ │ ├── ConsoleOutput.tsx # Optimization logs
│ │ │ ├── StudyReportViewer.tsx # Markdown report viewer
│ │ │ ├── dashboard/
│ │ │ │ ├── ControlPanel.tsx # Start/Stop/Validate
│ │ │ │ └── MetricCard.tsx
│ │ │ └── plotly/ # Plotly chart components
│ │ ├── pages/
│ │ │ ├── Home.tsx # Study selection
│ │ │ └── Dashboard.tsx # Main monitoring view
│ │ └── context/
│ │ └── StudyContext.tsx # Global study state
│ └── package.json
└── README.md (this file)
```
---
## API Documentation
### REST Endpoints
#### Studies
- `GET /api/optimization/studies` - List all studies
- `GET /api/optimization/studies/{id}/status` - Get study status
- `GET /api/optimization/studies/{id}/history` - Get trial history
- `GET /api/optimization/studies/{id}/config` - Get optimization config
- `GET /api/optimization/studies/{id}/readme` - Get study README
- `GET /api/optimization/studies/{id}/report` - Get generated report
- `GET /api/optimization/studies/{id}/console` - Get console output
- `GET /api/optimization/studies/{id}/process` - Get process status
- `GET /api/optimization/studies/{id}/metadata` - Get study metadata
- `GET /api/optimization/studies/{id}/pareto-front` - Get Pareto front
#### Control
- `POST /api/optimization/studies/{id}/start` - Start optimization
- `POST /api/optimization/studies/{id}/stop` - Kill optimization process
- `POST /api/optimization/studies/{id}/validate` - Validate top N predictions
- `POST /api/optimization/studies/{id}/report/generate` - Generate report
- `POST /api/optimization/studies/{id}/optuna-dashboard` - Launch Optuna dashboard
#### Claude Code
- `GET /api/terminal/status` - Check Claude CLI availability
- `WebSocket /api/terminal/claude` - Terminal session
### WebSocket Endpoints
- `ws://localhost:8000/api/ws/optimization/{study_id}` - Trial stream
- `ws://localhost:8000/api/terminal/claude` - Claude Code terminal
---
## Claude Code Terminal
The dashboard includes an embedded Claude Code terminal that provides the full CLI experience:
### Features
- Real terminal emulation with xterm.js
- WebSocket-based PTY communication
- Automatic context loading (CLAUDE.md, .claude/skills/)
- Expand/minimize mode
### Requirements
- Claude Code CLI installed: `npm install -g @anthropic-ai/claude-code`
- Authenticated with Claude Code
### Usage
1. Click "Claude Code" button in dashboard header
2. Click "Connect" to start a session
3. Claude starts in Atomizer root with full context
4. Use all Claude Code features (tools, file editing, etc.)
---
## Control Panel
### Start Optimization
Launches `run_optimization.py` with configurable options:
- Max iterations
- FEA batch size
- Tuning trials
- Ensemble size
- Patience
- Fresh start option
### Kill Process
Force-kills the optimization process and all child processes:
- Gets child processes before killing parent
- Kills children bottom-up
- Uses SIGKILL for immediate termination
### Validate Top N
Runs FEA validation on the best N neural network predictions to verify accuracy.
---
## Troubleshooting
### Dashboard shows "Failed to fetch"
- Ensure backend is running: `http://localhost:8000/health`
- Check CORS settings in `backend/api/main.py`
### Claude Code terminal not connecting
- Verify Claude CLI is installed: `claude --version`
- Check that you're authenticated with Claude Code
- Look for errors in browser console
### Charts not updating
- Check WebSocket connection status
- Verify optimization is running
- Check backend console for errors
### Process won't stop
- Use "Kill Process" button (force kill)
- Check Task Manager for orphaned processes
---
## Development
### Running Tests
```bash
# Backend
cd backend
pytest
# Frontend
cd frontend
npm run test
```
### Building for Production
```bash
# Frontend
cd frontend
npm run build
```
### Type Checking
```bash
cd frontend
npx tsc --noEmit
```
---
**Status**: Full React dashboard with Claude Code integration