Developers

Typed tools. Declared envelopes. Replayable builds.

The Powdrix SDK is a design preview of how an agent is defined, bounded and run: tools with a qualified parameter envelope and per-layer rate limits, autonomy policy as code, deterministic replay of any historical build against a new model, and a local twin harness. The API will change before release.

Python SDK · design previewCLI · design previewPolicy as code

run_7c2e4b · agent graph · PBF-2 · scenario 10 nodes · 1 approval gate
01 · orchestrator ingest.job ✓ SUCCEEDED 02 · parttwin twin.simulate ✓ SUCCEEDED 03 · prep_parameter prep.release ✓ SUCCEEDED 04 · recoat_powder recoat.check ✓ SUCCEEDED 05 · melt_layer melt.stabilise ✓ SUCCEEDED 06 · thermal_distortion thermal.compensate ✓ SUCCEEDED 07 · orchestrator approve.human ◆ APPROVAL 08 · robot_handling handle.depowder ✓ SUCCEEDED 09 · defect_inspect inspect.ct ✓ SUCCEEDED 10 · quality_conf release.qualify ✓ SUCCEEDED

Illustrative scenario: PBF-2 · Ti-6Al-4V bracket family, 24-part build, 23 of 24 parts released, one held

Concepts

Six objects

Everything in the SDK is one of these.

Agent

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 per build.

Agent

Tool

A connector call with a schema

Tools name parameters, units and whether they are read-only. Write tools carry an Envelope.

Toolread_only

Envelope

Qualified range and rate

The OEM-approved and qualified parameter range for a part family, with max_step per layers, enforced at call time by the policy engine and again at the machine boundary.

Envelope

Autonomy

L1 to L4

The level the floor has set for this agent, this machine, this part family. Approvals are routed to named humans for anything that affects qualification.

Autonomy.L1Autonomy.L3

Run

A job becoming a graph of steps

Start, stream, replay. Every step has an agent, a tool, a layer, a duration and a status, and the whole record is kept per build.

run.stream()run.replay()

Twin

verify=twin

Simulate a move on the part twin before it is written. Required for any agent configured with it.

twin.simulate
Developers

Define an agent, bound it, run it

The Powdrix SDK is typed Python. Tools are declared with schemas, a qualified parameter envelope and limits, 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.

What you get

  • Typed tool definitions with a qualified parameter envelope and per-layer rate limits
  • Deterministic replay of any historical build against a new model
  • Local twin harness so a recipe is simulated before it is released
  • Autonomy policy as code, versioned and reviewed like any other change

Read the docs Developer guide

pbf2_melt_agent.py
# Design preview. Bound the melt-pool agent to printer PBF-2.
from powdrix import Agent, Tool, Envelope, Autonomy

power = Tool(
    name="printer.trim_power",
    tags=["PBF2.LASER_POWER", "PBF2.SCAN_SPEED"],
    envelope=Envelope(qualified="BRK-TI-A", max_step="3%", per="4 layers"),
)

melt = Agent(
    id="agent.melt_layer",
    goal="density >= 99.7%, lack_of_fusion_risk < 0.2",
    tools=[power, Tool("holoscan.fuse", read_only=True)],
    # bounded writes inside the envelope; humans gate anything outside it
    autonomy=Autonomy.L3,
    # check the move against the twin before it is written
    verify="twin",
)

run = melt.start(printer="PBF-2", job="J-4471")
for step in run.stream():
    print(step.layer, step.name, step.status)
CLI

Start a build from anywhere

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

powdrix · cli · scenario
$ powdrix run "build J-4471 on PBF-2" --autonomy L3

→ plan composed          10 steps · 1 approval gate
→ twin.simulate          40 candidates · best #14 · distortion 0.06 mm
→ policy.evaluate        recipe inside envelope · 6 bounded writes permitted
→ executing              prep.release ....... ok   48s
→ executing              recoat.check ....... ok   layer 412 dosing +4%
→ executing              melt.stabilise ..... ok   layer 1872 power −3%
! approval required      hatch_change part 17 · outside envelope
→ declined               AM process engineer · part 17 → CT priority
→ executing              inspect.ct ......... ok   24 volumes · 11m
→ scenario complete      23 released · 1 NCR · genealogy complete

$ powdrix builds show run_7c2e4b --format genealogy
Run timeline · scenario

One scenario run, step by step

