Documentation

Everything needed to run, extend and audit the platform.

Guides for the first hour, reference for the parts you come back to, and runbooks written for the shift.

Getting started

First hour

From an empty tenant to a shadow-mode agent on a replayed run.

  1. 01Install the SDK and CLI

    pip install glasent, then glasent auth login with your tenant. Access is provisioned with a pilot.

  2. 02Import a tag model

    glasent tags import from your tag survey. Every tag gets units, ranges and an owner.

  3. 03Define a tool and an agent

    Start from the anneal example on this page: one read-only tool, one guarded write, one goal.

  4. 04Replay a historical run

    glasent replay against a historian extract. Compare recommendations to what the technologist did.

  5. 05Simulate on the twin

    glasent twin simulate ranks candidates and shows which were discarded and why.

  6. 06Run in shadow

    glasent run with --autonomy L1 on the connected line. Nothing is written; everything is logged.

Developers

Define an agent, bound it, run it

The Glasent SDK is typed Python. Tools are declared with schemas and limits; the policy engine enforces them at call time, not in a review meeting.

What you get

  • Typed tool definitions with unit-aware ranges and rate limits
  • Deterministic replay of any historical run against a new model
  • Local twin harness so a recipe is simulated before it is shipped
  • Autonomy policy as code, versioned and reviewed like any other change

Read the docs Developer guide

fl2_anneal_agent.py
# Bound the anneal agent to twelve lehr zones on FL-2.
from glasent import Agent, Tool, Limit, Autonomy

lehr = Tool(
    name="lehr.write_curve",
    tags=["FL2.LEHR.Z01..Z12.TEMP_SP"],
    limits=[Limit(max_step="4 C", per="60s")],
)

anneal = Agent(
    id="agent.anneal_stress",
    goal="residual stress inside spec, min energy",
    tools=[lehr, Tool("optic.read_birefringence", read_only=True)],
    # bounded writes; a technologist still gates pull steps
    autonomy=Autonomy.L3,
    # simulate on Glastwin before every write
    verify="twin",
)

run = anneal.start(line="FL-2", product="CLR-4MM")
for step in run.stream():
    print(step.name, step.status, step.duration)
Reference

Reference sections

The parts you will come back to.

Tools

Tool definition reference

Every field of a tool definition: tags, direction, units, magnitude and rate limits, verification strategy and owner.

Agents

Agent definition reference

Goal statements, tool binding, autonomy levels, verification modes and escalation behaviour.

Policy

Autonomy policy schema

Level definitions, tag classes, approval chains, shift and interlock conditions, and site override rules.

Run API

REST and SSE reference

Endpoints, payloads, error codes, idempotency and webhook signature verification.

Twin

Simulation reference

Snapshot format, correction cadence, candidate scoring and the stress and seed limits that discard a recipe.

Audit

Log format and export

Entry schema, hash chaining, retention configuration and JSON or CSV export.

Genealogy

Ware record schema

Batch, melt, forming, lehr curve, defect map, stress map, agent actions, human approvals and standards mapping.

Connectors

Connector reference

OPC UA, Modbus, GigE Vision, REST and file-drop connectors, with the tag model each produces.

Models

Model registry

Versions, validation datasets, promotion history and rollback for every perception and control model.

Run timeline · scenario

Reading a run record

Every Glasent run is an ordered, inspectable sequence. This is scenario_fl2_01 on FL-2 · float line · clear soda-lime: Thickness change FL-2 · 6 mm to 4 mm clear float, residual stress inside spec, zero escaped seeds. It is a worked scenario that shows the shape of a run, not a measured customer result.

