First step of the model-agnostic image-generation framework. Lands the
plumbing other components (skill, ComfyUI/Replicate adapters, agents)
will plug into:
- internal/backend: Backend interface (Request/Result), thread-safe
Registry with init-time Register, plus a Mock reference adapter that
emits a deterministic gradient PNG for smoke tests.
- internal/config: YAML loader for ~/.config/imagen.yaml. Framework owns
default_backend + output settings + a per-backend block; each adapter
owns the schema below its own block via BackendSpec.Raw.
- internal/output: filename templating ({date}/{time}/{slug}/{seed}/
{backend}/{ext}), JSON metadata sidecar, --output override path.
- internal/prompt: embedded styles.yaml, style-preset suffix application.
- internal/server: 501 stub — HTTP surface lands in a follow-up issue.
- cmd/imagen: generate / backends / config (init|validate|path) / serve
/ version subcommands. Stdlib-only flag parsing with a small helper to
honour positional prompt args ahead of flags (matches the issue spec).
- Tests for output (slug, naming template, sidecar), backend (mock PNG
validity + determinism, registry build + duplicate panic), config
(round-trip + validation), prompt (style apply + unknown-style error).
- CLAUDE.md, README.md, docs/architecture.md, docs/usage.md, Makefile.
Acceptance criteria from #211:
1. go build ./... — clean
2. imagen backends — lists registered backends, exits 0
3. imagen generate "test prompt" --backend mock --output /tmp/x.png —
writes a 1024x1024 PNG plus an x.png.json sidecar
4. imagen config init | imagen config validate — round-trips cleanly
5. CLAUDE.md "Adding a new adapter" — six-step recipe
51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# ImaGen
|
|
|
|
Model-agnostic image-generation framework: pluggable backends (local FLUX on
|
|
mRock, Replicate, DALL-E, …) behind a single CLI / skill / API.
|
|
|
|
```
|
|
imagen generate "a cat in a fishbowl" --backend flux-schnell-local --size 1024x1024
|
|
```
|
|
|
|
See [`CLAUDE.md`](./CLAUDE.md) for the design — backend contract, registry,
|
|
config layout, how to add a new adapter.
|
|
|
|
## Install
|
|
|
|
```sh
|
|
go install mgit.msbls.de/m/ImaGen/cmd/imagen@latest
|
|
```
|
|
|
|
Or from a checkout:
|
|
|
|
```sh
|
|
make build # writes ./bin/imagen
|
|
make install # installs into $GOBIN (defaults to ~/go/bin)
|
|
```
|
|
|
|
## First run
|
|
|
|
```sh
|
|
mkdir -p ~/.config
|
|
imagen config init > ~/.config/imagen.yaml
|
|
imagen config validate
|
|
imagen backends
|
|
imagen generate "test prompt" --backend mock --output /tmp/x.png
|
|
```
|
|
|
|
The mock backend ships in this repo and produces a deterministic gradient
|
|
PNG — useful for smoke-testing the pipeline without reaching any model.
|
|
|
|
## Status
|
|
|
|
| Component | Status |
|
|
| ----------------------- | ------------- |
|
|
| Backend interface | done (#1) |
|
|
| Mock backend | done (#1) |
|
|
| ComfyUI / FLUX on mRock | open (#2) |
|
|
| Replicate adapter | open (#3) |
|
|
| `/imagine` skill | open (#4) |
|
|
| HTTP server | stubbed (#1) |
|
|
|
|
Issues live at <https://mgit.msbls.de/m/ImaGen/issues>.
|