Extensions that do not include an extension definition schema produce generic graphs.
Extension bundles
An extension bundle packages an extension definition schema with supported assets (such as saved queries and Privilege Zone rules) so you can install them together. When a bundle is published for an OpenGraph extension, use it as the primary installation option. The OpenGraph Management page accepts one bundle (.zip) or one schema (.json) file per upload. See Package an extension bundle for the bundle format.
Do not assume a bundle is available for every extension. Check the extension’s distribution source for a bundle that matches your BloodHound version.
Before you begin
Review the extension’s setup documentation and obtain its bundle or schema if you need to install it. If you use a collector, check its version compatibility and prerequisites.Only users with the Administrator role can manage extensions.
Pre-installed extensions in BloodHound Enterprise can include findings and remediation guidance when that feature is enabled in your environment. Contact your account team for availability.
Workflow
The workflow for generic and structured OpenGraph data is largely the same. The main difference is that structured graphs require an extension definition schema to be installed. An Administrator can ensure availability either by verifying a pre-installed extension or by uploading one manually. After that, users with read access can view installed extensions and use the resulting structured graph data.For OpenHound collectors (GitHub, Jamf, and Okta), upload behavior depends on both deployment model and BloodHound edition.Only BloodHound Enterprise can accept payloads directly through the API. BloodHound Community requires manual file upload.
Get an extension
Use a published bundle for the current BloodHound version when one is available. A bundle installs the schema and the supported assets it contains. If no bundle is available, install the schema and then add supported assets separately.Collect data
Installing an extension prepares BloodHound to interpret its data. You must also collect and upload data from the target platform. Extension providers should supply a compatible collector and instructions for running it. For OpenHound collectors, upload behavior depends on edition and runtime model: Enterprise can ingest through the API (often automatic when using a collector client), while Community requires manual file upload from locally run collector executables. The following diagrams illustrate the recurring OpenHound collection and upload cycle that keeps extension data current in BloodHound Enterprise and Community Edition. BloodHound Enterprise (containerized) BloodHound Community (CLI)Verify or install an extension
Before you upload structured OpenGraph data, make sure BloodHound has the matching extension definition schema. Use the bundle path when a matching bundle is published; otherwise use the schema-only path below. Pre-installed extensions, such as GitHub, Jamf, and Okta in BloodHound Enterprise, usually only need verification. In both BloodHound Enterprise and BloodHound Community Edition, administrators must manually install and manage any extensions that are not built-in or pre-installed. These include community extensions and SpecterOps extensions that are not yet pre-installed.Only users with the Administrator role can install, update, and delete extension definition schemas.
1
Open the OpenGraph Management page
In the left menu, click Administration > OpenGraph Management.
2
Verify or install extensions
Choose the path that matches your scenario:
- Verify an extension
- Install an extension
Confirm the extension appears in the list of active extensions.For example, confirm that BloodHound Enterprise lists the built-in Active Directory and Azure extensions and the pre-installed GitHub, Jamf, and Okta extensions.

Update an extension
Collectors and extensions are versioned separately. To avoid compatibility issues, do not update collectors independently without confirming extension compatibility. Update collectors and extension definition schemas together whenever possible. For a manually managed extension, install its new bundle or schema through the same workflow. For a pre-installed extension, you can install a newer version manually, but it follows automatic update rules.Automatic updates
In BloodHound Enterprise, the pre-installed GitHub, Jamf, and Okta extensions follow automatic update rules. At startup, BloodHound Enterprise updates a pre-installed extension when the version in the current release is newer than the installed version. If you upload a newer version manually, it remains installed until a later release provides a newer version. If you want to update a pre-installed extension outside the standard BloodHound Enterprise release cycle, coordinate with your account team.A manually installed older version of a pre-installed extension may be replaced at startup if the current BloodHound Enterprise release includes a newer version. Contact your account team if you need help maintaining a rollback across restarts.
Delete an extension
Deleting an extension removes the extension definition schema from BloodHound, but leaves the underlying data intact. Associated data reverts to generic graphs, which means structured graph capabilities are no longer available. You can still use node search and Cypher queries on the Explore page to explore the data. If you want to delete the data associated with an extension, you can do so separately on the Database Management page. To delete an extension, click the (trash) icon next to it in the list of active extensions and confirm the deletion in the prompt.You cannot delete built-in extensions (Active Directory and Azure).In BloodHound Enterprise, Administrators can delete pre-installed extensions (GitHub, Jamf, and Okta), but BloodHound Enterprise reinstalls them at the next application restart.
Upload data
After an Administrator installs an extension or verifies that an extension is present, users can upload data payloads that conform to the extension definition schema and take advantage of structured graph capabilities in BloodHound. For extensions that use OpenHound collectors (GitHub, Jamf, and Okta), AzureHound, or SharpHound, how data is uploaded depends on your BloodHound edition:- BloodHound Enterprise: The collector client can upload data directly through the API. In containerized deployments, upload is typically automatic.
-
BloodHound Community: After running the OpenHound, AzureHound, or SharpHound collector executables locally and generating data files, follow the manual upload steps below.
For extensions that do not use OpenHound collectors, follow the manual upload steps below.
1
Upload data
Upload a data payload that conforms to the installed extension definition schema.
- In the left menu, click Quick Upload.
- Click the Upload File canvas to open a file system dialog or drag and drop the data payload file(s) onto the canvas.
- Click Upload to begin the data ingestion and validation process.
2
Explore and analyze
Use the enhanced features enabled by the extension to explore and analyze your OpenGraph data in BloodHound.