scenario_fl2_01 · agent graph · FL-2 10 nodes · 1 approval gate · scenario
01 · orchestrator ingest.order ✓ SUCCEEDED 02 · twin twin.simulate ✓ SUCCEEDED 03 · batch_melt melt.pull ✓ SUCCEEDED 04 · form_shape form.ribbon ✓ SUCCEEDED 05 · anneal_stress anneal.curve ✓ SUCCEEDED 06 · defect_inspect inspect.ribbon ✓ SUCCEEDED 07 · orchestrator yield.balance ✓ SUCCEEDED 08 · orchestrator approve.human ◆ APPROVAL 09 · robot_handling handle.stack ✓ SUCCEEDED 10 · orchestrator ware.qualify ✓ SUCCEEDED
scenario_fl2_01 FL-2 · float line · clear soda-lime scenario SUCCEEDED
  1. 01 ingest.order SUCCEEDED 0.9 s

    Plant Orchestrator · Pulled the 4 mm clear float spec, optical-grade tolerances and the standing energy window from plant MES; locked the target envelope for the run.

  2. 02 twin.simulate SUCCEEDED 41 s

    Glastwin · Simulated 36 candidate transition recipes across furnace pull, tin-bath ribbon speed and lehr curve; ranked them on seed risk, residual stress and energy per tonne.

  3. 03 melt.pull SUCCEEDED 6 m 20 s

    Meltrix · Stepped furnace pull toward the new ribbon mass flow while holding melt temperature and fining; chemistry stayed inside the composition window.

  4. 04 form.ribbon SUCCEEDED 4 m 05 s

    Formeon · Raised ribbon speed and re-angled the top rollers to thin the ribbon toward 4 mm; thickness converged inside the design tolerance.

  5. 05 anneal.curve SUCCEEDED 3 m 12 s

    Anneon · Re-shaped the lehr cooling curve for the thinner, faster ribbon so residual stress stays inside spec at the higher speed.

  6. 06 inspect.ribbon SUCCEEDED continuous

    Seedscan · 8 camera, optical and stress stations streaming; a seed cluster flagged at the ribbon edge and attributed to the pull transient, routed to cullet.

  7. 07 yield.balance SUCCEEDED 2.4 s

    Plant Orchestrator · Re-sequenced cut sizes so transition ribbon routes to cullet recovery and good ribbon to the highest-value open order.

  8. 08 approve.human APPROVAL 48 s

    Plant Orchestrator · The second pull step exceeded the site autonomy threshold. Held for the glass technologist on shift; approved and written to the audit log.

  9. 09 handle.stack SUCCEEDED 1 m 10 s

    Panebot · Re-planned pick and stack paths for the thinner panes; plates flagged by Seedscan diverted to cullet, good plates stacked to rack A3.

  10. 10 ware.qualify SUCCEEDED 1 m 02 s

    Plant Orchestrator · Lot released with full genealogy: batch, melt, forming, lehr curve, defect map, stress map and the technologist's approval.

Tool calls · scenario

Reading the tool log

Every tool invocation, argument and result is written to an immutable, human-readable log, and every reasoning step is expandable. Nothing about a run is hidden from the plant.

tool-call stream · scenario_fl2_01
  1. 02:14:03mes.read_orders({ line: "FL-2", next: "CLR-4MM" })
  2. 02:14:03ok spec locked · 4.0 mm · optical grade · stress limit set
  3. 02:14:04twin.simulate({ candidates: 36, horizon: "22 min" })
  4. 02:14:45ok best recipe #19 · seed risk low · stress inside spec
  5. 02:14:46policy.evaluate({ recipe: 19, autonomy: "L3" })
  6. 02:14:46ok 11 writes permitted · 1 write requires human approval
  7. 02:14:47scada.write_setpoint({ tag: "F1.PULL_SP", step: 1 })
  8. 02:21:07ok pull step 1 settled · fining stable · chemistry in window
  9. 02:21:08float.write_ribbon({ speed: "+", rollers: "re-angle" })
  10. 02:25:13ok thickness converging to 4.0 mm · flatness in tolerance
  11. 02:25:14lehr.write_curve({ zones: 12, profile: "4mm-fast" })
  12. 02:28:26ok residual stress inside spec at new belt speed
  13. 02:28:27vision.stream({ stations: 8, model: "seedscan-v3" })
  14. 02:28:41seed cluster · ribbon edge · attributed to pull transient
  15. 02:28:42cuopt.sequence({ objective: "cullet+energy" })
  16. 02:28:44ok transition ribbon routed to cullet · good ribbon to order
  17. 02:28:45approval.request({ action: "pull_step_2" })
  18. 02:29:33ok approved by the technologist on shift · logged
  19. 02:31:02isaac.plan_path({ stack: "A3", thickness: "4.0 mm" })
  20. 02:32:12ok paths validated in Isaac Sim · flagged plates diverted
  21. 02:33:15mes.log_lot({ lot: "FL2-4MM", genealogy: "full" })
  22. 02:34:17ok scenario run complete · stress in spec · 0 escaped seeds

