File size: 18,433 Bytes
3eea00b e0265b9 3eea00b e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 3eea00b e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 c61c435 e0265b9 3eea00b c61c435 3eea00b c61c435 | 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 | ---
license: mit
tags:
- desktop-application
- ai-tools
- dataset-management
- lora-training
- windows
---
# ADAM — AI Development and Automation Manager
ADAM is a local, safety-first desktop hub for orchestrating AI project tools.
It includes registered dataset, DDPM, and SDXL LoRA workflows with background
planning, approval gates, progress reporting, and persistent asset history.

Dataset preparation, captioning, and preview placeholders remain clearly marked
as demo tools. The connected Dataset Collector, DDPM trainer, and Local SDXL
LoRA Trainer use real adapters and never fall back to simulated training.
Existing program folders can be connected from **Settings → Tool folders**.
ADAM stores only the path and scans for likely entry points; it does not copy or
modify the external project. Folder assignments can also be pasted into chat:
```text
DDPM Trainer: D:\AI\DDPM
Flow Matching Trainer: D:\AI\FlowMatchImageGenerator
```
On a new computer, install `requirements.txt` in your chosen Python environment
before running `Launch ADAM.bat`. The launcher checks desktop dependencies and
does not install packages automatically or depend on the developer's personal
trainer folders. Install each optional trainer's dependencies according to that
tool's setup instructions before using its ADAM workflow.
Remote access is disabled by default. Devices with an access token can browse
datasets, edit captions/review marks and submit work. Only enable it for trusted
devices. The desktop **Allow remote job controls and approval changes** setting
also permits remote confirmation, stopping and retrying jobs. A remote browser
can enable training auto-approval only after that desktop permission is granted;
it can always turn auto-approval off. Saved token changes and disabled access
take effect for new requests without restarting the server.
Use private Tailscale access for connections beyond a trusted local network;
the built-in HTTP listener does not provide transport encryption by itself.
Phone URLs and QR codes contain the access token and should be treated as
credentials. Remote commands require JSON, have bounded request sizes and
connection counts, and reject cross-site browser submissions. These controls
do not sandbox installed Python plugins or connected trainers: install only
code you trust.
Detection does not automatically authorize training. A real training adapter
remains gated until its dataset, model name, run settings, and output location
are explicit.
## Training agents

