Skip to content

tweak#

Right-click a message -> Apps -> tweak

tweak is the universal "do something with this" entry point. Point it at any message and it works out what is in there: an image opens the full edit menu, an audio or video file opens the audio operations menu, and a message holding both asks which one you meant.

It is the widest of the five right-click menus, and two things are reachable only through it: the audio operations (Cover, Repaint, Style Tags, Transcribe), which have no slash command anywhere, and the ๐Ÿงฌ Detailer button inside the edit menu, which the Edit button on a finished card does not offer.

It works in servers, DMs and group DMs, as a guild install or a user install.


What happens when you click it#

  1. Eimi checks your bot access. Without it you get Access denied. and nothing opens.
  2. It scans the message for audio attachments and for usable images.
  3. It routes you to one of four outcomes.
The message contains You get
An image only The image edit menu
Audio only The audio operations menu
Audio and an image The media picker
Nothing usable โŒ No image found in that message.

Note that a video file lands in the third row, not the second: an .mp4 is both a motion image source (its first frame) and an audio source (its soundtrack), so tweaking a video always asks first.


The media picker#

A small panel headed ### Tweak, with the line this message has an image and audio -- pick one underneath and two buttons:

Button Where it takes you
๐Ÿ–ผ Image The image edit menu, against the images found in the message
๐ŸŽต Audio The audio operations menu, against the first audio attachment

Blurple accent, 300-second timeout. Only the first audio attachment is ever offered -- there is no audio picker, so a message with two tracks exposes only the earlier one.


The image edit menu#

Headed ### Tweak Image, teal accent, 300-second timeout. On expiry it is replaced with โฑ๏ธ Selection timed out.

This is the same menu /edit and the Edit button use, with two differences:

tweak Edit button on a card /edit
๐Ÿงฌ Detailer button Yes No No
Restyle ๐ŸŽญ in the model list Yes No Yes, as model: restyle

Your saved edit model from /settings is pre-selected, so the common case is three clicks: tweak, Edit Prompt, type, submit.

Layout, top to bottom#

Row When it appears What it is
Model dropdown Always Choose editing model...
Image dropdown Only with more than one image Choose which image to edit..., up to 25 entries
Model options After a model is picked Quality, resolution, aspect ratio, batch and toggles, varying by model
Style sub-section Only for Restyle Preset dropdown, pagination, Source Influence, resolution toggle
Status line After a model is picked A small grey summary, fields joined by ยท
Submit row After a model is picked Up to four buttons

The status line only prints what you have actually set. Model: is always there; Quality:, Style:, AR: (hidden on auto), Batch: (hidden at 1), Source:, Res: and Search: On appear as you touch them.

The model dropdown#

Fourteen entries exist. Eight are VIP-only and are simply not rendered for everyone else, so a regular user sees six.

Model Emoji Description in the dropdown VIP
Klein โšก or โœจ Flux2 Klein 4B Fast / 4B Quality / 9B Fast / 9B Quality, mirroring your saved setting --
Qwen Edit ๐ŸŽจ Qwen Edit, 8 steps --
Krea 2 Edit ๐ŸŒŠ Krea 2 Edit --
Mage Flow Edit ๐Ÿช„ Mage Flow Edit --
Z-Image Inpaint ๐Ÿ–Œ๏ธ SAM3 auto-mask + Z-Image inpaint --
Restyle ๐ŸŽญ Restyle with style presets --
Nano Banana ๐ŸŒ Gemini 2.5 Flash (VIP) VIP
Nano Banana 2 ๐ŸŒ Gemini 3.1 Flash (VIP) VIP
Nano Banana 2 Lite ๐ŸŒ Gemini 3.1 Flash Lite - fast (VIP) VIP
Nano Banana Pro ๐ŸŒ Gemini 3 Pro (VIP) VIP
GPT Image 1 ๐Ÿค– OpenAI GPT Image 1 (VIP) VIP
GPT Image 1.5 ๐Ÿค– OpenAI GPT Image 1.5 (VIP) VIP
GPT Image 2.0 ๐Ÿค– OpenAI GPT Image 2.0 (VIP) VIP
GPT Image 1 Mini ๐Ÿค– OpenAI GPT Image 1 Mini (VIP) VIP

Switching model clears every option you had set -- quality, aspect ratio, batch, Source Influence, resolution, search and thinking toggles, and the style preset -- and re-applies that model's defaults. Pick the model first, then the options.

