- 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>
249 lines
7.1 KiB
Markdown
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
|