{"id":28021,"library":"ostorlab","title":"Ostorlab OXO Scanner Orchestrator","description":"Ostorlab (oxo) is a security scanner orchestrator that manages and coordinates scanning agents across various assets (iOS, Android, HarmonyOS, web, network, etc.). It provides a CLI (`oxo scan`) to run, stop, and manage scans via a distributed architecture. The current stable version is 2.3.2, released in May 2025, with active development on GitHub. It requires Python >=3.9.","status":"active","version":"2.3.2","language":"python","source_language":"en","source_url":"https://github.com/Ostorlab/oxo","tags":["security","scanner","orchestrator","cli","docker","gRPC","agents"],"install":[{"cmd":"pip install ostorlab","lang":"bash","label":"Install via pip"}],"dependencies":[{"reason":"Required for running agents in Docker containers","package":"docker","optional":false},{"reason":"Required for inter-agent communication via gRPC","package":"grpcio","optional":false},{"reason":"Required for data serialization in agent messages","package":"protobuf","optional":false}],"imports":[{"wrong":"from ostorlab.cli import start_scan","symbol":"start_scan","correct":"from ostorlab.cli import start_scan"}],"quickstart":{"code":"from ostorlab.cli import start_scan\n\n# Example: scan a domain (replace with your target)\nscan_id = start_scan(\n    agent_group_definition='path/to/agent_group.yaml',\n    assets=[{'type': 'DomainName', 'name': 'example.com'}],\n)\nprint(f'Scan started with ID: {scan_id}')","lang":"python","description":"Initialize and start a scan using an agent group definition YAML and a list of assets. The YAML file defines which agents to run."},"warnings":[{"fix":"Use Python 3.9 or later. Run `python --version` to check.","message":"In version 2.0.0, Python requirement was bumped to >=3.9 (from 3.14 in v2? Actually v2.0.0 release note says 'bump python version to 3.14' – this is likely a typo; the PyPI metadata requires >=3.9). Ensure your Python version is at least 3.9.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Create a YAML file with the agent group definition and pass the file path as a string to `start_scan`.","message":"The `start_scan` function expects the path to an agent group definition YAML file. A common mistake is passing a raw dictionary instead of a file path. This will raise a TypeError.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'2.3.2':48 '2025':52 '3.9':61 'across':18 'activ':54 'agent':17,68 'android':22 'architectur':42 'asset':20 'cli':30,65 'coordin':15 'current':44 'develop':55 'distribut':41 'docker':66 'etc':26 'github':57 'grpc':67 'harmonyo':23 'io':21 'manag':13,37 'may':51 'network':25 'orchestr':4,11,64 'ostorlab':1,5 'oxo':2,6,31 'provid':28 'python':60 'releas':49 'requir':59 'run':34 'scan':16,32,38 'scanner':3,10,63 'secur':9,62 'stabl':45 'stop':35 'various':19 'version':46 'via':39 'web':24","created_at":"2026-05-09T05:53:19.208000+00:00","updated_at":"2026-05-09T05:53:19.208000+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'start_scan' from 'ostorlab.cli' (/tmp/tmpedr4dyts/venv/lib/python3.12/site-packages/ostorlab/cli/__init__.py)"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"oxo","cli_version":"oxo, version 2.5.1","type":"library","homepage":"https://ostorlab.co","github":"https://github.com/Ostorlab/oxo","docs":"https://oxo.ostorlab.co/","changelog":"https://github.com/Ostorlab/oxo/releases","pypi":"https://pypi.org/project/ostorlab/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","auth-security","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}