Full per-model option rows, quality settings and what each backend is good at live on the /edit page rather than being duplicated here.

Z-Image Inpaint does not work from tweak

Z-Image Inpaint ๐Ÿ–Œ๏ธ is offered in this dropdown and its two-field modal opens normally, but the tweak path has no handler for it. Submitting comes back with โŒ Unknown model: z_image and nothing is queued. Use /edit with model: z_image, or the Edit button on a finished card, both of which do run it.

The submit row#

Left to right:

Button Colour When it appears What it does
โœ๏ธ Edit Prompt Blue Always Opens the prompt modal
โ–ถ Submit Green Only when Restyle is picked with a real preset Runs immediately with the generated style prompt, no typing
๐Ÿงฌ Detailer Green Always, on the tweak path Opens the Detailer options for the picked image instead of editing it
Cancel Grey Always Deletes the menu

The dedicated restyle menu puts Submit first instead, because there it is the usual path.

Both submit paths are guarded against double-clicks: a second fast click is silently swallowed. The guard is one-way, so if you open the modal and close it without submitting, the menu is spent and you have to right-click again.

The Detailer button#

๐Ÿงฌ Detailer is a side door rather than an edit. It downloads the picked image, hands it to the Detailer panel and lets you run face, eye, hand and person fixes, hi-res fix and background removal on it -- on any image, including one Eimi did not make.

If the message happens to be one of Eimi's own results, the original job's model, prompt and LoRAs are found and inherited so the detail pass matches. If it is somebody's holiday photo, it starts from scratch.

Failures here are blunt: Failed to download image., ComfyUI not available., Failed to upload image., Button handler not available.


Format handling#

Before the model sees anything, the picked image is normalised:

  • Anything that is not PNG, JPEG, WEBP or GIF is converted to PNG.
  • Any animated still, such as an animated WebP, is flattened to its first frame, so it cannot arrive as a multi-frame batch.
  • Video and GIF sources contribute their first frame only.
  • A failed conversion gives โŒ Failed to convert {FORMAT} format.

There is no explicit size check on the source image here. Discord's own upload limits are the only thing stopping you, unlike waldo which refuses anything over 25 MB.


Where the result lands#

The finished image posts as a reply to the original message, publicly unless the original right-click was ephemeral. See Bot Behavior for what makes a response ephemeral.

No queue-limit check on this path

/edit refuses to queue when you already have your maximum number of jobs waiting (You have N job(s) in queue. Your limit is L.). tweak skips that check entirely. The global and per-channel limits still apply.

You can tweak someone else's image

Editing is open to everyone. The original message is untouched, and the new image is attributed to you and counted against your job total, not theirs.


The audio operations menu#

Right-clicking a message whose attachment is audio, or a video whose soundtrack you pick, opens ### Tweak Audio with the filename underneath. This menu is reachable only through tweak -- no slash command opens it, and it is not on any result card.

Blurple accent, 10-minute timeout, and it re-checks your bot access on every button press, because ten minutes is long enough for that to change.

Button Style What it does Result
Cover Blue Re-performs the whole track in a style you describe A queued job, posted publicly
Repaint Blue Re-does one time range of the track A queued job, posted publicly
Style Tags Grey Reads the track and tells you what it sounds like Private text reply
Transcribe Grey Pulls the lyrics out Private text reply

All four run on the same ACE-Step 1.5 audio model family that /compose uses.

What audio Eimi accepts#

Audio attachments (.mp3 .wav .flac .ogg .opus .aac .wma .m4a .aiff .aif .alac .ape .wv) that are 10 MB or under are passed through untouched.

Anything else -- a video file, or an audio file over 10 MB -- goes through ffmpeg and comes out as 16-bit PCM WAV with the video track stripped. It tries three settings in order and stops at the first that fits under 10 MB:

Attempt Setting Roughly how much audio fits
1 44.1 kHz mono about 2 minutes
2 22 kHz mono about 4 minutes
3 16 kHz mono about 5 minutes 30

If even 16 kHz mono will not fit, the track is truncated to whatever length does -- roughly the first 5 minutes 27 -- and the rest is discarded silently. There is no warning about this, so a long track that needed converting may come back shorter than you sent.

Conversion failures surface as Couldn't process that audio. A completely unreadable first attempt is reported as a corrupt file or one with no audio track.

