A ComfyUI model may make meshes: from a picture, with its licence inside

G3, the part that needs no model: a ComfyUI model's comfyui.output (or
external.output) says pictures or meshes. A request for a 3D model — a
job at /v1/3d/generations — carries the picture as base64; at the replica
it is uploaded to ComfyUI's input directory (the gate lets /upload/image
through), the workflow is filled in with its name, the seed and the
resolution, and the mesh the workflow saves comes back with its type,
which is the file the job keeps. comfy.Client reads every list of files an
output names, not "images" only, and types a file by its extension where
ComfyUI sends octet-stream.

A model's license (name, url, notice) is said in /v1/models and in the
job, and written into a GLB's asset.extras, since the file travels without
the API; a mesh it cannot be written into is refused. per_mesh in
auth.pricing, usage.meshes in the rows, the sums and the export
(migration 0045). A picture asked of a mesh model, or a mesh of a picture
model, is refused saying which it makes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ilker ManapandClaude Opus 5.5 committed 2026-10-10 18:30:52 +02:00
1 parent ec233d3586
commit c87e413360
27 files changed
+899 -57

No files matched your search

+73
View File
@@ -61,8 +61,10 @@ rather than repeated.
| `vision` | `bool` | [Capabilities](#capabilities) |
| `embeddings` | `bool` | [Capabilities](#capabilities) |
| `images` | `bool` | [Capabilities](#capabilities) |
| `meshes` | `bool` | [Capabilities](#capabilities) |
| `workflow` | `string` | [ComfyUI](#comfyui) |
| `checkpoint` | `string` | [ComfyUI](#comfyui) |
| `output` | `string` | [ComfyUI](#comfyui) |
| `dir` | `string` | [ComfyUIConfig](#comfyuiconfig) |
| `python` | `string` | [ComfyUIConfig](#comfyuiconfig) |
| `interval` | `time.Duration` | [Control](#control) |
@@ -98,6 +100,7 @@ rather than repeated.
| `peer` | `string` | [External](#external) |
| `api` | `string` | [External](#external) |
| `workflow` | `string` | [External](#external) |
| `output` | `string` | [External](#external) |
| `budgets` | `[]FacilityBudget` | [Facility](#facility) |
| `margin` | `float64` | [Facility](#facility) |
| `gpu_watts` | `float64` | [Facility](#facility) |
@@ -126,6 +129,9 @@ rather than repeated.
| `notice` | `string` | [Landing](#landing) |
| `language` | `string` | [Landing](#landing) |
| `docs_sign_in` | `bool` | [Landing](#landing) |
| `name` | `string` | [License](#license) |
| `url` | `string` | [License](#license) |
| `notice` | `string` | [License](#license) |
| `bin` | `string` | [LlamaCppConfig](#llamacppconfig) |
| `parallel` | `int` | [LlamaCppConfig](#llamacppconfig) |
| `threads` | `int` | [LlamaCppConfig](#llamacppconfig) |
@@ -144,6 +150,7 @@ rather than repeated.
| `owner` | `string` | [Model](#model) |
| `external` | `*External` | [Model](#model) |
| `comfyui` | `*ComfyUI` | [Model](#model) |
| `license` | `*License` | [Model](#model) |
| `adapters` | `[]Adapter` | [Model](#model) |
| `max_loaded_adapters` | `int` | [Model](#model) |
| `fallbacks` | `[]string` | [Model](#model) |
@@ -354,6 +361,7 @@ rather than repeated.
| `prompt_per_1k` | `int64` | [accounting.Price](#accountingprice) |
| `completion_per_1k` | `int64` | [accounting.Price](#accountingprice) |
| `per_image` | `int64` | [accounting.Price](#accountingprice) |
| `per_mesh` | `int64` | [accounting.Price](#accountingprice) |
| `name` | `string` | [admission.Band](#admissionband) |
| `priority` | `int` | [admission.Band](#admissionband) |
| `saturation_ceiling` | `float64` | [admission.Band](#admissionband) |
@@ -391,6 +399,7 @@ rather than repeated.
| `prompt_per_1k` | `int64` | [config.Price](#configprice) |
| `completion_per_1k` | `int64` | [config.Price](#configprice) |
| `per_image` | `int64` | [config.Price](#configprice) |
| `per_mesh` | `int64` | [config.Price](#configprice) |
| `disabled` | `[]string` | [engines.Config](#enginesconfig) |
| `vllm` | `VLLMConfig` | [engines.Config](#enginesconfig) |
| `sglang` | `SGLangConfig` | [engines.Config](#enginesconfig) |
@@ -739,6 +748,14 @@ Images is a model that makes pictures, asked for at
/v1/images/generations. Implied by an external model whose API is
ComfyUI's.
### `meshes`
`bool`
Meshes is a model that makes 3D models from a picture, asked for as a
job at /v1/3d/generations. Implied by a ComfyUI model whose output is
meshes.
## ComfyUI
### `workflow`
@@ -757,6 +774,14 @@ Checkpoint is the file the workflow's {{checkpoint}} names: the
source's own name unless set, which a source that is a set of files
must.
### `output`
`string`
Output is what the workflow makes: pictures (the default), asked for
at /v1/images/generations, or meshes, asked for as a job at
/v1/3d/generations from a picture.
## ComfyUIConfig
### `dir`
@@ -1000,6 +1025,12 @@ Workflow is the ComfyUI workflow, in its API format: a built-in's name
(flux-schnell, the default, or flux-dev) or a JSON file on the control
plane.
### `output`
`string`
Output is what it makes: pictures, or meshes (see ComfyUI.Output).
## Facility
### `budgets`
@@ -1230,6 +1261,25 @@ llmgw in general — no address, model or key of this installation —
which the project's repository publishes anyway. On, a visitor is sent
to sign in, and without accounts the portal needs an API key.
## License
### `name`
`string`
Name is the licence's own: MIT, Apache-2.0.
### `url`
`string`
### `notice`
`string`
Notice is what must accompany what was made: attribution, terms on
the output, what the weights were trained on.
## LlamaCppConfig
### `bin`
@@ -1395,6 +1445,16 @@ pictures: the workflow, and the file it loads.
Takes a [ComfyUI](#comfyui) block.
### `license`
`*License`
License is the terms of what the model makes, for a model whose
output somebody ships: shown with every result and written into a
mesh.
Takes a [License](#license) block.
### `adapters`
`[]Adapter`
@@ -3007,6 +3067,13 @@ PerImage is what one picture costs, for a model that makes them: a
picture's cost is the card's time, which its prompt's few tokens do
not measure.
### `per_mesh`
`int64`
PerMesh is what one 3D model costs: minutes of a card, which no
token count measures.
## admission.Band
### `name`
@@ -3273,6 +3340,12 @@ had rather wait behind people than be turned away.
PerImage is the cost of one picture, for a model that makes them
(/v1/images/generations), on top of its prompt's tokens.
### `per_mesh`
`int64`
PerMesh is the cost of one 3D model (/v1/3d/generations).
## engines.Config
### `disabled`