Every Powdrix run is an ordered, inspectable sequence. This is run_7c2e4b on PBF-2 · Ti-6Al-4V bracket family, 24-part build. Scenario completes in 10 steps with one approval gate. Twin recipe #14 selected, one lack-of-fusion precursor at layer 1,872 cleared by a bounded power trim, CT triage in 11 minutes, 23 of 24 parts released with full genealogy and one held for review.

run_7c2e4b PBF-2 · Ti-6Al-4V bracket family, 24-part build illustrative scenario SUCCEEDED
  1. 01 ingest.job SUCCEEDED 0.7 s

    Floor Orchestrator · Pulled the job from AM MES: 24 Ti-6Al-4V brackets, 60 µm layers, 3,140 layers, density target 99.7%, geometry tolerance ±0.10 mm, AS9100 evidence packet required. Locked the OEM-approved parameter envelope for PBF-2.

  2. 02 twin.simulate SUCCEEDED 6 m 12 s

    Part Twin · Simulated 40 candidate orientation, support and parameter recipes for thermal field, residual stress and distortion, ranked on predicted density, geometry deviation, takt and energy.

  3. 03 prep.release SUCCEEDED 48 s

    Prep-and-Parameter · Recipe #14 released: 32° orientation, lattice supports on two faces, laser power and speed inside the qualified envelope. Predicted distortion 0.06 mm, predicted density 99.8%.

  4. 04 recoat.check SUCCEEDED continuous

    Recoat-and-Powder · Recoater image checked every layer. Powder lot L-2291 on its third reuse, humidity in window. One short-feed at layer 412 corrected with a dosing increase before the next layer fused.

  5. 05 melt.stabilise SUCCEEDED continuous

    Melt-and-Layer · Melt-pool, photodiode and thermal streams fused at 120 fps. Lack-of-fusion risk rose to 0.61 on part 17 at layer 1,872 and was cleared by a 3% power trim inside the envelope within four layers.

  6. 06 thermal.compensate SUCCEEDED 2 m 04 s

    Thermal-and-Distortion · Interlayer temperature on the tall brackets ran 14 °C above the twin's prediction from layer 2,300. A 1.5 s interlayer dwell held the thermal field inside the predicted band through the top section.

  7. 07 approve.human APPROVAL 4 m 30 s

    Floor Orchestrator · Melt-and-Layer proposed a hatch-spacing change on part 17 beyond the qualified envelope. Held for the AM process engineer, who declined it and chose to flag part 17 for CT priority instead. Decision logged.

  8. 08 handle.depowder SUCCEEDED 38 m

    Robot-and-Handling · Plate unloaded by the handling cell on build complete, depowdered, and parts transferred to stress relief. Powder returned to the sieve with lot L-2291 reuse count incremented in genealogy.

  9. 09 inspect.ct SUCCEEDED 11 m

    Defect-and-Inspect · 24 CT volumes segmented for pores, cracks and lack of fusion in 11 minutes. 23 parts graded accept against the acceptance criteria. Part 17 shows a 180 µm indication at layer 1,870 and is routed to the inspector for disposition.

  10. 10 release.qualify SUCCEEDED 1 m 20 s

    Quality-and-Conformance · 23 parts released with the full genealogy: recipe, layer tags, melt-pool events, thermal trace, approvals, post-processing cycles and CT result. Part 17 held with a non-conformance opened. Evidence packet assembled for sign-off.

Tool calls · scenario

The agent shows its work

Every tool invocation, argument and result is written to an append-only, human-readable log, and every reasoning step is expandable. Nothing about a build is hidden from the floor or from the certification engineer.

