{"id":28667890,"url":"https://github.com/dreadnode/sdk","last_synced_at":"2025-06-13T16:11:17.052Z","repository":{"id":290300019,"uuid":"935723414","full_name":"dreadnode/sdk","owner":"dreadnode","description":"Dreadnode Strikes SDK","archived":false,"fork":false,"pushed_at":"2025-06-13T05:17:25.000Z","size":17940,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-13T06:24:44.818Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://docs.dreadnode.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreadnode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-19T23:05:24.000Z","updated_at":"2025-06-13T05:17:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4357a0b-58c4-4549-9d31-bff1300966b2","html_url":"https://github.com/dreadnode/sdk","commit_stats":null,"previous_names":["dreadnode/sdk"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/dreadnode/sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Fsdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Fsdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Fsdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Fsdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreadnode","download_url":"https://codeload.github.com/dreadnode/sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreadnode%2Fsdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259677364,"owners_count":22894678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-13T16:11:15.895Z","updated_at":"2025-06-13T16:11:17.033Z","avatar_url":"https://github.com/dreadnode.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg\n    src=\"https://d1lppblt9t2x15.cloudfront.net/logos/5714928f3cdc09503751580cffbe8d02.png\"\n    alt=\"Logo\"\n    align=\"center\"\n    width=\"144px\"\n    height=\"144px\"\n    /\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003e\nDreadnode Strikes SDK\n\u003c/h3\u003e\n\n\u003ch4 align=\"center\"\u003e\n    \u003cimg alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/dreadnode\"\u003e\n    \u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/dreadnode\"\u003e\n    \u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/dreadnode/sdk\"\u003e\n    \u003cimg alt=\"Tests\" src=\"https://img.shields.io/github/actions/workflow/status/dreadnode/sdk/tests.yaml\"\u003e\n    \u003cimg alt=\"Pre-Commit\" src=\"https://img.shields.io/github/actions/workflow/status/dreadnode/sdk/pre-commit.yaml\"\u003e\n    \u003cimg alt=\"Renovate\" src=\"https://img.shields.io/github/actions/workflow/status/dreadnode/sdk/renovate.yaml\"\u003e\n\u003c/h4\u003e\n\n\u003c/br\u003e\n\nStrikes is a platform for building, experimenting with, and evaluating AI security agent code.\n\n- **Experiment + Tasking + Observability** in a single place that's lightweight and scales.\n- **Track your data** with parameters, inputs, and outputs all connected to your tasks.\n- **Log your artifacts** — data, models, files, and folders — to track data of your Dreadnode runs, enabling easy reuse and reproducibility.\n- **Measure everything** with metrics throughout your code and anywhere you need them.\n- **Scale your code** from a single run to thousands.\n\n```python\nimport dreadnode as dn\nimport rigging as rg\n\nfrom .tools import reversing_tools\n\ndn.configure()\n\n@dataclass\nclass Finding:\n    name: str\n    severity: str\n    description: str\n    exploit_code: str\n\n@dn.scorer(name=\"Score Finding\")\nasync def score_finding(finding: Finding) -\u003e float:\n    if finding.severity == \"critical\":\n        return 1.0\n    elif finding.severity == \"high\":\n        return 0.8\n    else:\n        return 0.2\n\n@dn.task(scorers=[score_finding])\n@rg.prompt(tools=[reversing_tools])\nasync def analyze_binary(binary: str) -\u003e list[Finding]:\n    \"\"\"\n    Analyze the binary for vulnerabilities.\n    \"\"\"\n    ...\n\nwith dn.run(tags=[\"reverse-engineering\"]):\n    binary = \"c2/downloads/service.exe\"\n\n    dn.log_params(\n        model=\"gpt-4\",\n        temperature=0.5,\n        binary=binary\n    )\n\n    findings = await analyze_binary(binary)\n\n    dn.log_metric(\"findings\", len(findings))\n```\n\n## Installation\n\nWe publish every version to PyPi:\n```bash\npip install -U dreadnode\n```\n\nIf you want to build from source:\n```bash\npoetry install\n```\n\nSee our **[installation guide](https://docs.dreadnode.io/strikes/install)** for more options.\n\n## Getting Started\n\nRead through our **[introduction guide](https://docs.dreadnode.io/strikes/intro)** in the docs.\n\n## Examples\n\nCheck out **[dreadnode/example-agents](https://github.com/dreadnode/example-agents)** to find your favorite use case.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Fsdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreadnode%2Fsdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreadnode%2Fsdk/lists"}