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 costs 12 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. 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.

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. The response is { query, total, results }; page through total with --limit and --offset. 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).
Last modified on August 17, 2026