tool-call stream · run_7c2e4b · timestamps span a 31-hour build
  1. 05:10:04mes.read_job({ printer: "PBF-2", job: "J-4471" })
  2. 05:10:05ok 24 parts · Ti-6Al-4V · 3,140 layers · envelope locked
  3. 05:10:05twin.simulate({ candidates: 40, targets: ["density", "geometry", "takt"] })
  4. 05:16:17ok best recipe #14 · distortion 0.06 mm · density 99.8% · takt 31.2 h
  5. 05:16:18policy.evaluate({ recipe: 14, autonomy: "L3" })
  6. 05:16:18ok recipe inside envelope · 6 bounded writes permitted
  7. 05:16:19printer.release_recipe({ id: 14, orientation: 32, supports: "lattice" })
  8. 05:17:07ok build started · layer 1 of 3,140
  9. 06:02:40recoat: short feed at layer 412 · dosing +4% applied
  10. 13:48:11precursor: lack-of-fusion risk 0.61 · part 17 · layer 1,872
  11. 13:48:12printer.trim_power({ part: 17, delta: "-3%", layers: 4 })
  12. 13:49:03ok risk 0.61 → 0.08 · pool stable
  13. 13:49:04approval.request({ action: "hatch_change", part: 17 })
  14. 13:53:34ok declined by AM process engineer · part 17 flagged CT priority
  15. 18:21:50printer.set_dwell({ interlayer: "+1.5 s", from_layer: 2300 })
  16. 18:23:54ok thermal field inside predicted band
  17. 12:20:30isaac.plan_grasp({ task: "unload_plate", cell: "RC-1" })
  18. 12:58:30ok depowdered · 24 parts to stress relief · lot L-2291 reuse 4
  19. 14:05:02ct.segment({ volumes: 24, criteria: "BRK-TI-A" })
  20. 14:16:02ok 23 accept · 1 indication 180 µm · part 17 → inspector
  21. 14:16:03packet.sign({ job: "J-4471", parts: 23, hold: [17] })
  22. 14:17:23ok scenario complete · 23 released · 1 NCR opened

Reasoning trace

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

GoalRun job J-4471, 24 Ti-6Al-4V brackets on PBF-2, to 99.7% densi…

Run job J-4471, 24 Ti-6Al-4V brackets on PBF-2, to 99.7% density and ±0.10 mm, with an AS9100 evidence packet on every released part.

PlanSimulate the recipe on the twin first. Release only inside the…

Simulate the recipe on the twin first. Release only inside the qualified envelope. Watch recoat and melt pool every layer, compensate thermally against the twin, and route anything outside the envelope to the process engineer. Triage every part by CT before release.

ThoughtThree candidate recipes beat #14 on takt but predicted distort…

Three candidate recipes beat #14 on takt but predicted distortion above 0.08 mm on the tall brackets. Takt is not worth a geometry failure on a qualified part family. Recipe #14 wins on the stated targets.

Actiontwin.simulate(candidates=40) returns recipe #14: 32° orientati…

twin.simulate(candidates=40) returns recipe #14: 32° orientation, lattice supports, power and speed inside the envelope, predicted distortion 0.06 mm.

ObservationLack-of-fusion risk 0.61 on part 17 at layer 1,872. A 3% power…

Lack-of-fusion risk 0.61 on part 17 at layer 1,872. A 3% power trim, inside the envelope, clears it in four layers. The proposed hatch change would leave the envelope, so it goes to a human and is declined.

ActionFlag part 17 for CT priority. Hold interlayer dwell at +1.5 s …

Flag part 17 for CT priority. Hold interlayer dwell at +1.5 s from layer 2,300 to keep the thermal field inside the twin's band.

ObservationCT confirms a 180 µm indication on part 17 at layer 1,870, two…

CT confirms a 180 µm indication on part 17 at layer 1,870, two layers below the precursor. The other 23 parts grade accept. The precursor, the action and the CT result are now one linked record.

OutcomeScenario complete. 23 parts released with full genealogy, part…

Scenario complete. 23 parts released with full genealogy, part 17 held with a non-conformance, CT triage in 11 minutes, no unapproved parameter left the envelope.

Autonomy

Four levels, set per agent and per machine

A qualified floor does not go from manual to unattended in one step. Powdrix makes the level explicit, auditable and reversible at any time, and human approval for anything that affects qualification stays mandatory until validation exists. The first release runs shadow mode, then assist mode, then graduated autonomy.

Autonomy levels and the human role at each
LevelWhat the agent doesWhat the human doesWhere it sits in a pilot
L1 · AdvisoryPredicts and recommends, with citations; nothing is writtenEnters every change manuallyShadow mode on one machine, first weeks of a pilot
L2 · SupervisedProposes a parameter, thermal or inspection move; it executes on approvalApproves each move in the review consoleAssist mode once accuracy is measured against CT
L3 · BoundedWrites inside the OEM-approved parameter envelope and per-tag limitsApproves anything that leaves the envelope or affects qualificationGraduated autonomy on low-risk loops, if the floor is satisfied
L4 · UnattendedRuns the envelope without promptingSets the envelope; reviews the shift recordPlanned; only after validation on the part family
Accelerated computing

