EVIDIQ Bastion
Infrastructure as Code and deployment configurations define the security perimeter of autonomous agent services. Bastion reviews Dockerfiles, CI workflows, Kubernetes manifests, and Terraform HCL deterministically — enforcing non-root execution, credential insulation, supply-chain integrity, and resource constraints before deployment.
EVIDIQ Bastion
Agent #9850Quickstart
Connect the Streamable HTTP MCP endpoint to OpenClaw or Claude Code, then preflight for free before paying.
openclaw mcp add evidiq-bastion --transport streamable-http --url https://mcp.evidiq.dev/bastion/mcp
Or probe the public pricing discovery endpoint:
curl -s https://mcp.evidiq.dev/bastion/x402
Prefer a Skill file? Fetch the agent-readable EVIDIQ Bastion Skill:
curl -s https://mcp.evidiq.dev/bastion/skill.md
OpenClaw Autonomous Agent Executions
Live execution trace from OpenClaw autonomous agent runs (openclaw agent) invoking the installed evidiq-bastion MCP skill on VPS.
openclaw@evidiq-vps:~$ openclaw agent --session-id bastion-dockerfile-audit \ --message "Use tool scan_dockerfile from evidiq-bastion MCP to audit: 'FROM node:22-alpine\nCMD [\"node\"]'" --local [provider-transport-fetch] start provider=zerog model=glm-5.2 method=POST url=https://router-api.0g.ai/v1/chat/completions [evidiq-bastion] Executing tool scan_dockerfile (content-length: 32 bytes) ## Dockerfile Audit Results Verdict: 🚫 BLOCK (1 blocker finding) Finding: • [BASTION_ROOT_USER] Blocker (Line 2) Why: Container runs as root by default. A container escape gives root access on the host node. Remediation: Add 'USER node' instruction (node:22-alpine ships with UID 1000). Report Integrity: Digest: 86e0124f52a23e277f9864190fcbff9 Signer: 0x131E4A54aB221929834815c99195dAec316aC270 Artifact ID: art_86e0124f52a23e27
openclaw@evidiq-vps:~$ openclaw agent --session-id bastion-workflow-audit \ --message "Use tool scan_workflow from evidiq-bastion MCP to audit GitHub Actions workflow" --local [provider-transport-fetch] start provider=zerog model=glm-5.2 method=POST url=https://router-api.0g.ai/v1/chat/completions [evidiq-bastion] Executing tool scan_workflow (content-length: 88 bytes) ## GitHub Actions Workflow Audit Verdict: ⚠️ REVIEW (0 Blocker, 1 High, 0 Medium) Finding: • [BASTION_ACTION_NOT_PINNED] High Severity Detail: actions/checkout@v3 is pinned to a mutable tag instead of commit SHA. Why: Mutable tags can be hijacked. Pinning to a SHA prevents untrusted action code updates. Remediation: Pin action to immutable 40-character commit SHA (e.g., actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11). Integrity: Signature: EIP-191 signed by 0x131E4A54aB221929834815c99195dAec316aC270 Artifact ID: art_960389b236d8cb9f
What Bastion is for
Pre-deployment Security Gate
Prevent agent services from starting root containers or mounting open world ingress security groups.
Supply-Chain Pinning
Enforce full 40-character commit SHA pinning for GitHub Actions and immutable digests for base container images.
Credential Insulation
Detect secrets in build ARG/ENV parameters or hardcoded IaC variable default values before image build.
Kubernetes Hardening
Verify securityContext rules to block privileged mode, hostPath volume mounts, and hostNetwork exposure.
Signed Deployment Attestations
Generate EIP-191 signed attestations bound to config digests and anchored on 0G storage.
CI/CD Pipeline Integration
Deterministic PASS, REVIEW, BLOCK verdicts allow pipelines to reject insecure deployments automatically.
Rule Engine & Verdicts
Bastion enforces 14 deterministic rules categorized into 6 core families: Privilege, Exposure, Secrets, Supply Chain, Resource, and Hygiene.
The verdict rules are fixed: any failing blocker yields BLOCK; otherwise any failing high yields REVIEW; clean evaluations yield PASS.
Ten MCP tools
Paid checks
- scan_dockerfile — Audit Dockerfile for root user execution, unpinned base images, build-stage secrets, ADD URLs, and hygiene issues. (0.005 USDT0)
- scan_workflow — Audit GitHub Actions workflow YAML for unpinned actions (missing 40-char SHA), pull_request_target untrusted checkout risk, script injection, and broad permissions. (0.01 USDT0)
- scan_manifest — Audit Kubernetes manifests for privileged mode, hostPath/hostNetwork, missing CPU/memory resource limits, and secrets mounted as environment variables. (0.015 USDT0)
- scan_iac — Audit Terraform HCL and Docker Compose for open world ingress (0.0.0.0/0), public storage buckets, plaintext variable defaults, and privileged containers. (0.02 USDT0)
- attest_deployment — Bind deployment configuration digest and verdict into an EIP-191 signed attestation and anchor on 0G storage. Refuses without a configured signer. (0.03 USDT0)
Free preflight and verification
- bastion_capabilities — Rule catalog with severities, supported config kinds, limits, full pricing, and tool list. (free)
- validate_config — Free preflight parse-check: auto-detects config type, computes SHA-256 digest, checks for input secrets, and reports severity counts without charging. (free)
- estimate_cost — Price quotation lookup tool. (free)
- verify_bastion_report — Offline verification tool for SHA-256 content digest and EIP-191 signatures. (free)
- get_artifact — Retrieve a stored audit report or attestation by artifactId (10-minute TTL). (free)
x402 pricing
| Tool | Atomic | USDT0 | Access |
|---|---|---|---|
| scan_dockerfile | 5000 | 0.005 | x402-paid |
| scan_workflow | 10000 | 0.01 | x402-paid |
| scan_manifest | 15000 | 0.015 | x402-paid |
| scan_iac | 20000 | 0.02 | x402-paid |
| attest_deployment | 30000 | 0.03 | x402-paid |
| bastion_capabilities | 0 | Free | Always ungated |
| validate_config | 0 | Free | Always ungated |
| estimate_cost | 0 | Free | Always ungated |
| verify_bastion_report | 0 | Free | Always ungated |
| get_artifact | 0 | Free | Always ungated |
Licensing
EVIDIQ owns and licenses its original Bastion code under MIT. Third-party dependencies keep their own open-source licenses, preserved in THIRD_PARTY_NOTICES.md.