OpenACA: Agent Composition Analysis — overlays and scanner for AI agent security.
Project description
OpenACA
Agent Composition Analysis (ACA) — OSV-compatible agent-context overlays and a reference scanner for AI agent infrastructure: plugins, MCP servers, skills, agent frameworks, model proxies, and runtime components.
OpenACA is the AI-agent analogue of Software Composition Analysis (SCA): it identifies the versioned plugins, MCP servers, skills, and framework components that make up an AI agent, and matches them against known security records (CVE/GHSA/OSV + agent-context overlays maintained in this corpus).
Beta status
This is the 0.1.0b3 closed-beta pre-release. The scanner and
overlay corpus are usable; expect rough edges. If you're a beta
tester, start with the
beta-tester guide —
it covers install, first scan, what feedback I'm looking for, and
how to report.
Install
Requires Python 3.11+.
Recommended — uv tool (install uv if you don't have it; uv also provisions Python for you so a 3.11+ runtime isn't a prerequisite you need to satisfy separately):
uv tool install openaca
openaca --version
Alternative — pip (if you already have a Python 3.11+ workflow):
pip install openaca
Both commands auto-pick the latest pre-release while OpenACA has no
stable version yet. Current latest is 0.1.0b3; check with openaca --version.
Pin to a specific build if you need to reproduce a bug report:
uv tool install openaca==0.1.0b3 or pip install openaca==0.1.0b3.
Try it in 30 seconds
mkdir openaca-demo && cd openaca-demo
cat > mcp.json <<'EOF'
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["@cyanheads/git-mcp-server@1.1.0"]
}
}
}
EOF
openaca scan repo --target .
Expected output:
Found 1 vulnerability in 1 package.
@cyanheads/git-mcp-server 1.1.0
location: mcp.json
fix: upgrade to >=2.1.5
HIGH GHSA-3q26-f695-pp76 fixed in 2.1.5 @cyanheads/git-mcp-server vulnerable to command injection in several tools [osv.dev]
Scanned 1 manifest, 1 component. Sources: osv.dev.
For more scenarios (clean scan, configuration-hygiene checks via
--include-posture), clone
openaca-demo
and try each of its fixtures.
Two scan modes
| Mode | Question | Where it runs |
|---|---|---|
openaca scan repo --target <path> |
What agent components are declared in this repository? | CI gate, PR check |
openaca scan endpoint |
What agent components are installed on this machine right now? | Developer laptop, CI runner |
Both modes emit text (default), JSON (--format json), or SARIF 2.1
(--sarif <path>). Use -v for per-finding context.
Configuration-hygiene posture rules (mutable install references,
insecure transport, missing remote auth) are opt-in via
--include-posture. They run separately from vulnerability findings
and never fail CI by default.
V0 scope
- Endpoint mode scans Claude Code only (
~/.claudeor$CLAUDE_CONFIG_DIR). Other agent hosts aren't endpoint-supported yet. - Repo mode parses Claude Code's declared manifests
(
.claude-plugin/plugin.json,.claude/settings.json) plus the host-agnosticmcp.jsonthat most MCP-aware hosts use. - Declared manifests only. SDK-inline definitions
(
query({ mcpServers: { ... } })), tools registered programmatically, and source-code parsing are V1 scope. - Overlay corpus focuses on malicious-package records for MCP servers, agent-framework packages, and AI infrastructure. Pair with a general-purpose SCA scanner for your full dependency tree.
Links
- Beta-tester guide: https://github.com/open-agent-security/openaca-demo/blob/main/BETA-TESTER-GUIDE.md
- Sandbox fixtures: https://github.com/open-agent-security/openaca-demo
- Feedback: DM the maintainer (vinodkone@gmail.com). The openaca source repo is private during the closed beta; GitHub issues open up when the repo flips public.
Apache-2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openaca-0.1.0b3.tar.gz.
File metadata
- Download URL: openaca-0.1.0b3.tar.gz
- Upload date:
- Size: 429.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9dcdd0c0fee224a1b34b48f94962d5eacc1d8d0f829459c567fcd5ec1c87ff7
|
|
| MD5 |
813cc5b151bb6d205e5fd3d893196ab8
|
|
| BLAKE2b-256 |
18acf8886bae583d782ccf441cb90f95c54665c9868494134f5177782aed7ed8
|
Provenance
The following attestation bundles were made for openaca-0.1.0b3.tar.gz:
Publisher:
publish-pypi.yml on open-agent-security/openaca
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openaca-0.1.0b3.tar.gz -
Subject digest:
c9dcdd0c0fee224a1b34b48f94962d5eacc1d8d0f829459c567fcd5ec1c87ff7 - Sigstore transparency entry: 1575455142
- Sigstore integration time:
-
Permalink:
open-agent-security/openaca@a91947ca40e52702145dc66a31446652659b2868 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/open-agent-security
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@a91947ca40e52702145dc66a31446652659b2868 -
Trigger Event:
push
-
Statement type:
File details
Details for the file openaca-0.1.0b3-py3-none-any.whl.
File metadata
- Download URL: openaca-0.1.0b3-py3-none-any.whl
- Upload date:
- Size: 176.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4deb3a480bbc6f4f5f3220915691bdfeb6bec5d939ce7812500bf5b2b44964a4
|
|
| MD5 |
b3b31514d0cbb9ac87f2c13b53e0b8ed
|
|
| BLAKE2b-256 |
af0e504ca2761135e2328c7d6c9624559278a1673fc27658e5b422c04be8f4e3
|
Provenance
The following attestation bundles were made for openaca-0.1.0b3-py3-none-any.whl:
Publisher:
publish-pypi.yml on open-agent-security/openaca
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openaca-0.1.0b3-py3-none-any.whl -
Subject digest:
4deb3a480bbc6f4f5f3220915691bdfeb6bec5d939ce7812500bf5b2b44964a4 - Sigstore transparency entry: 1575455153
- Sigstore integration time:
-
Permalink:
open-agent-security/openaca@a91947ca40e52702145dc66a31446652659b2868 -
Branch / Tag:
refs/tags/v0.1.0b3 - Owner: https://github.com/open-agent-security
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@a91947ca40e52702145dc66a31446652659b2868 -
Trigger Event:
push
-
Statement type: