Product  //  Nomos  //  Self-healing desktop automation
— — : — —

Desktop automation
that survives
the next update.

Nomos observes a person completing a multi-application Windows task, induces an executable program from what it observed, runs it deterministically, and repairs the program when the applications change underneath it. Deployed by Onpar Labs engineers, inside the client's perimeter, on the client's software.

0levels
Heal ladder, L0 to L4
0
Model calls on a healthy run
0
Effect classes on every edge
k= 5
Demonstrations to a program
01  //  How it works

Observe. Induce. Run, and repair.

01 // Observe

The Recorder

A native agent in the interactive session captures six signals at once: input, application events, focus, the element under every action, the whole subtree at boundaries, and the screen at settle. Values are salted and hashed before anything reaches disk.

  • One monotonic clock
  • Element, not coordinate
  • Redacted in-process
  • Blind spots recorded
02 // Induce

The Inducer

Five demonstrations with different data become one versioned state graph. What varies across runs is data; what does not is identity. The joins between applications are recovered from value equality, so the program is the data flow, not the clicks.

  • k traces → one graph
  • Identity / discriminator / data keys
  • Model proposes, rules verify
03 // Run and repair

The Runner and the Healer

On a healthy run each step is a dictionary lookup, a settle wait, and one adapter call. No model, no network. When the application changes, a five-level ladder localizes, repairs, verifies against the system of record, and writes the repair back into the artifact.

  • Deterministic replay
  • Model only on miss
  • Every heal promoted

Capture and replay are necessary. They are not the product. The product is what happens the morning after the vendor ships an update. The repair loop is the product.

Nomos  //  Design thesis Decision D1: learning lives in a versioned artifact, never in weights
02  //  The heal ladder

Five levels. The model is the fourth, and it is rare.

Every step resolves the observed screen to exactly one node of the graph, with a score above threshold and a margin over the runner-up. When it cannot, the ladder climbs one rung at a time. Each rung is cheaper than the next, and a verified repair at any rung is appended to the artifact so the same break never costs anything twice.

L0
Exact hash hitIdentity key hashed, dictionary lookup.
Microseconds
L1
Fuzzy match on the expected nodeIDF-weighted feature overlap, threshold and margin. Absorbs a moved control, a renamed label, a resize.
< 1 ms  ·  no model
L2
Localize against every nodeCatches the application skipping a step or raising a dialog that is not in the graph.
< 10 ms  ·  no model
L3
Model callReceives parameter types, never values. May not mint a value. May not touch a COMMIT edge.
Seconds  ·  logged
L4
Halt, snapshot, enqueue for a personEvidence bundle attached. The one outcome that costs a human touch.
Reviewed
Mutation harness  //  purchase-voucher@v8Idle
Artifact v8Model calls this run 0
03  //  The artifact

A program you can read, diff, and review.

Nomos emits a versioned state graph. Human-readable, git-shaped, reviewable by the client's own engineers. It is the deliverable, and it is where every repair accumulates. Nothing is learned into model weights.

  • 1A target is a ladder, not a selector. Heals append; nothing is ever replaced, so a promoted repair cannot regress the original path.
  • 2Every edge carries an effect class. COMMIT edges are never healed autonomously.
  • 3Idempotency is checked against the system of record before a COMMIT is re-executed. A recovered run and a duplicate journal entry look identical on screen.
  • 4Every node and edge points at the observations that produced it, and at the heal that introduced it.
purchase-voucher-from-portal  ·  v8graph.yaml
workflow: purchase-voucher-from-portal
version: 8

surfaces:
  s1: {lane: cdp,   app: chrome, origin: "https://portal.vendor.co/*"}
  s2: {lane: pixel, app: tally.exe@3.0.1,
       probe: {uia_tree: absent, ocr: required, oracle: tally_xml}}

params:
  invoice_no: {type: str,   source: s1/n3 field "Invoice #"}
  amount:     {type: money, source: s1/n3 field "Total"}
  vendor:     {type: str,   source: clipboard@e9, from: portal.vendor.co}

nodes:
  n7:
    surface: s2
    key:     {lane: pixel, layout_sig: sha:9f2c..,
              chrome_ocr: ["Voucher Creation", "Purchase", "Ref"]}
    settle:  dirty_area < 0.2% for 3 frames
             AND no StructureChanged 250ms