ADAM's training lifecycle is divided into four explainable responsibilities:
- **EVE** reviews dataset membership and leaves uncertain images for the user.
- **ORION** reviews planned epochs, batch size, resolution, image exposures, and
estimated optimizer steps. He can require approval but never silently changes
the requested settings. In the Model Creation Assistant, **ORION: apply a
starting recipe** fills a conservative, editable draft from the image count
and selected resolution before a plan is built.
- **ATLAS** watches active training for non-finite loss, sustained critical GPU
temperature, critically low disk space, stalls, and large runtime overruns.
Critical conditions pause the trainer process tree so the user can inspect it.
- **NOVA** examines available post-training previews and samples for unreadable
files and exact-looking duplicate collapse. Her report explicitly separates
technical sample health from subjective or subject-quality review.
ORION, ATLAS, and NOVA reports are stored with each durable job record and are
shown in Current Plan, Active Job, and Jobs / History respectively. ATLAS's
default thresholds can be overridden in `config/settings.json` with the
`atlas_*` settings defined in `adam/config.py`.
Every new job passes through the shared preflight and ORION review before its
queue state is chosen. Desktop plans, Remote prompts, and Remote training forms
use the same review. Remote training auto-approval still applies to ordinary
plans, but an ORION warning leaves the job awaiting explicit approval. Reviewing
a plan does not change the requested training settings.
## Real image collection
When a valid Dataset Collector folder is connected, the `dataset_collector`
registry entry uses ADAM's real visible-browser adapter. After plan approval it:
- opens Bing Images in a normal visible Chrome window;
- waits when consent/CAPTCHA/human-verification text is detected;
- resumes automatically after the user resolves the page;
- downloads valid images at least 256×256;
- removes exact duplicate downloads;
- writes a matching `.txt` caption beside every image; and
- records URLs, captions, sources, and dimensions in `metadata.csv`.
No CAPTCHA or website restriction is bypassed. Closing Chrome or stopping the
job ends collection safely. A new timestamped dataset folder is used rather
than overwriting an existing collection.
ADAM keeps an incomplete DDPM request in conversation memory. A follow-up such
as `dataset folder Mario, model name Mario V2, epoch count 100, output D:\Runs`
fills the pending fields and validates named datasets against the connected
collector. It will not start if the dataset cannot be found.
## Showcase videos
The **Showcase Video** workspace creates a finished MP4 directly from completed
DDPM and Flow Matching models. Select and reorder the models, choose 12–24
images per model, a 3-, 4-, or 5-second image duration, shared steps and aspect
ratio, provider-compatible samplers, seed, and 720p or 1080p output. ADAM runs
the image batches sequentially and then renders a request-list interface that
tracks the active model, image number, trainer, steps, sampler, and aspect ratio.
LoRA models are intentionally excluded from this streamlined workflow.
When Ollama is reachable, messages that are not workflow commands receive a
short conversational answer. Ollama may explain or plan, but it still cannot
bypass the registry or confirmation gates.
## Web search in Chat Mode
Chat Mode can give local Ollama current web context without an API key. Enable
it in **Settings → Planning model**, then ask naturally, for example:
```text
Search the web for Dandy's World character ideas.
What are the latest Ollama release notes?
Look up a reference for a cyberpunk city character.
```
ADAM sends only that search query to Bing's public results feed, reads the
result titles and snippets,
and passes up to five titles, snippets, and links to Ollama. It does not open
the result pages, download anything, or let web content run tools. Results are
untrusted reference material, so ADAM is instructed to cite the links and flag
uncertainty. Disable the setting to keep Chat Mode fully local.
When you explicitly ask ADAM to **read**, **open**, or **research** result links,
it can read up to three public HTML/text pages and give Ollama short extracts.
For example: `Search the web for Undertale character ideas and read the most
relevant links.` Direct links can be read with `Read https://example.com/ and
summarize it.` Private/local addresses, non-web protocols, oversized pages,
downloads, and more than three pages are blocked. This control can be disabled
in Settings.
Planning runs away from the interface thread, and conversational Ollama output
is streamed into the chat. ADAM validates training commands against a strict
schema and each registered trainer's declared capabilities before offering a
job.
In **Settings → Planning model**, **Chat response length** sets the maximum
number of generated tokens for a Chat Mode reply. Higher values allow longer
research summaries but use more time and GPU memory. The default is 1,024,
which gives Qwen3 enough room to reason and still produce a visible response.
ADAM stores friendly dataset/model names, paths, trainer types, epochs, and
resume checkpoints in `data/assets.json`. Requests such as:
```text
From the Mario dataset, train it on a DDPM for 300 epochs.
With the Mario dataset, train it on a LoRA for 100 epochs.
Continue the Mario model from the DDPM for 50 epochs.
```
are resolved to real paths before approval. Continuation is offered only when a
compatible checkpoint exists. New DDPM runs retain the latest resume checkpoint.
## Run
```powershell
python main.py
```
On Windows, you can also double-click `Launch ADAM.bat`.
The app requires Python 3.10+ and PySide6. Optional integrations use `psutil`
for system information and `pynvml` for NVIDIA GPU information.
```powershell
python -m pip install -r requirements.txt
```
Try:
- Click **Create a model…** in Trainer Mode for the guided Model Creation Assistant.
- `Adam, train a LoRA of Hatsune Miku`
- `Adam, collect a dataset of liminal spaces`
- `Adam, generate previews`
- `Adam, check GPU status`
- `From the Mario dataset, train it on a DDPM for 300 epochs`
- `With the Mario dataset, train it on a LoRA for 100 epochs`
Training and large collection plans are never started until you approve the
plan. All actions are recorded in `logs/adam.log`, while project artifacts live
under `data/projects/`.
The Model Creation Assistant can start from a built-in Character LoRA, Style
LoRA, DDPM, or Flow Matching preset. It can create a dataset or select a
registered one, recommends starting values, and saves personal presets. The
result still goes through ADAM's normal validated planner and approval gate.
Use **+ Add model** to build a multi-model training batch. Each wide model tab
keeps its own dataset, trainer, name, and settings; the minus button removes an
unwanted model, and tabs can be dragged to change the run order. ADAM validates
all models, presents one combined approval plan, and runs them sequentially so
only one training workflow uses the GPU at a time. A failed step stops the batch
before a later model starts.
Before approval, ADAM adds checks for connected tools, dataset contents, the
LoRA base model, and output-drive free space. Completed dataset and training
jobs also include a suggested next step.
### Model Batch Builder
Use **Create model batch…** to paste one requested subject per line. ADAM turns
the list into editable model tabs, removes duplicate names, and lets the current
trainer recipe be applied to any multi-selection of models. The batch is saved
as a draft so it can be closed and resumed later.
For a review-first workflow, choose **Collect missing datasets first**. This
queues only sequential dataset collection and leaves training in the saved
draft. After collection, reopen the draft, use **Find collected datasets**, and
review each dataset in Training Studio. **Exclude rejected** moves rejected
images out of the training folder into a recoverable quarantine, and **Restore
excluded** reverses it. **Keep all images** marks the whole selected dataset as
accepted in one action, after which individual bad images can still be rejected.
Training remains locked until each model is explicitly
marked as reviewed and ready. If every linked dataset is acceptable as-is,
**Approve all datasets** marks the entire batch ready after one confirmation;
it does not inspect individual images or apply pending rejection decisions.
Completed Flow Matching models can be selected in **Fine-tune**. ADAM uses the
saved Flow model folder as the continuation source, locks the continuation to
the model's original resolution, and writes the fine-tuned result to a new
output folder. This continues the saved weights while starting a fresh optimizer
and learning-rate schedule; it does not overwrite the original model.
## Training Studio
The **Training Studio** turns completed work into a reviewable experiment loop:
- **Datasets** provides an image gallery, keep/reject decisions, caption editing,
exact duplicate detection, and visually similar duplicate candidates.
- **Experiments** compares job settings and outcomes, opens outputs, marks a
preferred model, and converts successful settings into reusable recipes.
- **Checkpoint Lab** browses model checkpoints and output images, records
consistent prompt/seed evaluations, and sends preview requests through the
normal approval-aware planner.
- **Recipes** preserves training starting points and can import or export
portable JSON recipe files.
### EVE AI Dataset Review
In Training Studio → Datasets, **EVE AI Review…** performs a local reference-
guided visual review. Add one or more good reference images and optional bad
references, then choose Keep and Reject confidence thresholds. EVE uses a small
DINOv2 vision model to divide the selected dataset into **Keep**, **Reject**, and
**Uncertain** galleries with confidence scores. The model is downloaded once on
first use and subsequent analysis stays local.
Nothing is applied automatically. Inspect both sides, double-click images for a
full view, and move selected results between the three groups before choosing
**Apply EVE review**. EVE's decisions remain ordinary Training Studio review
marks: they can be manually changed, and rejected files are not moved until
**Exclude rejected** is selected. The latest proposal is also saved under
`data/eve_reviews/` for auditing. Use **Select all in current group** (or
Ctrl/Shift selection) to move many images at once; EVE transfers only the
chosen thumbnails so manual sorting stays responsive on large datasets.
Training panels show elapsed time, a progress-based ETA, recent logs, and a
loss sparkline when the connected trainer reports `loss`. Preflight summaries
include clearly labelled workload, duration, VRAM, and disk estimates. These
estimates are planning hints rather than hardware guarantees.
Create a Model also supports live training previews with a configurable
epoch interval, prompt, and reproducible seed for each model tab. While a
training job is active, its newest 256×256 preview appears in the right sidebar
with the source epoch and next scheduled preview. The full-size trainer output
can be opened from the card. Built-in adapters may publish previews directly;
registered DDPM, Flow, LoRA, APVD, MaskGit, and other trainers can also
participate by writing conventionally named `preview`, `sample`, or `epoch`
images beneath their declared output folder.
## Generations
The **Generations** workspace runs compatible registered image generators
without opening their separate desktop interfaces. The connected DDPM and Flow
Matching projects can generate from completed models with a reproducible seed,
sampler or ODE method, step count, image count, and aspect ratio. Generation
work uses the normal ADAM job queue, progress reporting, cancellation, and
logging.
Every completed batch is stored under `data/generations/` with its images and a
`generation.json` sidecar. The history gallery can open an image or batch folder
and restore the exact settings for another run. DDPM creative notes are stored
with a batch for organization; they are not presented as text conditioning for
an unconditional DDPM model.
Generation history opens as automatic model folders. Each folder uses the
registered model name and a recent generated image as its cover. Double-clicking
a folder filters history to that model and selects its provider and model in the
generation controls, so the next batch is generated into the same existing model
directory. This view does not move or rewrite older generation files.
**Generation Cycle…** selects multiple compatible completed models and queues
one generation step per model. Choose images per model, a shared prompt or
creative note, starting seed, slideshow duration, looping, fullscreen playback,
and an optional model/trainer label. When the cycle finishes, ADAM opens the
results as a local slideshow while preserving every ordinary generation record
in history.
If ADAM discovers a job interrupted by an unexpected shutdown, it offers to
open Jobs & History. The previous record remains intact and can be retried as a
new approval-gated job. Job logs can also be exported for troubleshooting.
## Connect an existing tool
ADAM supports importable Python functions and command-line Python scripts.
For a no-code setup, open **Settings → External Tools → Add external tool**.
Choose the program folder, select its training entry script and important
configuration files, then review ADAM's static compatibility and safety report.
The report covers:
- detected command-line options and required inputs;
- likely dataset formats;
- output and checkpoint behavior;
- progress reporting;
- resume-training support; and
- potentially risky operations visible in the selected entry script.
The 1–10 rating measures how clearly the script fits ADAM's safe command-line
contract. It is not a guarantee that third-party code is harmless. ADAM does
not execute a script while scanning it, external tools cannot replace built-in
registry entries, and every external-tool run requires explicit approval.
After registration, a tool can be planned with a request such as:
```text
Run APVD Model Trainer with dataset=D:\DreamData, epochs=20, output=D:\APVD\output
```
ADAM will ask for any required inputs that were omitted before it offers the
approval plan.
For manual registry configuration, edit the relevant item in
`config/tools.json`:
```json
{
"backend": {
"type": "python",
"module": "my_tools.lora",
"function": "train"
},
"demo": false
}
```
The function receives a `ToolContext` as its first argument and keyword
arguments from the approved plan. This keeps training code in one place: your
existing GUI and ADAM can both call the same backend.
For scripts:
```json
{
"backend": {
"type": "script",
"path": "D:/AI/LoRATrainer/train.py"
},
"demo": false
}
```
ADAM invokes scripts directly with the current Python interpreter, captures
stdout/stderr, and never drives another GUI with mouse clicks.
## Safety model
- Plans are shown before execution.
- Long, destructive, or high-volume work requires confirmation.
- Unregistered tools cannot be invoked.
- External paths and arguments are validated before execution.
- The LLM may propose a plan, but only registered tools can execute it.
- Pause, resume, and cancel controls are available for active jobs.
- Every tool action and state transition is logged.
## Tests
```powershell
python -m pytest -q
```
|