github Python re-analysis due

IBM/AssetOpsBench

github

AssetOpsBench - Industry 4.0: A unified benchmark and framework for building, orchestrating, and evaluating domain-specific AI agents for Industry 4.0 asset operations and maintenance, with 460+ scenarios, 5 specialist agents (IoT, FMSR, TSFM, Work Order,...), and multi-agent orchestration blueprints (MetaAgent, AgentHive) over MCP.

maintainer
IBM
license
Apache-2.0
first seen
2026-05-24
last seen
2026-09-01
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 70 tools
transport stdio counts 70 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • add_failure_modes
  • assess_vibration_severity
  • asset_detail
  • asset_ids
  • assets
  • calculate_bearing_frequencies
  • characterize_series
  • compute_envelope_spectrum
  • compute_fft_spectrum
  • count_features
  • count_models
  • current_date_time
  • current_time_english
  • data_quality
  • deprecate_feature
  • deprecate_model
  • describe_candidates
  • describe_features
  • describe_models
  • diagnose_vibration
  • evaluate
  • extract_features
  • find_assets_by_sensors
  • find_models
  • generate_failure_modes
  • get_asset_catalog
  • get_failure_mode_catalog
  • get_failure_modes
  • get_feature
  • get_feature_lineage
  • get_model_lineage
  • get_result
  • get_run
  • get_sensor_catalog
  • get_vibration_data
  • hf_stats
  • history
  • installed_sensors
  • json_reader
  • latest_reading
  • list_domains
  • list_features
  • list_known_bearings
  • list_models
  • list_results
  • list_runs
  • list_tasks
  • list_vibration_sensors
  • measured_sensors
  • model_template
  • new_feature_version
  • new_model_version
  • profile_series
  • recipe_template
  • register_feature
  • register_finetuned
  • register_model
  • resolve_model
  • run_plan
  • run_recipe
  • run_tabular_recipe
  • search_features
  • search_models
  • select_features
  • sensor_coverage
  • sensor_stats
  • sites
  • stream_extent
  • update_feature
  • update_model
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 3a7bd23 · analyzer v33 · 1w ago

danger signals1

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 194

filesystem 47

  • fs IBM-AssetOpsBench-3a7bd23/src/agent/claude_agent/runner.py :21 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/claude_agent/tests/test_runner.py :8 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/deep_agent/runner.py :23 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/deep_agent/tests/test_runner.py :9 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/direct_llm_agent/runner.py :14 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/openai_agent/runner.py :23 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/openai_agent/tests/test_runner.py :8 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/opencode_agent/cli.py :12 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/opencode_agent/runner.py :20 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/opencode_agent/tests/test_runner.py :6 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/plan_execute/executor.py :14 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/plan_execute/runner.py :17 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/runner.py :6 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/stirrup_agent/cli.py :14 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/agent/stirrup_agent/runner.py :34 import shutil
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/stirrup_agent/tests/test_runner.py :12 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/agent/tests/test_runner.py :235 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/benchmark/scenario_suite_runner.py :32 import shutil
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/benchmark/tests/test_scenario_suite_runner.py :4 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/couchdb/init_data.py :56 with open(DEFAULT_MANIFEST_FILE) as f:
  • fs IBM-AssetOpsBench-3a7bd23/src/couchdb/loader.py :55 with open(COLLECTIONS_FILE) as f:
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/couchdb/tests/test_loader.py :2 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/evaluation/cli.py :8 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/evaluation/evaluator.py :14 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/evaluation/loader.py :7 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/evaluation/report.py :8 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/evaluation/runner.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/evaluation/tests/conftest.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/evaluation/tests/test_evaluator.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/evaluation/tests/test_loader.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/evaluation/tests/test_report.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/evaluation/tests/test_runner.py :6 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/mcphub/__init__.py :131 def open(self, name, cmd, env):
  • fs IBM-AssetOpsBench-3a7bd23/src/observability/file_exporter.py :18 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/observability/persistence.py :29 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/observability/tests/test_file_exporter.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/observability/tests/test_persistence.py :7 from pathlib import Path
  • fs IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/io/refs.py :104 json.dump(obj, open(p, "w"), indent=2, default=str)
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/tests/conftest.py :42 for doc in json.load(open(os.path.join(_SEEDS, "model_catalog.json"))):
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/tests/fake_hf_forecaster.py :37 with open(os.path.join(path, "config.json"), "w") as f:
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/tests/test_feature_catalog_store.py :11 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/tests/test_finetune_lifecycle.py :16 import shutil
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/tests/test_run_tools.py :259 payload = json.load(open(refs._path(r["results_file"])))
  • fs IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :6 from pathlib import Path
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/utilities/tests/test_utilities.py :125 os.remove(tmp_name)
  • fs IBM-AssetOpsBench-3a7bd23/src/servers/vibration/sample_data/generate_synthetic_vibration.py :133 with open(out, "w") as f:
  • fs (weak) IBM-AssetOpsBench-3a7bd23/src/servers/vibration/tests/test_mcp_e2e.py :35 from pathlib import Path

shell / exec 1

  • shell (weak) IBM-AssetOpsBench-3a7bd23/src/benchmark/scenario_suite_runner.py :33 import subprocess

network 5

  • net IBM-AssetOpsBench-3a7bd23/src/couchdb/loader.py :31 import requests
  • net (weak) IBM-AssetOpsBench-3a7bd23/src/servers/iot/tests/test_couchdb.py :7 import requests
  • net IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/core/store.py :112 import requests # lazy
  • net IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/stores/model_store.py :188 import requests
  • net IBM-AssetOpsBench-3a7bd23/src/servers/wo/couch.py :16 import httpx

