Skip to main content

DevAgent Smart Physical Engine

PyPI Python Status: Production/Stable

Verification-first commissioning engineering for robotics and industrial automation.

DevAgent turns a customer engineering folder into a bounded verification workflow with immutable Digital Twin lineage, deterministic requirement verdicts, requirement-driven test cases, exact-Twin measured simulation evidence, regression analysis, FAT reporting, replay inspection, and selective retesting.

customer engineering files
    ↓
intake + SHA-256 inventory
    ↓
validated Requirement → Criterion mapping
    ↓
immutable Digital Twin revision
    ↓
requirement-driven nominal / boundary / fault cases
    ↓
qualified exact-Twin simulation when supported
    ↓
measured evidence
    ↓
PASS / FAIL / NOT_TESTED
    ↓
regression + FAT report + Evidence Viewer

AI proposes. Deterministic engines validate, compile, verify, measure, and gate promotion. OEM robot controllers, PLCs, safety PLCs, and certified safety systems remain authoritative.

Quick start

Python 3.11+ is required.

python -m pip install --upgrade devagent-physical-engine==1.8.2

Verify the installed package:

python -c "import devagent_physical_engine as d; print(d.__version__)"

Expected:

1.8.2

Run the normal customer workflow:

devagent verify ./customer-project

Request simulation:

devagent verify ./customer-project --simulate

Open the Evidence Viewer and keep the engineering terminal active:

devagent verify ./customer-project --simulate --open

For machine-readable CI output:

devagent verify ./customer-project --json

Inspect truthful robot support tiers:

devagent robots

For the exact ABB IRB1200 experimental visual runtime:

devagent robot doctor abb_irb1200
devagent robot visualize abb_irb1200

Default locations:

Evidence database: ~/.devagent/projects.db
Results:           <customer-project>/devagent-results/

What DevAgent proves

DevAgent separates planning, execution, measurement, verdicts, and authority.

requirement
  ↓
verification criterion
  ↓
verification case
  ↓
exact Twin revision/hash
  ↓
qualified simulation when available
  ↓
measured evidence
  ↓
PASS / FAIL / NOT_TESTED

A generated plan is not physical proof. A replay is not a new execution. A simulation result does not grant site qualification or real-robot authority.

Current hard boundaries remain:

site_qualification = false
real_execution_allowed = false

unless separately proven by an appropriate qualified process.

v1.6 report-test visual execution foundation

v1.6 connected report tests to the exact stored Twin instead of a separate demo scene.

A supported physical report test follows:

Requirement
  → stable Test ID
  → immutable Requirement → Case mapping
  → exact Verification Plan ID/hash
  → exact Case ID
  → exact Twin revision/hash
  → qualified Gazebo/MoveIt execution
  → typed physical_measurement artifact
  → deterministic verdict

Interactive example:

devagent> tests
devagent> simulate TEST-PERF-001

Measured physical criteria include:

cycle_time_max_s
minimum_clearance_m
final_tcp_error_max_m
max_tracking_error_rad
collision_free
physical_completed

Structural/Twin criteria include:

planning_allowed
physics_allowed
entity_present
validation_issue_absent
twin_state

A requirement without deterministic evidence remains NOT_TESTED; it is never auto-passed from prose or AI interpretation.

v1.6.1 support-contact lift hotfix

The packaged UR5e reference load starts with the workpiece resting on its source support. During attached-object lift departure, DevAgent preserves the complete live MoveIt Allowed Collision Matrix and temporarily enables exactly the attached-workpiece ↔ source-support pair.

That allowance is scoped only to lift departure. Transfer/place keep normal collision checking. DevAgent does not globally disable collision checking or replace the live matrix with an unsafe sparse matrix.

v1.6.2 slower measured visual execution

The packaged visual task uses conservative MoveIt scaling so motion is inspectable while remaining real trajectory execution:

velocity scale:      12%
acceleration scale:   8%

The joint-state recorder also rejects duplicate/backward ROS timestamps instead of manufacturing synthetic time. Collision, endpoint, tracking, Twin-lineage, and authority checks remain fail-closed.

