File size: 2,674 Bytes
978fed5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# SciDER Streamlit Interface

Web UI for running SciDER research workflows with real-time progress and interactive approval.

## Quick Start

From the project root:

```bash
bash streamlit-client/run.sh
```

Or manually:

```bash
uv sync --extra streamlit
uv run python -m streamlit run streamlit-client/app.py --server.port 7860
```

Open http://localhost:7860 in your browser.

## First-Time Setup

On first launch, a settings page will appear. Configure:

- **Model Provider** (Gemini / OpenAI) and API key (required)
- **Anthropic API Key** (optional β€” for Claude coding agent)
- **OpenAI API Key for Embeddings** (optional β€” enables memory features)
- **Per-role model assignments** (which model to use for each agent role)

Settings (including API keys) are stored in the browser's localStorage and never saved on the server.

## Workflows

| Workflow | Description |
|----------|-------------|
| **Ideation** | Generate research ideas from literature review |
| **Data Analysis** | Analyze data files, search related papers, produce insights |
| **Experiment** | Generate code, execute experiments, iterate with revisions |
| **Full Workflow** | Chain ideation β†’ data analysis β†’ experiment |

## User Approval

When `USER_APPROVAL_ENABLED=true` (default), the UI pauses at key checkpoints for user review:

- **Approve** β€” continue to next step
- **Reject** β€” retry the current step
- **Feedback** β€” provide guidance and retry

For ideation, users can also select a specific research idea to pass to the experiment agent.

## Docker

From the project root:

```bash
docker compose up --build
```

## File Structure

```
streamlit-client/
β”œβ”€β”€ app.py                  # Main entry point
β”œβ”€β”€ settings.py             # Persistent settings (browser localStorage)
β”œβ”€β”€ utils.py                # Shared utilities (upload, chat history)
β”œβ”€β”€ forms/                  # Workflow form UIs
β”‚   β”œβ”€β”€ ideation.py
β”‚   β”œβ”€β”€ data.py
β”‚   β”œβ”€β”€ experiment.py
β”‚   β”œβ”€β”€ full.py
β”‚   └── settings.py         # Settings form
β”œβ”€β”€ components/
β”‚   └── display.py          # Approval UI, rendering helpers
β”œβ”€β”€ workflow/
β”‚   β”œβ”€β”€ approval.py         # StreamlitApprovalHandler
β”‚   β”œβ”€β”€ runner.py            # Background thread executor
β”‚   β”œβ”€β”€ monitor.py           # Progress tracking
β”‚   β”œβ”€β”€ node_monitor.py      # Node-level monitoring
β”‚   └── observable_list.py
β”œβ”€β”€ log_utils/
β”‚   └── handler.py           # Loguru β†’ Streamlit bridge
β”œβ”€β”€ run.sh / run.bat         # Launch scripts
└── case-study-memory/       # Saved chat histories
```