Skip to main content

AI Supply Chain

FieldValue
Document IDASCEND-GOV-SC-001
Version2026.04
Last UpdatedApril 2026
AuthorAscend Engineering Team
PublisherOW-KAI Technologies Inc.
ClassificationEnterprise Client Documentation
ComplianceEU AI Act Art. 13, NIST MEASURE-2.5, NIST SP 800-161, SOC 2 CC9.2, ISO 27001 A.15

Reading Time: 10 minutes | Skill Level: Intermediate

Overview

AI Supply Chain Visibility (FEAT-005) is the inventory + risk surface for every external AI component your organization depends on — models, libraries, datasets, frameworks, tools, and services. Components can be linked to specific agents for impact analysis, and vulnerabilities attach to components so you can answer "if CVE-X hits huggingface/transformers today, which of my agents are affected?"

FEAT-005B adds automated CVE sync (scheduled + on-demand) so the vulnerability surface stays fresh without manual entry.

Data model

Component

FieldTypeNotes
component_idstring (≤255)Org-unique identifier
component_namestring (≤500)Human-readable
component_typeenummodel, library, dataset, framework, tool, service
providerstring (optional)Vendor
versionstring (optional)Installed version
latest_versionstring (optional)Upstream latest (for drift tracking)
license_typestring (optional)SPDX or license name
source_urlstring (optional)Upstream source
provenance_verifiedbool (default false)Supply-chain provenance status
risk_levelenumlow, medium, high, critical
package_name, package_ecosystemstring (optional)For CVE matching (e.g., transformers on pypi)
vulnerability_countintAuto-maintained on vuln add/resolve

Vulnerability (attached to a component)

cve_id, advisory_id, title, description, severity (low/medium/high/critical), cvss_score, affected_versions, fixed_in_version, status (open/investigating/resolved/mitigated), remediation_notes.

Each AgentSupplyChainLink row ties an AiSupplyChainComponent to a RegisteredAgent with usage_context and is_critical.

REST endpoints

Base prefix: /api/v1/supply-chain.

ActionEndpointAuth
Register a componentPOST /componentsadmin (JWT or API key) — SDK 2.3.0 dual auth
List componentsGET /componentsuser+ (read)
Get a componentGET /components/{pk}user+
Update a componentPUT /components/{pk}admin (JWT)
Deactivate (soft delete)DELETE /components/{pk}admin (JWT)
Add vulnerabilityPOST /components/{pk}/vulnerabilitiesadmin (JWT)
Update vulnerabilityPUT /vulnerabilities/{pk}admin (JWT)
Agent dependenciesGET /agents/{agent_pk}/dependenciesuser+
Link component to agentPOST /agents/{agent_pk}/dependenciesadmin (JWT)
UnlinkDELETE /agents/{agent_pk}/dependencies/{component_pk}admin (JWT)
Impact analysisGET /impact/{component_pk}user+
StatsGET /statsuser+
Trigger CVE sync (FEAT-005B)POST /syncadmin (JWT)
Sync statusGET /sync/statususer+
Why only POST /components is dual-auth

SDK 2.3.0 adds dual auth (API key admin OR JWT admin) to POST /components so CI pipelines can register SBOM components without a human JWT. The remaining mutating routes stay JWT-admin-only to keep the blast radius of SDK-token compromise small. Plan to widen dual auth to other routes only with a fresh Gate 1 review.

Register a component — SDK 2.3.0

from ascend import AscendClient

client = AscendClient(api_key="owkai_...") # key must have admin role

response = client.register_supply_chain_component(
component_id="hf-bert-base",
component_name="bert-base-uncased",
component_type="model",
provider="HuggingFace",
version="1.0.0",
latest_version="1.2.0",
license_type="Apache-2.0",
source_url="https://huggingface.co/bert-base-uncased",
provenance_verified=True,
risk_level="medium",
package_name="transformers",
package_ecosystem="pypi",
compliance_notes="Approved for internal use; vendor SBOM on file.",
)

The method only sends keys you set, so your per-call payload stays minimal.

cURL equivalent

curl -X POST "https://pilot.owkai.app/api/v1/supply-chain/components" \
-H "Authorization: Bearer owkai_..." \
-H "Content-Type: application/json" \
-d '{
"component_id": "hf-bert-base",
"component_name": "bert-base-uncased",
"component_type": "model",
"provider": "HuggingFace",
"provenance_verified": true,
"risk_level": "medium"
}'
curl -X POST "https://pilot.owkai.app/api/v1/supply-chain/agents/42/dependencies" \
-H "Authorization: Bearer <admin_jwt>" \
-H "Content-Type: application/json" \
-d '{
"component_id": 17,
"usage_context": "Embedding layer for semantic search",
"is_critical": true
}'

Impact analysis

Given a component, return every agent that depends on it, whether the dependency is marked critical, and open vulnerability count.

curl "https://pilot.owkai.app/api/v1/supply-chain/impact/17" \
-H "Authorization: Bearer <jwt_or_api_key>"

Response:

{
"success": true,
"component": { "id": 17, "component_name": "bert-base-uncased", ... },
"impact": {
"total_affected_agents": 3,
"critical_dependencies": 1,
"open_vulnerabilities": 0,
"affected_agents": [
{ "agent_id": 42, "agent_display_name": "...", "is_critical": true, ... }
],
"risk_summary": "If 'bert-base-uncased' is compromised or unavailable, 3 agent(s) are affected (1 critical dependency/ies). 0 open vulnerability/ies."
}
}

CVE sync (FEAT-005B)

The backend runs a scheduled CVE sync against components based on their package_name + package_ecosystem. Admins can also trigger an on-demand sync (rate-limited to 1 per org per hour):

curl -X POST "https://pilot.owkai.app/api/v1/supply-chain/sync" \
-H "Authorization: Bearer <admin_jwt>"

Check sync status:

curl "https://pilot.owkai.app/api/v1/supply-chain/sync/status" \
-H "Authorization: Bearer <jwt_or_api_key>"

New vulnerabilities are written as AiSupplyChainVulnerability rows linked to the component, with component.vulnerability_count atomically incremented. Resolving a vuln (status = resolved or mitigated) decrements the counter.

Audit trail

Every mutating operation emits an immutable audit event with compliance tags:

EventRisk level
SUPPLY_CHAIN_COMPONENT_REGISTEREDMEDIUM
SUPPLY_CHAIN_COMPONENT_UPDATEDINFO
SUPPLY_CHAIN_COMPONENT_DEACTIVATEDHIGH
SUPPLY_CHAIN_VULNERABILITY_ADDEDHIGH
SUPPLY_CHAIN_VULNERABILITY_UPDATEDINFO
SUPPLY_CHAIN_AGENT_LINKEDMEDIUM
SUPPLY_CHAIN_AGENT_UNLINKEDINFO
SUPPLY_CHAIN_CVE_SYNC_TRIGGEREDINFO

Compliance tags: EU_AI_ACT_ART13, NIST_MEASURE_2_5, NIST_SP_800_161, SOC2_CC9.2, ISO27001_A15.

Compliance mapping

ConcernStandard
Third-party AI component transparencyEU AI Act Art. 13
Risk-informed supply chainNIST AI RMF MEASURE-2.5
Software supply chain riskNIST SP 800-161
Supplier risk managementSOC 2 CC9.2
Supplier relationshipsISO 27001 A.15

Document Version: 2026.04 | Last Updated: April 2026