Skip to main content
Run mel --help or mel <group> --help at any time for the same reference in your terminal. Every command that creates a resource auto-generates a UUID if you don’t pass --id, and returns the created object as JSON.

Authentication

Teams

Projects

Canvases

Nodes

Node mutations write directly to the live canvas — changes sync to connected browser clients in real time. mel node create options:
mel node update takes the same options (all optional); geometry must be updated as a full set (--x --y --w --h together).

Edges

Edge type determines data flow — an image edge passes the source node’s image output to the destination.

Runs

A run generates or post-processes the output for a single node. Auto-model resolution. When --model/--variant are omitted, mel run start resolves the right model from platform defaults — including picking image-to-image when the node has an incoming image edge. --canvas-id is required so the CLI can verify the node and do edge-aware detection.
Node tools. mel run tool post-processes a node’s finished asset and creates a new active version on the same node. The currently supported tool is remove-background for image nodes and file nodes that contain images. It runs Pixelcut (20 credits).

Bulk runs

Run an entire canvas in dependency order. Downstream nodes wait for their inputs; if a node fails, its dependents are skipped while independent branches continue.

Presets

Presets are pre-built canvas layouts (nodes, edges, and groups) expanded onto the canvas so you can see and edit every node.

Templates

Templates are opaque, reusable canvas workflows. Applying one drops a single collapsed box onto the canvas that exposes only its public input/output ports — the internal workflow stays private. When you set a team with mel team switch <teamId> or MEL_TEAM_ID, mel template list puts templates targeted at that team before global templates. Apply the returned id to use that team’s current workflow. mel template apply options:
Each input targets a portId from mel template list and is one of:
  • Text — { "kind": "text", "portId": "<id>", "text": "…" }
  • Library asset — { "kind": "asset", "portId": "<id>", "assetId": "<id>", "mediaType": "image|video|audio|pdf" } — an asset already in your library (find one with mel asset search)
  • Media URL — { "kind": "assetUrl", "portId": "<id>", "url": "https://…", "mediaType": "image|video|audio|pdf" } — Melius fetches the URL and stores it as an asset, so you can use an image or video already hosted elsewhere without uploading it first
Beta — media-URL (assetUrl) inputs are rolling out gradually. Reach out to support if you’d like access.
After applying, run the box with mel bulk-run start <canvasId> --node-ids <groupId> --wait:

Models

Audio & fonts

Comments

Presence

Show the agent’s live “working here” region on a canvas — visible in real time to everyone with the canvas open. Pass --agent-name <name> to mel presence claim to name the agent shown on the claim overlay. Pass the same --presence-id <uuid> to mel presence claim and mel presence release to keep your overlay separate from other agents working on the same canvas. mel presence release prints removed: false when no overlay with that ID was showing. A claim you never release disappears on its own five minutes after your last request to Melius.

Assets

Search your team’s Files library (past uploads and generations) and place existing assets onto a canvas by reference — no re-upload, no duplicate. Requires a Pro or Enterprise plan. mel asset search options:
The query is optional when you pass --folder-id or --tags — omit it to bring in a whole folder or every tagged asset. Every filter applies together. The response is { query, total, results, hasMore, nextCursor }; while hasMore is true, pass nextCursor to --cursor with the same query and filters for the next page. mel asset search returns assetIds — feed them straight into mel asset place, then wire the resulting nodes into generations with mel edge create:

Uploads

Upload adds a new local file; mel asset search reuses one already in the team library. Supported formats: PNG, JPEG, GIF, WebP, AVIF. Video must be generated on the canvas, not uploaded.

Configuration

Shell completion

Generated from the live command tree, so completions never drift. See Installation → Shell completion for one-line setup per shell.

Global flags

Available on every command:

Exit codes and errors

mel uses deterministic exit codes so scripts and agents can branch on the result without parsing text: Errors are structured JSON on stderr:
Every error carries a machine-readable code, a human-readable message, and usually a suggestion with the exact command to fix it.

Rate limiting

There is no monthly request quota on any plan, but a burst of requests can still be rate limited. On a 429, mel prints Rate limited — waiting Ns… to stderr, honors the Retry-After header (or backs off exponentially), and retries — so polling commands like mel run wait ride through a limit. stdout stays clean. After repeated 429s it gives up with a RATE_LIMITED error (exit 1).

Sticky notes

mel canvas content <canvasId> includes a notes array with note text, geometry, group membership and height mode. Use --note-id <noteId> to inspect one note, or --note-offset 0 to read notes in pages of 50; continue with nextNoteOffset until it is null. Positions are relative to the parent group when groupId is set.
Both write commands require editor access and return the saved note. Updates preserve omitted fields, group membership and styling. Use --height-mode manual for a fixed-height name bar; auto fits the text.
Last modified on October 8, 2026