Reasoning trace

Plan, thought, action, observation, exactly as the orchestrator would record it.

GoalMove FL-2 from 6 mm to 4 mm clear float with residual stress i…

Move FL-2 from 6 mm to 4 mm clear float with residual stress inside spec and zero escaped seeds.

PlanSimulate the transition on the twin first. Lead with furnace p…

Simulate the transition on the twin first. Lead with furnace pull so the ribbon mass flow is right before the forming change, then thin the ribbon, then re-shape the lehr curve. Watch the ribbon continuously; hold the second pull step for a human.

ThoughtThe standing recipe changes pull and ribbon speed together. On…

The standing recipe changes pull and ribbon speed together. On the twin that produces a fining transient that seeds the ribbon edge. Sequencing the pull step ahead of the forming change and holding fining removes most of it.

Actiontwin.simulate(candidates=36) returned recipe #19: pull in two …

twin.simulate(candidates=36) returned recipe #19: pull in two steps, forming change after fining settles, lehr curve re-shaped before belt speed rises.

ObservationRecipe #19 scored lowest on seed risk with stress inside spec.…

Recipe #19 scored lowest on seed risk with stress inside spec. Two candidates scored lower on energy but pushed residual stress over the site limit and were discarded.

ActionExecute recipe #19 under autonomy level L3: eleven setpoint wr…

Execute recipe #19 under autonomy level L3: eleven setpoint writes permitted, the second pull step routed to the glass technologist.

ObservationSeed cluster at the ribbon edge at 02:28:41, attributed to the…

Seed cluster at the ribbon edge at 02:28:41, attributed to the pull transient. cuOpt routed that ribbon to cullet recovery; no flagged plate reached a customer stack.

OutcomeScenario run complete. Thickness at 4.0 mm, residual stress in…

Scenario run complete. Thickness at 4.0 mm, residual stress inside spec, one approval gate, full genealogy written to the lot record.

Operations

Runbooks

What to do when something is not right, written for the shift, not for us.

Edge node offline

Control is already back with the plant

Confirm the plant's own systems hold the last known-good state, then restore the node. No action is pending from Glasent.

Approval queue stuck

A held step needs a named person

The run waits. Find the approver in the console or escalate per the site chain. Nothing moves until someone decides.

Model regression

Roll back by version

Every model is versioned. Roll back from the registry; the run engine picks it up on the next step.

Policy change

Treat it like a code change

Edit, review, sign, deploy. The policy version appears on every write made under it.

Autonomy

Four levels, set per agent and per tag

A plant does not go from manual to unattended in one step. Glasent makes the level explicit, auditable and reversible at any time, and the first release plan is shadow, then assist, then graduated autonomy.

Autonomy levels and the human role at each
LevelWhat the agent doesWhat the person doesWhen
L1 · Shadow and advisoryObserves, predicts and recommends setpoints with its reasoningEnters every change manually; a baseline is measuredPilot weeks 1 to 3
L2 · AssistProposes a write; it executes on approvalApproves each write in the review consolePilot weeks 4 to 8
L3 · BoundedWrites inside tag, rate and magnitude limits on low-risk loopsApproves pull steps, grade releases and anything above thresholdPilot week 9 onward
L4 · UnattendedRuns the approved envelope without promptingSets the envelope; reviews the shift recordPlanned, after graduated autonomy proves out
CLI

Start a run from anywhere

The same run engine, the same policy checks, the same audit trail, from the terminal, the review console or the SDK.

glasent · cli · scenario
$ glasent run "thickness change FL-2 to 4 mm" --autonomy L3