v1.7 industrial PTP/LIN execution

v1.7 moves the qualified UR5e report test to the MoveIt Pilz Industrial Motion Planner rather than hand-building interpolation.

The bounded task sequence is:

HOME
  ↓ PTP
PRE_PICK
  ↓ LIN
PICK
  ↓ grasp hard boundary
LIFT
  ↓ LIN support departure hard boundary
TRANSFER
  ↓ PTP
PLACE
  ↓ LIN release hard boundary
RETRACT
  ↓ LIN
HOME
  ↓ PTP

Original v1.7 execution groups:

approach_pick    PTP → LIN
lift_departure   LIN
transfer_place   PTP → LIN
retreat_home     LIN → PTP

Conservative limits:

PTP velocity scale:       10%
PTP acceleration scale:    6%
LIN velocity scale:        6%
LIN acceleration scale:    4%
requested blend radius:   12 mm
workpiece follow target:   60 Hz

MoveIt/Pilz owns geometry, timestamps, collision checking, velocity/acceleration time parameterization, and the returned RobotTrajectory. DevAgent does not fake smoothness with teleports or sleeps.

v1.7.1 adaptive Pilz blend hotfix

A real ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz target-stack run showed:

approach_pick    PASS
lift_departure   PASS
transfer_place   Pilz FAILURE(99999)
execution        NOT STARTED

Pilz can reject a sequence when a requested blend sphere is not feasible for that specific geometry. v1.7.1 therefore keeps the same PTP/LIN targets, attached/world scene contract, collision policy, velocity/acceleration limits, and execution authority while retrying only the internal blend radius:

12 mm
  ↓ if Pilz returns pilz_sequence_planning_failed
6 mm
  ↓
3 mm
  ↓
0 mm

Every candidate is still planned and collision-checked by MoveIt/Pilz. DevAgent selects the largest candidate Pilz actually accepts. If the zero-blend candidate fails, execution remains blocked.

The fallback is intentionally narrow:

no target modification
no planner-type substitution
no collision disable
no speed increase
no hand-built interpolation
no fake PASS
no fallback to an unqualified simulator or robot

The selected blend radii and every planning attempt receipt remain attached to motion metadata for auditability.

v1.7.2 transfer/place diagnostic hotfix

A target-stack qualification run proved that transfer_place still returned Pilz FAILURE(99999) for every v1.7.1 blend candidate, including zero blend. v1.7.2 therefore does not keep guessing at blend values. When that exact bounded failure occurs, DevAgent remains fail-closed and runs two independent plan-only probes against the same attached-workpiece PlanningScene:

lift target
   ↓
transfer PTP probe
   ↓ independent start at transfer target
place LIN probe

The result is classified deterministically as one of:

pilz_transfer_segment_planning_failed
pilz_place_segment_planning_failed
pilz_transfer_and_place_segment_planning_failed
pilz_transfer_place_sequence_composition_failed

Each probe writes its own request/receipt plus a transfer-place-diagnostic.json summary. These probes never execute motion and never relax targets, planner types, collision policy, attached-workpiece scene state, velocity/acceleration limits, Twin lineage, or real-execution authority. Their purpose is to identify the exact target-stack defect before changing physical execution semantics.

v1.8 truthful robot support + ABB IRB1200 visual runtime

v1.8 makes robot support explicit instead of implying that every built-in robot profile has the same simulator authority.

Support is exposed through:

devagent robots
devagent robot doctor <robot>
devagent robot visualize <robot>

The exact abb_irb1200 profile adds an experimental visual runtime using Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic, gz_ros2_control, upstream ABB IRB1200 geometry, MoveIt, and RViz. Runtime readiness is bounded on controller state, /joint_states, FollowJointTrajectory, move_group, and RViz availability.

For the Golden ABB cell, DevAgent can load the waypoint seed, pre-plan every phase through MoveIt before sending any simulated trajectory, then execute the preview while Gazebo/RViz remain open for inspection.