BPM, key and time signature#

Cover and Repaint analyse the track before queueing, and carry the result into the job so the new audio stays in the same musical world as the source.

Detected How What it looks like
BPM Beat tracking over a sample of the track A whole number, e.g. 120
Key Chroma analysis matched against the 24 major and minor key profiles e.g. C minor
Time signature Beat-accent grouping, resolved to one of three answers 3, 4 or 6

The analysis decodes a 10-second slice from the middle of the track at 22 kHz mono, not the whole file. That keeps it fast, and it means an intro-heavy or unusually structured track can be read wrong. Time signature in particular falls back to 4 whenever the grouping is unclear, which is often.

Any value it fails to detect is simply left unset and the model picks its own.

Style Tags and Transcribe skip the analysis

They do not use BPM or key, so they do not pay for the analysis. That is why they come back noticeably faster than a Cover.

Cover#

Opens a modal titled Cover / Restyle:

Field Required Max Placeholder
New style (tags or description) Yes 1000 characters e.g. lofi hip hop, mellow rhodes piano, rainy night
Lyrics (optional) No 4000 characters --

Leave the lyrics field empty and the model writes its own where the arrangement calls for singing. Fill it in and it sings yours.

Cover strength is fixed at 0.5 and is not exposed in the menu. Neither is the step count (8), the seed (random every time) or the duration -- the output follows the length of the track you gave it.

Repaint#

Opens a modal titled Repaint a section:

Field Required Max Placeholder
What should the section become? Yes 1000 characters e.g. add a soaring guitar solo
Start (seconds) Yes 8 characters e.g. 30
End (seconds, -1 = to the end) Yes 8 characters e.g. 45

Times are plain seconds, decimals allowed. -1 as the end means "to the end of the track". Anything that is not a number gives Start/End need to be numbers (seconds). and nothing is queued.

Repaint has no lyrics field. The rest of the track outside your range is meant to survive; only the range you named is re-generated.

Cover and Repaint queue an ordinary compose job

Both hand off to the same machinery as /compose, and what comes back is an ordinary compose result card. It is always posted publicly to the channel, even when the tweak menu that opened it was private -- unlike every other right-click menu, the ephemeral choice is ignored here. The reference track is not shown on the card, the prompt enhancer is skipped, and the job shows up in history as a compose job.

Style Tags#

A one-shot read of the track. No modal, no queue -- it runs immediately and replies privately with:

**style tags:** ...

Output is truncated at 1800 characters. If the model cannot make sense of the track you get Couldn't read style tags from that track.

Transcribe#

A one-shot lyric transcription, language auto-detected. Replies privately with:

**transcribed lyrics:** ...

Anything over 1800 characters comes back as a lyrics.txt file attachment instead. Nothing recognisable gives Couldn't transcribe lyrics from that track.

The first run of either is slow

Style Tags and Transcribe load their own models, and the very first use after the bot starts downloads them. Eimi waits up to 6 minutes before giving up. On a warm bot they are quick; on a cold one, or if the download stalls, you get a failure message and nothing else. This is one GPU in somebody's house, not a service, so cold starts happen.


Errors you may see#

Message Cause
Access denied. No bot access
โŒ No image found in that message. Nothing usable on the message
โŒ Failed to download image. The image URL could not be fetched, even after a re-sign and a proxy fallback
โŒ Failed to extract frame from video. Make sure ffmpeg is installed. The first-frame extraction failed or timed out
โŒ Failed to convert {FORMAT} format. The image decoded but would not convert
โŒ ComfyUI not available. / โŒ Failed to upload image to ComfyUI. The backend is down or refused the upload
โŒ Unknown model: z_image The Z-Image gap described above
โŒ {Name} is VIP-only. A VIP model reached without VIP
โš ๏ธ Please describe the style you want. Custom style submitted with an empty prompt
Couldn't process that audio. Conversion or upload of the audio failed
Audio actions unavailable. The audio half of the bot is not loaded

See also#

  • /edit -- the same edit menu as a slash command, with every model detailed
  • restyle -- style presets only, in a simpler menu
  • describe -- read the image back as text instead of editing it
  • /compose -- generate music from a text prompt instead of an existing track
  • Detailer -- what the ๐Ÿงฌ button opens
  • Right-click menus -- the other four
Categories: Menus | Edit Command | Compose | Detailer