edges:
  e19: {from: n11, to: n12}
    action:       key(ctrl+a)
    target:       [uia:AutomationId=btnAccept,
                   anchor:label_right_of("Accept"),   # heal-promoted, v8
                   pixel:region(0.82,0.94)]           # last resort
    precondition: [foreground(s2), at(n11)]
    effect:       COMMIT
    idempotency:  {check: oracle.voucher_exists(${invoice_no}), on_true: skip}
    post:         [oracle.amount(${invoice_no}) == ${amount}]
    evidence:     [run1#44, run3#47, run5#46, heal:h44@v8]

oracle:
  kind: tally_xml
  endpoint: http://guest:9000
04  //  Safety

Success is defined by the system of record, not the screen.

Effect class01
NONE

Navigation, reads, focus

Nothing in the world changes if it runs twice. The ladder heals it and promotes the repair the moment the oracle verifies it.

Heal policyAuto-heal, auto-promote on verify
Effect class02
REVERSIBLE

Field entry before submit

Typing into a form that has not yet been posted. Recoverable by clearing the field. Healed autonomously, promotion accepted.

Heal policyAuto-heal, promotion auto-accepted
Effect class03
COMMIT

Posts, submits, sends, deletes

Never healed autonomously. The model's only permitted response on a COMMIT edge is Abort. Before any re-execution the oracle is asked whether the effect already landed. If it did, the step is skipped, not retried.

Heal policyHalt and review. No exceptions.
Guard // Focus

Foreground asserted before every keystroke

A toast stealing focus mid-type is how an account number ends up in a chat window. The cheapest assertion in the system and the highest value.

Guard // Clipboard

Verified at paste time

The clipboard is global mutable state. Anything on the machine can stomp it between copy and paste, so the value is checked, never assumed.

Guard // Values

The model may never mint a value

The Healer receives parameter types, not data. It can only reference values already bound from source documents. It cannot hallucinate an amount.

05  //  Design decisions

Nine decisions, fixed before the first commit.

D1

Learning lives in a versioned artifact.

Never in weights. Every repair is a readable patch with evidence attached.

D2

The model runs at induction and on miss only.

Never per step. Model calls per run is the health metric, and it must decay.

D3

State identity is structural.

Pixel hashing is a masked fallback lane, never the primary key.

D4

One adapter interface.

Used for both observing and acting, so the player never sees an application differently from the recorder.

D5

Every step carries an effect class.

COMMIT is never healed autonomously. Safety is not bolted on afterwards.

D6

Success is defined by the system of record.

Not the screen. A confirmation screen is exactly what a silent failure looks like.

D7

Redaction in-process at capture.

Per-tenant persisted salt. Equality survives, content does not.

D8

One monotonic clock, one envelope schema.

Six sensors, one shape, one timeline. Traces are comparable across runs and machines.

D9

Local-first.

Only redacted derivatives leave the machine. The Healer can run where the raw data is not permitted to go.

06  //  What is measured

Not the happy path. The recovery.

01 // Pre go-live

Recovery rate under mutation

Share of deliberately induced failures repaired unattended, against a mock that is broken in the same ways the real application is.

Reported before go-live
02 // Health

Model calls per run

Must decay. A plateau means the application is changing faster than Nomos converges, which is information about that deployment.

Must trend to zero
03 // Outcome

Unattended completion rate

Runs finished with no human involvement, verified by the oracle rather than by the final screen.

Verified by oracle
04 // Cost

Human touches per 100 runs

The true operating cost of the workflow, and the basis on which Nomos is priced.

Basis of pricing
05 // Speed

Time to first artifact

From the first demonstration to a working, reviewable automation on the client's machine.

Days, not quarters

Nobody in the category publishes recovery rate under mutation. That absence is itself a signal.

07  //  Deployment

Not a SaaS. Forward deployed, and built to the client's software.

Nomos runs on the client's Windows estate, against the client's applications, with the client's system of record as oracle. Onpar Labs engineers survey the surfaces, record the demonstrations, induce and mutation-test the artifact, and hand the client's team a program they can read. Nothing leaves the perimeter except redacted derivatives.

Week 00–01Survey

Capability probe

Every application is probed once: tree depth, staleness, API, whether OCR is required. Lane and oracle chosen per surface and written into the artifact.

DeliverableSurface capability sheet
Week 01–02Demonstrate

Five recordings

The client's own operator performs the task five times with different data. The Recorder runs in their session; values are hashed before they touch disk.

Deliverablek redacted traces
Week 02–03Induce

First artifact

The graph is induced, reviewed line by line with the client, and every COMMIT edge is assigned its oracle check before it is allowed to run.

DeliverableReviewed graph v1
Week 03–05Mutate

Break it on purpose

Controls moved, labels renamed, dialogs inserted, a real vendor upgrade applied. Recovery rate is measured and reported before anything goes live.

DeliverableRecovery rate under mutation
Week 05 →Converge

Live, and healing

The workflow runs unattended. Each verified heal is promoted and versioned. Model calls per run decay toward zero, and the client's engineers own the artifact.

DeliverableClient-owned, converging workflow
Evaluating applicants  //  Q4 2026

Nomos is deployed, not sold.

Every Nomos deployment begins with an evaluation of the institution and its workflow. Five questions. If the workflow, the applications, and the system of record are real, Onpar Labs responds with a written view on whether it would deploy, and on what terms.

What is evaluated
  • 01A Windows back-office workflow the institution depends on
  • 02An operator who can demonstrate it, and a system of record that can be queried
  • 03A measurable definition of done
  • 04Readiness to own the artifact
Written decision within five business days