This is intentionally visual simulation availability, not measured FAT qualification. ABB preview evidence is not promoted to a qualified physical measurement, and real_execution_allowed remains false. The normal One-Command ABB FAT path continues to fail closed until an exact-Twin measured ABB execution adapter is separately qualified.

Generic abb_irb, FANUC CRX, and KUKA KR profiles remain model-only until equivalent vendor/model visual runtimes are implemented and qualified.

v1.8.1 direct UR5e controller/action readiness hotfix

A real UR5e target-stack run proved that Gazebo, gz_ros2_control, the controller manager, joint-state broadcaster, and scaled_joint_trajectory_controller could all initialize successfully while DevAgent remained stuck in startup readiness until the 120-second timeout. The old UR5e readiness gate depended on ROS CLI graph commands and expected the unscaled /joint_trajectory_controller/follow_joint_trajectory action even when the active controller was the scaled UR controller.

v1.8.1 makes UR5e readiness and trajectory execution use one controller-binding contract. A short-lived direct rclpy probe calls /controller_manager/list_controllers, deterministically selects the active trajectory controller, verifies its exact FollowJointTrajectory action server, and returns the bound action name. Required UR5e joint-state readiness continues to use the direct machine joint-state probe.

The readiness gate therefore no longer depends on a long-lived ros2 daemon, ros2 node list, ros2 topic list, or ros2 action list. It remains fail-closed on missing controller-manager service, no active trajectory controller, ambiguous active controllers, a missing trajectory action server, or missing required UR5e joint state. No collision rule, Pilz target, motion speed, Twin lineage, site-qualification boundary, or real-execution authority is relaxed.

v1.8.2 scoped destination-support place contact

A clean v1.8.1 UR5e target-stack run reached exact-Twin read-back and independently proved that transfer PTP planning succeeds while the attached-workpiece place LIN segment fails. v1.8.2 converts that evidence into a narrow placement contract rather than disabling collision checking.

The qualified report runtime now uses hard transfer/place boundaries:

approach_pick       PTP → LIN
lift_departure      LIN
transfer_departure  PTP
transfer_place      LIN   # place only
retreat_home        LIN → PTP

transfer_departure remains normally collision checked. Only the single zero-blend place LIN planning request may add one request-local Allowed Collision Matrix pair:

attached workpiece ↔ declared destination support

The place probe starts from the complete live MoveIt ACM, preserves every existing entry, enables only that symmetric pair, and applies the matrix only to the request-local PlanningScene diff. The transfer path cannot inherit the allowance. No global/live destination-contact lease remains active after planning.

The v1.8.2 place receipt records the exact destination support id, workpiece id, phase, and contact scope. Missing destination identity, a non-attached scene, a non-LIN place planner, nonzero place blending, malformed support identity, or mismatched receipt fails closed.

The release does not change real-execution authority, site qualification, target poses, conservative motion scales, or the rule that every motion group must preflight successfully before execution begins.

Qualified visual-execution scope

Measured report-test execution remains intentionally narrow:

robot:       UR5e
operation:   load
case scope:  one nominal mapped physical report case
runtime:     Ubuntu 24.04 + ROS 2 Jazzy + Gazebo Harmonic + MoveIt/Pilz

Unsupported customer Twins, unqualified robot profiles, boundary/fault cases outside the qualified scope, ambiguous case mappings, or incomplete lineage fail closed.

ABB IRB1200 is separately exposed as SIMULATION_AVAILABLE_EXPERIMENTAL: Gazebo/MoveIt/RViz preview is available, but it does not silently enter the UR5e measured FAT executor and cannot promote physical evidence.

Interactive engineering session

Use --interactive, or --open from a real terminal, to keep a bounded prompt:

status
tests
test SELECTOR
simulate [SELECTOR]
rerun [SELECTOR]
rerun failed
rerun blocked
rerun affected
replay
report
log
help
quit

Selectors can be requirement IDs, test IDs, or bounded groups:

REQ-PERF-001
TEST-PERF-001
failed
blocked
affected
all

test SELECTOR evaluates deterministic/evidence checks without commanding the simulator.

simulate TEST-X requests qualified execution of the selected mapped physical report case.

