App

An App step runs a ready-made lensless capability — like Person Learner (train a model of a person from photos) or Themed Portraits (generate a themed portrait set from a trained model) — as a single step. lensless curates the entire implementation, including all expert parameters; you only provide the inputs the app declares.

Browse the available apps in your dashboard’s Apps section, or add one from the flow editor’s step picker.

Step definition

{
  id: 'learn',
  type: 'App',
  parameters: {
    appId: 'person-learner',
  },
}

That’s a complete, valid step. Each input the app declares wires by name to a form field called <appId camel-cased>_<inputName> — for person-learner’s photos input, that’s personLearner_photos. When you add an App step in the editor, those fields are added to your Flow’s input schema automatically, with sensible defaults.

Rewiring inputs

Use parameters.inputs to point an input somewhere other than its form field — a fixed value, or an earlier step’s result. Rewired inputs need no form field.

{
  id: 'portraits',
  type: 'App',
  parameters: {
    appId: 'themed-portraits',
    inputs: {
      // chain: use the model trained by the 'learn' step above
      training: '$.results.learn.id',
      // fix the theme so the end user never sees this choice
      theme: 'Middle-earth: hobbits, misty mountains, golden-hour fantasy realism',
      count: '6',
    },
  },
}

Combined with the learn step above, this is a complete “upload your photos → get Middle-earth portraits” product where the person running the Flow sees exactly one form field: the photo uploader.

Results

An app declares the shape of its result, referenceable as $.results.<stepId> like any other step — e.g. $.results.learn.id is the trained model’s id. The editor knows each app’s output shape and validates your references against it.

What happens when the Flow runs

At run creation, lensless replaces the App step with the app’s actual implementation steps (that’s what you’ll see in the run’s progress view). Billing is identical to running the equivalent steps yourself — apps add no extra fee. Because the implementation is resolved when each run starts, app improvements apply to your next run automatically; a run that already started never changes.

ℹ

Apps are versioned and maintained by lensless — when we improve an app’s internals (say, better training parameters), every Flow using it benefits without any edits.

Last updated on March 19, 2026