Dashboard¶
The web dashboard provides a browser-based interface for monitoring and managing ResearchLoop. It is served by the orchestrator at /dashboard/.
First-run setup¶
On first visit, the dashboard prompts you to set a password. This password is stored as a bcrypt hash in the database.
Alternatively, set the password via an environment variable before starting the server:
Studies page¶
The root dashboard page (/dashboard/) lists all configured studies with:
- Study name and description
- Associated cluster
- Total sprint count
Click a study name to view its detail page.
Study detail¶
The study detail page shows:
- Study configuration (cluster, description, sprints directory, CLAUDE.md path)
- Recent sprints with status
- A form to submit new sprints with optional GPU, memory, and CPU overrides
Sprints page¶
The sprints page (/dashboard/sprints) shows all sprints across all studies with:
- Sprint ID, study, status, idea, and creation time
- A form to submit new sprints (select study, enter idea, optional resource overrides)
Sprint detail¶
The sprint detail page (/dashboard/sprints/{id}) is the most feature-rich view:
Status and metadata¶
- Current status (with color coding for running, completed, failed, cancelled)
- Pipeline step detection (e.g., "running (research)", "running (red_team_round_1)")
- Study name, job ID, directory, timestamps
Live progress¶
During a running sprint, the page displays:
- progress.md -- the researcher's progress log, updated by Claude during the sprint
- Script output -- the last lines of
output.log(training runs, evaluation results) - Tool log -- Claude's tool usage (file edits, bash commands, reads)
- Recent file activity -- files recently modified in the sprint directory
Report¶
After completion, if the sprint generated a report.md or findings.md, it is rendered as HTML with syntax highlighting and table support.
If a report.pdf was generated, a download link is shown.
Actions¶
- Refresh -- pulls the latest status from the cluster via SSH, reads logs, downloads PDF
- Cancel -- cancels the running job on the cluster
- Delete -- removes the sprint from the database
- Resubmit -- creates a new sprint with the same idea
Artifacts¶
Lists all uploaded artifacts with file sizes and download links.
Auto-loops page¶
The loops page (/dashboard/loops) shows all auto-loops with:
- Loop ID, study, status, progress (completed/total), current sprint
- A form to start new loops with study selection, sprint count, optional context, and resource overrides
Loop detail¶
The loop detail page (/dashboard/loops/{id}) shows:
- Loop configuration (study, count, status, context)
- All sprints belonging to the loop with links to their detail pages
- Actions to stop or resume the loop
Refresh mechanism¶
The "Refresh" button on sprint detail pages triggers an SSH connection to the cluster that:
- Checks the real job status via the scheduler (
squeue/qstat) - Reads the SLURM output log
- Reads
sprint_log.txtfor detailed tool usage - Reads
progress.mdandoutput.logfor live progress - Reads
summary.txt,report.md, andfindings.md - Checks for
report.pdfand downloads it if present - Reads
idea.txt(for auto-loop sprints where the idea was generated on the cluster) - Updates the database with all collected information
This works even if webhook delivery failed, providing a reliable fallback for monitoring sprint progress.
Authentication¶
All dashboard pages require authentication. The system supports:
- Password-based login via the
/dashboard/loginpage - Session cookies with signed tokens (7-day expiry)
- CSRF protection on all mutating actions (forms include hidden CSRF tokens)
The signing key is auto-generated on first use and persisted in the database, so sessions survive server restarts.