A goal, tools and an autonomy level
An agent declares what it is for, what it may call and how far it may go without a human. Its runs are typed and logged.
The Orebex SDK is a design preview of how an agent is defined, bounded and run: tools with unit-aware ranges, rate limits and operating envelopes, autonomy policy as code, deterministic replay of any historical run against a new model, and a local twin harness. The API will change before release.
Illustrative scenario: Line 1 · SAG and ball circuit, rougher bank 2 · copper porphyry blend, one shift, one approval gate
Everything in the SDK is one of these.
An agent declares what it is for, what it may call and how far it may go without a human. Its runs are typed and logged.
Tools name tags, units and whether they are read-only. Write tools carry Limits and an operating envelope.
max_step per period, absolute floors and ceilings, and the envelope per blend or ore type, enforced at call time by the policy engine and again at the OT boundary.
The level the plant has set for this agent, this tag, this shift. Approvals are routed to named humans above the threshold.
Start, stream, replay. Every step has an agent, a tool, a duration and a status, and the whole record is kept per circuit and lot.
Simulate a move on the as-run twin before it is written. Required for any agent configured with it.
The Orebex SDK is typed Python. Tools are declared with schemas, limits and the operating envelope for the blend, and the policy engine enforces them at call time, not in a review meeting. This is a design preview; the API will change before release.
# Design preview. Bound the grind agent to SAG mill SAG-1.
from orebex import Agent, Tool, Limit, Autonomy
feed = Tool(
name="mill.set_feed",
tags=["SAG1.FEED_TPH", "CL1.WATER_M3H"],
limits=[Limit(max_step="3%", per="300s", envelope="blend-B14")],
)
grind = Agent(
id="agent.crush_grind",
goal="P80 150 um +/- 10, least kWh per tonne, throughput inside plan",
tools=[feed, Tool("psa.read_p80", read_only=True)],
# bounded writes on feed and water; reagent scheme stays with a human
autonomy=Autonomy.L3,
# simulate on the twin before every write
verify="twin",
)
run = grind.start(line="L1", blend="B-14")
for step in run.stream():
print(step.name, step.status, step.duration)
The same run engine, the same policy checks, the same audit trail, from the terminal, the review console or the SDK. Design preview.
$ orebex run "day shift, line 1, blend B-14" --autonomy L2+
→ plan composed 10 steps · 1 approval gate
→ twin.simulate 32 candidates · best #7 · recovery on plan
→ policy.evaluate 8 writes permitted · collector_dose held for human
→ executing grind.setpoint ... ok 3m40s
→ executing froth.read ....... ok continuous
! approval required collector_dose R2 +6%
→ approved shift metallurgist · 07:19:44
→ executing float.dose ....... ok 2m05s
→ executing optimise.targets . ok 18s
→ scenario complete grade 25.6% Cu · lot C-20931 released
$ orebex runs show run_4b9e27 --format genealogy
Every Orebex run is an ordered, inspectable sequence. This is run_4b9e27 on Line 1 · SAG and ball circuit, rougher bank 2 · copper porphyry blend. Scenario completes in 10 steps with one approval gate. P80 held at 148 µm as the blend hardened, froth stability recovered on rougher bank 2 after an air trim, a collector-dose change was approved by the shift metallurgist, predicted recovery held inside the plan, lot C-20931 released with full genealogy.
Concentrator Orchestrator · Pulled the shift plan from the concentrator MES: copper porphyry blend B-14, P80 target 150 µm, concentrate grade at or above 25% Cu, recovery target per the geometallurgy model, energy and water budgets. Locked the operating envelope for the blend.
Concentrator Twin · Simulated 32 candidate grind, air and reagent schemes on the as-run twin for the hardening blend, ranked on predicted recovery, concentrate grade, kWh per tonne and water per tonne. Two candidates breached the thickener bed limit and were discarded.
Crush-and-Grind · SAG-1 feed trimmed 3% and cyclone water raised as load and power signatures read a harder feed. P80 from the particle-size analyzer held at 148 µm against the 150 µm target; mill power stayed inside the energy budget.
Grade-and-Froth · Twelve froth cameras and the online XRF on rougher bank 2 fused at the edge. Froth stability on cells 3 and 4 fell as the blend hardened; predicted recovery drifted 0.4 points below plan. Early warning published to the control agents.
Concentrator Orchestrator · Scheme #7 raises collector dose 6% on rougher bank 2, above the standing reagent scheme. Reagent-scheme changes stay supervised on this blend, so the step was held for the shift metallurgist and approved at 07:19:44.
Float-and-Reagent · Approved collector dose applied with an air trim of 4% down on cells 3 and 4 inside the envelope. Froth stability recovered within eight minutes; predicted recovery returned to plan with concentrate grade read at 25.6% Cu.
Separate-and-Classify · One cyclone brought online in cluster 1 as feed density rose with the hardness change, holding overflow size and circulating load inside the plan.
Thicken-and-Dewater · Tailings thickener TH-2 flocculant dose trimmed as bed pressure rose; underflow density held and overflow clarity stayed inside the water-recovery target.
Throughput-and-Recovery · Whole-plant targets recomputed for the hardened blend: feed rate, P80, air and reagent targets handed to the control agents with recovery, grade, energy and water inside the budget. The losing candidates and their scores are in the run record.
Quality-and-Conformance · Concentrate lot C-20931 released: genealogy written (blend, grind record, reagent and air moves, froth and grade reads, approvals, dewatering record, assays as they land) and dispositioned against the concentrate spec with cited evidence for the metallurgist's sign-off.
Every tool invocation, argument and result is written to an append-only, human-readable log, and every reasoning step is expandable. Nothing about a run is hidden from the plant.
Plan, thought, action, observation, exactly as the orchestrator would record it.
Run the day shift on line 1 inside the plan for blend B-14: P80 at 150 µm, concentrate grade at or above 25% Cu, recovery maximised, energy and water inside budget.
Simulate grind, air and reagent schemes on the twin first. Lead with the grind so the liberation size is right before flotation sees it, then read the froth, then dose. Hold any reagent-scheme change for a human.
The blend is hardening. Holding feed rate would coarsen P80 and under-liberate; the twin predicts a 3% feed trim with more cyclone water holds P80 at the cost of a little throughput, and that protecting liberation is worth more than the tonnes.
twin.simulate(candidates=32) returns scheme #7: SAG-1 feed down 3%, cyclone water up, collector dose up 6% on rougher bank 2, air down 4% on cells 3 and 4.
Scheme #7 predicts recovery on plan, grade 25.5% Cu and energy inside budget. Two candidates with higher predicted recovery pushed the tailings thickener past its bed limit and were discarded.
Execute scheme #7: eight bounded writes permitted on grind, air, cyclones and dewatering; the collector-dose write routed to the shift metallurgist.
Froth stability fell on cells 3 and 4 at 07:18:30 with predicted recovery 0.4 points under plan. The approved dose and the air trim recovered it within eight minutes; grade read 25.6% Cu.
Scenario complete. P80 held, grade on spec, recovery on plan, lot C-20931 released with full genealogy.
A concentrator does not go from manual to unattended in one step. Orebex makes the level explicit, auditable and reversible at any time. The first release runs shadow mode, then assist mode, then bounded autonomy on low-risk grinding and flotation loops. Reagent-scheme changes stay supervised until the ore type is characterised.
| Level | What the agent does | What the human does | Where it sits in a pilot |
|---|---|---|---|
| L1 · Shadow | Reads froth, analyzer, particle, mill, flotation, dewatering, robot and MES signals; predicts and recommends; writes nothing | Runs the circuit as today; compares predictions to assays and metallurgist outcomes | Shadow mode, baseline measured first |
| L2 · Assist | Proposes grind, reagent, air, froth and dewatering moves with evidence, confidence, envelope and rollback path | Approves each action in the review console | Assist mode, the remainder of a 90 to 120 day pilot |
| L3 · Bounded | Executes pre-approved low-risk grinding and flotation loop moves: feed, water, air, level, flocculant, cyclones online, inside APC, DCS and envelope limits | Approves reagent-scheme changes and lot release | Graduated autonomy, after audited accuracy and ROI |
| L4 · Constrained auto-control | Supervised reagent-scheme adaptation for characterised ore types, across circuits and sites | Sets the envelope; reviews the shift record and the evaluation results | Planned; after golden-dataset evaluation, twin validation and metallurgist sign-off |
Froth changes in seconds and a shift of feed is gone before the assay lands. Perception has to be local, deterministic and fast, so Orebex runs GPU inference at the plant edge and keeps training, simulation and optimisation in the cloud or on-prem.
8 to 24 froth cameras per bank at 15 to 30 FPS plus online XRF, particle-size, pump, level, air, reagent, density and energy streams fused at the plant edge. Sub-250 ms froth inference and local fail-safe through a network outage are the design targets. Jetson Thor is planned.
Froth, particle and mineralogy, recovery prediction, time-series anomaly and metallurgy retrieval models behind one orchestrator at the plant edge, 20 to 60 per site as a design target, with versioned canaries and rollback.
Froth segmentation, bubble velocity and stability, grade and recovery prediction, ore hardness, grind-size response, reagent response and metallurgy assistants trained on froth video, analyzer readings, telemetry and metallurgist corrections. 2,000 to 8,000 GPU-hours per commodity model family is the design target once partner data exists.
Grinding, flotation, classification and dewatering simulated as-run against as-designed before the shift. GPU comminution and DEM, flotation and geometallurgy simulation is the workload; physics-informed surrogates with Modulus are planned so schemes rank at production cadence.
Rare froth-collapse, feed-upset, mineralogy-shift, equipment-drift and camera-fouling cases generated and validated against real assay distributions before promotion. 50k to 250k scenarios per commodity and circuit class is the design target.
Throughput, energy, water and reagent allocation and the grade and recovery trade-off solved before the shift and during upset recovery, and handed to the control agents as targets.
Sampling routes, reagent tote inspection and inspection rovers trained and validated in simulation before they run on site. Assistive until the safety case is proven.
Daily features from froth, analyzer, mill, flotation, dewatering and genealogy telemetry for retraining, drift detection and recovery, energy, water and reagent benchmarks.
Orebex writes to production equipment. Every capability is scoped, every write is policy-checked against the operating envelope, and every action is written to an append-only audit log the plant owns.
| Item | Scope | Status |
|---|---|---|
| SOC 2 Type I | Cloud control plane | QUEUED Planned, first 6 months |
| SOC 2 Type II | Cloud control plane | QUEUED Planned, 6 to 12 months |
| SSO and RBAC | Console and approvals | QUEUED Planned, 6 to 12 months |
| Environmental and water assurance packages | Recovery, energy, water and tailings evidence | QUEUED Planned, 6 to 12 months; not a certification claim |
| Standards-cited reasoning | ISO, ICMM, tailings and water governance documents | RUNNING In the design, every answer cites its source |
| Per-tenant and ore-body isolation | Ore data, schemes, models, memory | RUNNING In the design from day one |
| On-prem and plant-edge deployment | Remote and IP-sensitive sites | RUNNING Design option |
The questions processing managers, metallurgists and sustainability leads ask in the first meeting.
Yes, but only within an explicit tag allow-list with per-tag rate and magnitude limits, inside the operating envelope for the blend, and only at the autonomy level your plant has set. Design partners start in shadow mode, where Orebex writes nothing. Reagent-scheme changes stay supervised by a named metallurgist until the ore type is characterised.
Control returns to the APC or DCS last known-good state. Orebex is a supervisory layer on top of the control systems and interlocks you already run, never a replacement for them, so an outage degrades the circuit to its current way of running, not to a stop. The edge is designed to run fail-safe through a network outage.
Advisory recommendations start from the twin and the shift plan in the first weeks. Froth, grade, recovery and grind-response prediction improve as circuit history and assay-labelled outcomes accumulate per ore type. The compute plan sizes training at 2,000 to 8,000 GPU-hours per commodity model family once partner data exists, a design target.
Only if you choose cloud training. Ore-body data, geometallurgy models, reagent schemes, process models and recovery records are isolated per tenant and never used to train another customer's models. A fully on-prem deployment at the plant edge is available for remote and IP-sensitive sites, and federated learning across sites is planned and waits on data-rights agreements.
You are, the same as with any control strategy, which is why every write is policy-checked, bounded, logged and reversible, and why anything above your risk threshold waits for a named approver. The audit log records the request, the evidence, the envelope applied and the human decision.
A paid pilot of 90 to 120 days on one grinding or flotation circuit, scoped to a single wedge with a success metric written into the order form: recovery gain, energy per tonne saved, water reduction or reagent per tonne. The first weeks baseline recovery, energy and water in shadow mode from your own assays and meters.
The SDK and CLI are design previews. Tell us what you would build and we will tell you where it stands.
↑↓ navigate↵ openesc close