→ plan composed          10 steps · 1 approval gate
→ twin.simulate          36 candidates · best #19 · stress in spec
→ policy.evaluate        11 writes permitted · 1 held for human
→ executing              melt.pull ....... ok   6m20s
→ executing              form.ribbon ..... ok   4m05s
→ executing              anneal.curve .... ok   3m12s
! seed cluster           ribbon edge · attributed to pull transient
! approval required      pull step 2 · above site threshold
→ approved               glass technologist on shift · 02:29:33
→ run complete           scenario · stress in spec · 0 escaped seeds

$ glasent runs show scenario_fl2_01 --format genealogy
Limits

Platform limits and defaults

Defaults a site can tighten. None can be loosened past the tool definition.

Platform limits and defaults
ItemDefaultRangeWho changes it
Autonomy level on installL1 shadowL1 to L4Plant director
Max write step per tagPer tool definitionTightened per siteTool owner
Approval timeoutNo timeout; the run waitsFixedNobody
Twin candidates per run3610 to 100Technologist
Stations per lineAs surveyed4 to 24Deployment engineer
Audit retentionPlant storage, indefiniteSite policyPlant IT
Guardrails

An agent that can move a furnace needs a leash

Glasent writes to production equipment. Every capability is scoped, every write is policy-checked, and every action is written to an append-only audit log the plant owns.

  • Bounded action space. Each agent can only write to an explicit tag allow-list, inside per-tag rate and magnitude limits.
  • Policy engine before every write. Autonomy level, shift, product, interlock state and operator presence are all evaluated before a setpoint moves.
  • Human-in-the-loop gates. Anything above the site threshold, pull steps, grade releases, safety-adjacent moves, waits for a named approver.
  • Immutable audit log. Append-only, hash-chained, exportable, and retained on the plant's own storage.
  • Hard fallback. Loss of the edge node, the network or the model returns control to the furnace, forming and lehr systems' last known-good state.
  • Tenant and IP isolation. Compositions, forming recipes and defect libraries never cross a customer boundary. On-prem deployment available.

Compliance posture

Compliance and certification status
StandardScopeStatus
SOC 2 Type ICloud control plane RUNNING Planned in the first six months
SOC 2 Type IICloud control plane QUEUED Planned in months six to twelve
IEC 62443Plant-edge OT security RUNNING Design-aligned
ISO 9001 / IATF 16949Quality and genealogy records SUCCEEDED Record formats supported
Container and safety-glass standardsStress and defect conformance records SUCCEEDED Record formats supported

Read the security overview

Integrations

It speaks plant, not cloud

Glasent reads and writes through the furnace, forming, lehr, inspection and MES systems already on the floor. No rip-and-replace, no parallel historian, no new HMI to learn.

Furnace and batch

Furnace SCADA and PLC, batch-plant weighing, redox and fining instruments

Setpoint reads and guarded writes over OPC UA and Modbus

Forming

Float-bath and IS-machine controls, gob-weight and timing systems

Gob, pull, ribbon speed and roller reads; guarded writes

Annealing

Lehr zone controllers and belt drives

Zone temperature and curve reads; guarded writes

Inspection

Camera, optical, thermal, polariscope and birefringence stations

Frames, stress maps, defect records, line-speed streams

Glass MES

Orders, grades, lots and ware genealogy

Spec and tolerance reads; genealogy and release writes

Historian

Time-series stores and lab information systems

Backfill, replay and lab chemistry

Robotics

Robot cells, conveyors and stackers via NVIDIA Isaac

Pick, path and stack commands inside the safety envelope

Identity and edge

SSO and RBAC via SAML or OIDC; NVIDIA Jetson Orin edge nodes

Named approvers, tag-level roles, sub-100 ms inference

See all integrations

FAQ

Straight answers

The questions plant directors and glass technologists ask in the first meeting.

Yes, but only within an explicit tag allow-list with per-tag rate and magnitude limits, and only at the autonomy level your site has set. Every pilot starts in shadow mode, where Glasent predicts and recommends and a person enters everything. Writes come later, after the recommendations have earned it.

Get started

Get documentation access

The full documentation set is provisioned with a pilot. Ask for it when you scope the line.