secrets 11

  • secrets IBM-AssetOpsBench-3a7bd23/src/couchdb/loader.py :43 os.environ.get("COUCHDB_PASSWORD", "password"),
  • secrets IBM-AssetOpsBench-3a7bd23/src/llm/litellm.py :50 kwargs["api_key"] = os.environ["WATSONX_APIKEY"]
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/fmsr/main.py :32 COUCHDB_PASSWORD = os.environ.get("COUCHDB_PASSWORD", "password")
  • secrets (weak) IBM-AssetOpsBench-3a7bd23/src/servers/fmsr/tests/conftest.py :8 os.environ.get("WATSONX_APIKEY") is None,
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :53 COUCHDB_PASSWORD = os.environ.get("COUCHDB_PASSWORD")
  • secrets (weak) IBM-AssetOpsBench-3a7bd23/src/servers/iot/tests/conftest.py :21 password = os.environ.get("COUCHDB_PASSWORD")
  • secrets (weak) IBM-AssetOpsBench-3a7bd23/src/servers/iot/tests/test_couchdb.py :17 COUCHDB_PASSWORD = os.environ.get("COUCHDB_PASSWORD", "")
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/core/store.py :120 os.environ.get("COUCHDB_PASSWORD", "password"),
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :29 COUCHDB_PASSWORD = os.environ.get("COUCHDB_PASSWORD", "password")
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/vibration/couchdb_client.py :25 COUCHDB_PASSWORD = os.environ.get("COUCHDB_PASSWORD")
  • secrets IBM-AssetOpsBench-3a7bd23/src/servers/wo/main.py :64 password=os.environ.get("COUCHDB_PASSWORD", "password"),

tool registrations 70

  • get_failure_modes IBM-AssetOpsBench-3a7bd23/src/servers/fmsr/main.py :235
  • generate_failure_modes IBM-AssetOpsBench-3a7bd23/src/servers/fmsr/main.py :301
  • add_failure_modes IBM-AssetOpsBench-3a7bd23/src/servers/fmsr/main.py :357
  • sites IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :184
  • asset_ids IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :195
  • asset_detail IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :230
  • measured_sensors IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :301
  • installed_sensors IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :339
  • assets IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :383
  • find_assets_by_sensors IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :441
  • stream_extent IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :537
  • history IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :644
  • latest_reading IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :789
  • sensor_coverage IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :885
  • sensor_stats IBM-AssetOpsBench-3a7bd23/src/servers/iot/main.py :952
  • list_tasks IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :129
  • profile_series IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :156
  • characterize_series IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :186
  • data_quality IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :235
  • list_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :300
  • list_models IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :331
  • search_models IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :360
  • find_models IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :390
  • describe_candidates IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :439
  • describe_models IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :471
  • count_models IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :522
  • list_domains IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :545
  • get_model_lineage IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :576
  • register_model IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :606
  • model_template IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :629
  • register_finetuned IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :677
  • update_model IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :728
  • deprecate_model IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :752
  • new_model_version IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :780
  • resolve_model IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :860
  • hf_stats IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :941
  • count_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :976
  • describe_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :996
  • extract_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1044
  • select_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1115
  • search_features IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1194
  • get_feature IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1236
  • register_feature IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1269
  • update_feature IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1302
  • deprecate_feature IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1331
  • new_feature_version IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1366
  • get_feature_lineage IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1402
  • recipe_template IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1447
  • run_recipe IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1556
  • run_tabular_recipe IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1666
  • run_plan IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1730
  • evaluate IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1769
  • get_result IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1811
  • list_results IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1830
  • get_run IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1855
  • list_runs IBM-AssetOpsBench-3a7bd23/src/servers/tsfm/main.py :1871
  • json_reader IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :146
  • get_sensor_catalog IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :161
  • get_asset_catalog IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :178
  • get_failure_mode_catalog IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :198
  • current_date_time IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :221
  • current_time_english IBM-AssetOpsBench-3a7bd23/src/servers/utilities/main.py :237
  • get_vibration_data IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :136
  • list_vibration_sensors IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :180
  • compute_fft_spectrum IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :204
  • compute_envelope_spectrum IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :242
  • assess_vibration_severity IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :277
  • calculate_bearing_frequencies IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :300
  • list_known_bearings IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :330
  • diagnose_vibration IBM-AssetOpsBench-3a7bd23/src/servers/vibration/main.py :336

declared dependencies 23

  • fastmcp@>=2.14.5
  • mcp@>=1.26.0
  • couchdb3@>=2.0.2
  • pendulum@>=3.2.0
  • pydantic@>=2.12.5
  • requests@>=2.32.5
  • numpy@>=1.24
  • pandas@>=2.0
  • pyyaml@>=6.0
  • litellm@==1.94.0
  • openai@>=1.40.0
  • claude-agent-sdk@>=0.0.14
  • openai-agents@>=0.0.7
  • deepagents@>=0.5.3
  • langchain-mcp-adapters@>=0.2.2
  • langchain-openai@>=1.1.0
  • stirrup@>=0.1.12
  • python-dotenv@>=1.0
  • scipy@>=1.10.0
  • sktime@>=0.30
  • statsmodels@>=0.14
  • PyWavelets@>=1.4
  • granite-tsfm@>=0.3.5