SyntheticMDProductions's picture
Update ADAM safety, UI, and model workflows (#1)
c61c435
|
Raw
History Blame Contribute Delete
18.4 kB
---
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.
![ADAM command center](docs/screenshots/command-center.png)
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 model creation settings](docs/screenshots/create-model.png)
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
```