morphogen

Structure that does the deciding.

Morphogen expresses an agentic workflow as a typed graph — an organism. Most cells are deterministic code. A few are bounded agent cells with a declared context view, a typed output contract, and a budget. The graph, not the prompt, carries the decisions.

The shape

cells:
  - id: route
    kind: classifier            # bounded LLM call, closed label set
    output: { kind: choice, labels: [bug, feature, question] }
  - id: as-bug
    kind: fn                    # deterministic code
edges:
  - from: route.out
    to: as-bug.tag
    guard: { equals: bug }      # the structure carries the routing

What a run produces

Every run emits a content-addressed receipt: which cells committed, which skipped, what each agent cell asked and returned, and the work ledger. morphogen verify replays the run offline with the recorded receipts fixed — the same manifest, the same outputs, the same digest — or reports exactly where it diverges.

$ morphogen run triage.morphogen.json --responses triage.responses.json
$ morphogen verify run.receipt.json triage.morphogen.json
{"ok":true,"outcome":"complete","digest":"sha256:…"}

Boundaries

Status

Early. morphogen.organism.v1 covers the manifest contract, the scheduler, the effect/receipt seam, nested organisms, and offline verification. Hosted habitats, multi-owner messaging, and workflow breeding are deliberately deferred.

hraness/morphogen · MIT