replay reconstructs persisted evidence identity; it never commands Gazebo, MoveIt, a robot, PLC, or safety PLC.

Customer input

A customer folder can contain the engineering material the team already has:

ACME_CNC_CELL_TEST/
├── project.yaml
├── requirements.xlsx
├── devagent-twin.yaml
├── robot.urdf
├── robot.urdf.xacro
├── robot.srdf
├── tcp.yaml
├── calibration.yaml
├── layout/
│   ├── cell_layout.yaml
│   └── meshes/
├── robot_program/
│   └── mission.yaml
└── expected/
    └── expected_findings.json

Important rule:

file discovered != engineering fact proven

DevAgent fingerprints and classifies files, but filenames do not prove poses, TCPs, calibrations, collision geometry, safety behavior, or physical performance.

The root expected/ folder is test-oracle material and is never promoted as engineering authority.

If critical information is missing or ambiguous, DevAgent writes questions into the project results instead of guessing.

Results and evidence

Typical output:

customer-project/
└── devagent-results/
    ├── RUN.log
    ├── SUMMARY.json
    ├── INTAKE.json
    ├── QUESTIONS.md
    ├── normalized/
    │   ├── requirements.csv
    │   └── devagent-twin.yaml
    ├── report-test-visualization/
    ├── FAT_REPORT.html
    └── EVIDENCE.html

EVIDENCE.html is read-only engineering evidence. RUN.log is a human debug/progress trace and does not replace immutable evidence artifacts.

Repeat runs compare the immediately previous campaign with the current campaign before a new FAT artifact is finalized.

Physical simulation setup

pip install does not install ROS 2, Gazebo, MoveIt, OEM drivers, or privileged operating-system packages.

Reference stack:

Ubuntu 24.04
ROS 2 Jazzy
Gazebo Harmonic
gz_ros2_control
MoveIt 2

UR5e measured report-test execution additionally uses the Universal Robots ROS 2 driver, ur_simulation_gz, and Pilz Industrial Motion Planner.

Preview UR5e setup:

devagent-physical setup --profile ur5e-sim --dry-run

Apply explicitly:

devagent-physical setup --profile ur5e-sim --yes

Check the UR5e runtime:

devagent-physical ros doctor

Check ABB IRB1200 visual runtime prerequisites:

devagent robot doctor abb_irb1200

Launch ABB IRB1200 Gazebo + MoveIt + RViz preview:

devagent robot visualize abb_irb1200

Hosted CI validates deterministic software contracts. It does not pretend to execute a graphical ROS/Gazebo/MoveIt target stack. Target-stack acceptance must run on the intended workstation.

Optional AI providers

AI is optional and advisory.

python -m pip install "devagent-physical-engine[openai]"
python -m pip install "devagent-physical-engine[anthropic]"
python -m pip install "devagent-physical-engine[gemini]"
python -m pip install "devagent-physical-engine[ai]"

Typical credentials:

export OPENAI_API_KEY="..."
export ANTHROPIC_API_KEY="..."
export GEMINI_API_KEY="..."

Provider-backed interpretation cannot grant physical truth, site qualification, functional-safety certification, or real-execution authority.

Installed CLIs

devagent             one-command verification, interactive report testing, robot support/visualization
devagent-commercial  commercial/evidence workflow
devagent-physical    deterministic core + ROS/qualification tools
devagent-physical-ai optional provider-backed engineering front end

Simple Mode exit codes

Exit Meaning
0 bounded full verification is release-ready
10 customer input or operational contract failure
30 more engineering information is required
31 requested simulation is blocked/unqualified
32 verification completed but full release readiness is false

Project status

v1.8.2 — Production/Stable software workflow

v1.8.2 retains the v1.8.1 direct UR5e controller/action binding, v1.8 truthful robot support tiers, and ABB IRB1200 experimental visual runtime. It additionally splits UR5e transfer and placement at a hard motion boundary and scopes destination-support contact to the single zero-blend LIN place planning request, using a request-local full-ACM diff for exactly the attached-workpiece ↔ destination-support pair.

Production-oriented software capabilities include:

one-command customer intake
XLSX requirement normalization
validated Requirement → Criterion mapping
optional provider-backed advisory criterion proposals
requirement-driven nominal / boundary / fault case generation
immutable project/Twin lineage
exact Requirement → Mapping → Verification Plan → Case provenance
truthful robot support tiers
qualified UR5e report-test visual execution contract
direct UR5e controller-manager/action readiness binding
scoped destination-support place contact
experimental exact ABB IRB1200 Gazebo/MoveIt/RViz preview
industrial Pilz PTP / LIN planning
adaptive bounded blend selection
plan-only transfer/place segment diagnostics
lift-only source-support contact lease + exact restore
Gazebo/MoveIt selected-case visualization
typed physical measurement binding
deterministic campaigns
repeat-run regression
professional FAT / Evidence Viewer
interactive selective verification
Evidence Bundle + replay
change impact + regression
provider-neutral optional AI front end

Production/Stable describes the bounded software workflow. It does not claim arbitrary customer cells are physically qualified, site-qualified, functionally safe, or authorized for autonomous real execution.

Documentation

One-command verification: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ONE_COMMAND_VERIFY_V13.md

Report-test visual execution foundation: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/REPORT_TEST_VISUAL_EXECUTION_V16.md

Evidence Trust / replay / viewer: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/EVIDENCE_TRUST_V12.md

Measured physical runtime: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/MEASURED_PHYSICAL_RUNTIME.md

Commercial project spine: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/COMMERCIAL_PROJECT_SPINE.md

Architecture: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/ARCHITECTURE.md

Canonical Twin runtime: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/CANONICAL_TWIN_RUNTIME.md

Laptop acceptance: https://github.com/tomha85/devagent-physical-engine/blob/main/docs/LAPTOP_ACCEPTANCE.md

Ownership

DevAgent Smart Physical Engine
Copyright © 2026 Tom Ha
Original creator: Tom Ha
Original project: https://github.com/tomha85/devagent-physical-engine
All rights reserved.

See repository LICENSE, NOTICE, and COPYRIGHT for complete ownership and usage terms.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

devagent_physical_engine-1.8.2.tar.gz (416.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devagent_physical_engine-1.8.2-py3-none-any.whl (402.2 kB view details)

Uploaded Python 3

File details

Details for the file devagent_physical_engine-1.8.2.tar.gz.

File metadata

  • Download URL: devagent_physical_engine-1.8.2.tar.gz
  • Upload date:
  • Size: 416.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for devagent_physical_engine-1.8.2.tar.gz
Algorithm Hash digest
SHA256 3fd03a9ae67438eff1dd3b123a6c2369cc3fe139ed3c693087666e75c790e210
MD5 b5f59b9c3a928621b78b403e5f77971a
BLAKE2b-256 ea53c5a4bdb99b185b60500217a541faf6432ef442c5621e7d107419f35dff4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for devagent_physical_engine-1.8.2.tar.gz:

Publisher: release.yml on tomha85/devagent-physical-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devagent_physical_engine-1.8.2-py3-none-any.whl.

File metadata

File hashes

Hashes for devagent_physical_engine-1.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 18ecf458e8d4d7d4667704c7c336a335bdb9c0546e33b6cce28edefeec803de5
MD5 3e3a046fc9797116ed4392dc698d49d6
BLAKE2b-256 d8286035858dc6665c7fe250bd3716ac7eb3dd3cbad31b522a8b40297108e7b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for devagent_physical_engine-1.8.2-py3-none-any.whl:

Publisher: release.yml on tomha85/devagent-physical-engine

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

1.9.1

2 files

1.9.0

2 files

1.8.9

2 files

1.8.8

2 files

1.8.6

2 files

1.8.5

2 files

1.8.4

2 files

This release

1.8.2 This release

2 files

1.8.1

2 files

1.8.0

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.13.0

2 files

0.12.5

2 files

0.12.4

2 files

0.12.3

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.6

2 files

0.11.5

2 files

0.11.4

2 files

0.11.3

2 files

0.11.2

2 files

0.10.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page