Hákon Freyr

ConceptStudio

Teach an Image or Video Model Something New, from a Mac. ConceptStudio teaches a diffusion model one new concept (a person, a pet, a product, a style or a movement) from your own photos or clips, on a Mac with no graphics card and no machine-learning background. The Mac does the preparation: choosing and cropping the examples, captioning them with a language model of your choice, and reviewing every caption beside its media. Training runs on a GPU computer the app rents and controls within the budget you set, and the trained adapter arrives on Hugging Face. On 14 October 2026 the full workflow ran end to end in a signed, notarised build. I designed the product and its contracts and directed the AI engineers (Claude and Codex) who wrote it.

General notes

  1. Captions shaped for the model being trained: caption instructions are an Agent Skills directory with one profile per caption style, so modern image models get dense prose, SDXL gets short lines that fit CLIP, and MiniMax H3 gets its structured shot fields. Every caption names the concept with its trigger and describes everything outside it.
  2. Any captioning model, chosen at run time: sign in with a ChatGPT plan, connect OpenRouter, use a provider key, or point at a self-hosted vLLM server. An optional second model reviews each caption and can send it back once with notes.
  3. Stronger defaults where they are measured: regularisation images drawn from the base model itself and captioned by the project’s own captioner keep the model’s sense of the class, and REPA aligns its features with a frozen DINOv2 encoder. Both are on by default for Qwen-Image-2.1.
  4. Matched comparisons: the base and the trained model render the same prompts with the same seeds, so the effect of the adapter is the only difference on screen.
  5. Built-in help explains every term in a 177-entry glossary, each entry in two readings: plain language for a beginner and the technical detail behind it.

Construction notes

  1. One model table, two readers: every supported model is one reviewed row of a JSON table. The Mac app builds its pickers, defaults and limits from it, and the GPU images carry the same file to write the trainer’s configuration, so adding a model is a row and an image rebuild rather than new code paths.
  2. My own GPU images: each rented computer runs a container image I build, with a small control agent. The app talks to it over one authenticated HTTP API, and services start from a fixed catalogue, never from shell strings.
  3. Money is guarded in the design: spending is capped per run and per computer, an idle computer is stopped (but not while the app is still uploading to it), and a computer holding a result that has not been saved cannot be removed.
  4. Pinned upstream: trainer commits and Hugging Face weight revisions are pinned in code, so a training run never follows a moving main branch, and moving a pin is a reviewed change.
  5. Native and private: SwiftUI, sandboxed, credentials in the Keychain, projects in ordinary folders the user chooses, and no subprocesses. The Python package behind it is the reference implementation and command-line tool for the same job file and caption skill.

10,004 training steps in 1 h 19 min for US$3.99 of rented GPU, against a US$10 run budget: the first run driven entirely through the app (14 October 2026)

0.05 → 0.34 face match to held-out photos for a likeness adapter on Qwen-Image-2.1, from the base model to 2,500 training steps on ConceptStudio’s GPU images (15 October 2026)

26 trainable models in one shared table: 6 with tested recipes and 20 more through AI Toolkit

9 screens, from a folder of photos to a trained adapter

Materials

  • Swift
  • SwiftUI
  • Python
  • pydantic-ai
  • FastAPI
  • Docker
  • RunPod
  • Hugging Face
  • AI Toolkit
  • LTX trainer
  • vLLM
  • Agent Skills
Project
Hákon Freyr Gunnarsson
Sheet
Detail E
Title
ConceptStudio
Scale
N.T.S.
Rev
2026-10