Physical AI, at the melt pool

A build is thousands of layers and a day of machine time. Perception has to be local, deterministic and fast, CT has to be triaged in minutes, and the twin has to run before the build. Powdrix runs GPU inference at the printer edge and keeps training, simulation and optimisation in the cloud or on-prem.

Jetson Orin · DeepStream · Holoscan · TensorRT

Edge perception

One Jetson node per printer for 30 to 240 fps melt-pool, layer and recoater streams with photodiode and thermal fusion. Sub-250 ms alerting and 1 to 2 s bounded recommendations are the design targets. Jetson Thor is planned for multi-laser machines.

Triton · TensorRT · L4, L40S, A100

CT and vision inference

2D and 3D segmentation models for porosity, cracks, lack of fusion, surface defects and metrology comparison, served per inspection cell. Sub-15-minute CT triage per build is the design target.

DGX or HGX · NeMo

Training

Defect, melt-pool-instability, build-failure and AM reasoning models trained weekly over multimodal build data, with gated promotion from shadow to assist to bounded. Dedicated capacity is planned.

Omniverse · OVX

Part twin

Thermal, melt-pool-proxy, residual-stress and distortion simulation for recipe ranking, plus robot-cell and queue simulation. Modulus surrogates are planned so sweeps run at production cadence.

Cosmos · Omniverse Replicator

Synthetic data

Rare pore, lack-of-fusion, spatter, recoat-streak and distortion scenarios generated and validated against real CT and in-situ data before promotion. 1,000 to 10,000 per qualified part family is the initial target.

cuOpt · RAPIDS

Optimisation and analytics

Build nesting, fleet scheduling across machines, ovens, HIP, inspection and robots, energy windows, and GPU analytics over genealogy tables.

Isaac · Isaac Sim · NIM

Robot handling and serving

Plate, powder and part handling policies trained in simulation and run on Jetson in the cell. NIM packages perception, prediction and reasoning services behind the floor orchestrator.

Guardrails

An agent that can trim laser power needs a leash

Powdrix writes to production printers that make qualified parts. Every capability is scoped to the qualified envelope, every write is policy-checked, and every action is written to an append-only audit log the floor owns.

  • Bounded action space. Each agent writes only to an explicit allow-list of printer, oven and cell parameters, inside the OEM-approved envelope and per-tag rate and magnitude limits.
  • Policy engine before every write. Autonomy level, part family, qualification status, machine state and operator presence are evaluated before a parameter moves.
  • Human approval for qualification-impacting actions. Anything that leaves the qualified envelope, changes a validated recipe or affects a part's disposition waits for a named approver. This stays mandatory until validation exists.
  • Immutable audit log. Append-only and exportable. Every action records model version, data lineage, source signals, predicted impact, allowed range, approval status and qualification impact.
  • Hard fallback. Loss of the edge node, the network or a model returns control to the printer's own controller and the standing recipe.
  • Tenant and IP isolation. Parameter sets, part geometry, defect libraries and process memory never cross a customer boundary. On-prem deployment is available for sensitive producers.

Compliance posture

Compliance and certification status
ItemScopeStatus
SOC 2 Type ICloud control plane QUEUED Planned, first 6 months
SOC 2 Type IICloud control plane QUEUED Planned, 6 to 12 months
SSO and RBACConsole and approvals QUEUED Planned, 6 to 12 months
AS9100 and ISO 13485 assurance packagesEvidence packets and model change control QUEUED Planned, 6 to 12 months; not a certification claim
Standards-cited reasoningAS9100, ISO 13485, ASTM F42, ISO 52900 RUNNING In the design, every answer cites its source
Per-tenant isolation and on-prem optionRecipes, geometry, models, memory RUNNING In the design from day one

Read the security overview

FAQ

Straight answers

The questions operations directors, process engineers and certification engineers ask in the first meeting.

Only inside the OEM-approved parameter envelope, only on an explicit allow-list with per-tag limits, and only at the autonomy level your floor has set. Level 1 is advisory: Powdrix predicts and recommends and a human enters everything. Design partners start there, in shadow mode. Anything that leaves the envelope or affects qualification always waits for a named approver.

Get started

Ask for early access

The SDK and CLI are design previews. Tell us what you would build and we will tell you where it stands.