A creative director on the bench, not a one-click black box.
Type a creative brief; the Director returns a graded recipe — dial pushes, crop, caption — with a one-line rationale per move. Ask Visual Q&A what a photo's doing. Auto-grade with reasoning. Brand-voice captions. Five-tile generate-similar. Every move goes through undo; the dial state is yours after apply.
“Editorial cover for a Q3 launch — warm but restrained, subject leads, room for a headline up top.”
- Editorial baseline · sat -6 · contrast +4 · warmth +3
- Smart-crop · 2:1 OG · subject anchored bottom-third
- Caption · ‘Built for the makers who don't blink at deadlines.’
AI
AI Director, Visual Q&A, auto-grade, brand-voice captions and generate-similar variations — vision via our server, pixels on your device.
Watch the brief turn into a graded photo, line by line.
The Director ingests the brief, plans the pass, returns a structured recipe — dial deltas, crop suggestion, caption — with a one-line rationale per move. Pick a sample brief; the console plays the cycle.
- RecipeDial deltas across Effects + HSL + Curve + Split + Wheels
- Crop suggestionAspect + anchor (e.g. 2:1 · bottom-third)
- CaptionBrand-voice copy returned alongside the recipe
- RationaleOne line per push so you can override or accept
- Editorial baseline · sat -6 · contrast +4 · warmth +3
- Smart-crop · 2:1 OG · subject anchored bottom-third
- Caption · ‘Built for the makers who don't blink at deadlines.’
- · Sat -6 because launch art reads better when the subject — not the palette — leads.
- · Contrast +4 keeps the subject crisp at small sizes.
- · Crop pulled to bottom-third to leave headline room without losing focal weight.
Director · Visual Q&A · Auto-grade · Brand captions · Generate Similar.
Each capability gets its own demo panel. Click a tab to switch. Real interactions — type a question, pick a brief, fan into variations.
Brief in, structured recipe out — the Director plans the pass.
Type a creative brief; the Director returns a tuned dial state, a smart-crop suggestion, a brand-voice caption, and a step-by-step rationale. Apply whole, apply per-section, or treat the recipe as a brief for your own dials.
- Free-form brief — tone, mood, target use, brand voice.
- Output is granular — apply the grade and skip the crop.
- Pairs with Effects, Crop, Watermark, Recipes.
- Editorial baseline · sat -6 · contrast +4 · warmth +3
- Smart-crop · 2:1 OG · subject anchored bottom-third
- Caption · ‘Built for the makers who don't blink at deadlines.’
Every dial push lands with a one-line reason.
The studio's AI doesn't ‘just enhance’. It tells you what it changed and why — exposure +0.6 because skin was 0.4 stops under, saturation -8 because the brief said editorial. You override what you don't agree with.
Apply whole, apply per-section, or just steal the caption.
Every Director output is granular. Take the grade and skip the crop. Take the crop and write your own caption. Use the recipe as a brief for your own hands. The dial state is yours after apply, every keystroke goes through undo.
Pick the parts of the recipe you want.
Every section has its own switch. Apply the grade and skip the crop. Keep just the caption. Reject the watermark. The Director's recipe is a menu, not a takeover.
Every move goes through 80-step undo.
Apply, regret, step back. The dial state is yours after apply — the AI's recipe lands on the same undo timeline as your own pushes. There's no parallel world to reconcile.
Heavy lifts route through one interface — providers swap behind a single seam.
Vision goes through our own server route, never a third-party SDK in your browser. Pixel work runs locally on Canvas / WebGL / ONNX-Runtime-Web. The `ImageOpsClient` interface lets us swap providers without touching the UI.
On-device pixels, server-side vision, swap-ready interface
Every heavy AI op routes through a single client interface — `ImageOpsClient`. Today: vision via the studio's own server route; pixel work via Canvas / WebGL / ONNX-Runtime-Web in your browser. Tomorrow when the heavier pixel-generative ops (denoise, upscale, inpaint, relight) come fully in-house — the UI doesn't change. Same surface, sturdier engine.
- Single `ImageOpsClient` interface — providers swap behind one seam.
- Vision steps go through `/api/v1/fydark/ai` — our route, our keys, our cap.
- No third-party SDK ships in your browser.
- Roadmap · in-house bg-remove, inpaint, denoise, upscale, relight.
Server route
/api/v1/fydark/ai · our keys, our cap
On-device
Canvas / WebGL / ONNX in your tab
interface ImageOpsClient {
// vision-led — runs through the server route
director(brief, image)
visualQA(image, question)
autoGrade(image)
brandCaption(image, voice)
generateSimilar(image, dialState)
// pixel-generative — local engine today,
// server-augmented tomorrow
bgRemove(input)
inpaint(input, mask)
denoise(input, strength)
upscale(input, factor)
relight(input, direction)
skyReplace(input, sky)
outpaint(input, bounds)
}Six things working teams ask first.
Where the AI runs, how brand voice is taught, will it overwrite my dial state, what's coming next on pixel-generative ops. Six answers.
Vision steps run through the studio's own server route at `/api/v1/fydark/ai`. The route forwards a downscaled preview (not the full-resolution source) for vision analysis only. The pixel work — applying the dials, rendering variations, baking the export — happens locally on the Canvas API. Source bytes never leave your tab during the pixel pipeline.
Pick a track, open the studio,
ship the pixels.
Every track on this page links to its own dedicated workspace — resize, crop, compress, convert, effects, batch, SVG cleanup, privacy. Same canvas, same recipe shelf, more depth where you need it.