apPosture ai Docs

Documentation

apPosture ASPM

An offline-first, AI-driven Application Security Posture Management platform. Six scan engines - DAST, SAST, SCA, secrets, IaC and containers - plus an agentic local-LLM AI (DeepSeek) run entirely inside your perimeter - no source, scan traffic or AI inference ever leaves your network. This guide covers every capability.

🔒
Offline-first

Zero egress, air-gap friendly.

🤖
Agentic AI

Local LLM (DeepSeek).

🧩
Unified posture

Six engines, one store.

Architecture

Assets and CI feed six engines and a local-LLM AI core; results deduplicate into one posture that the dashboard, gates and reports read. Nothing crosses your perimeter.

YOUR PERIMETER · 100% OFFLINE · NO EGRESS ☁ Cloud AI Apps & Repossource · targets 6 scan enginesDAST·SAST·SCA·secrets·IaC·container Local-LLM AIthreat model · proof · fix Unified posturegate · reports CI / SCMagent · webhook · IDE Gate enginebaseline · policy · rules Decorationstatus · PR comments Reports · SIEMtrends · evidence

Deployment

Self-hosted via Docker Compose - Postgres, the warm scanner pool, the local DeepSeek LLM and the app, all containers you run and own. No SaaS account, no outbound dependency.

YOUR PERIMETER · DOCKER COMPOSE · NO EGRESS ☁ Internet Browseryour team Frontend:3000 · Next.js Backend API:8000 · /api/v1 Local LLM (DeepSeek):11434 · offline Scanner poolDAST engines · warm Redisqueue · cache PostgreSQLfindings · posture · audit

Every container runs inside your network - source, scan traffic and AI inference never leave.

docker compose up -d postgres redis scanner ollama backend frontend
docker exec apposture-ollama ollama pull deepseek-coder-v2:16b   # one-time, local
Frontend
:3000
Backend API
:8000 /api/v1 · /docs
DeepSeek LLM
local · :11434

Your first scan

  1. Create an Application and add a Target (URL) or connect a repo on Integrations.
  2. Run a scan (DAST for a URL; SAST/SCA/secrets/IaC for a repo) - or wire CI/CD.
  3. Review findings in Vulnerabilities, let the AI prove & triage them, and gate your pipeline.

Applications

The top-level grouping. An application bundles targets/services and carries metadata used for prioritization: environment (prod/staging/dev), business_criticality, and owner_team. Each app gets its own risk score, grade and open/exploitable/SLA-breached counts. Microservice repos auto-create their own application from CI.

Targets & authentication

A target is a URL to scan. apPosture authenticates so it can test behind login:

Discovery

Inventory your real attack surface - hosts, subdomains and APIs - with include/exclude scope controls (domains, IPs, TLDs). Newly appearing assets are flagged (shadow-IT diff) so nothing is scanned that you didn't intend, and nothing dangerous is missed.

SCM integrations

Connect GitHub or GitLab via OAuth or a personal access token, import a repo (cloned into a read-only sandbox), or upload a local folder. Tokens are stored encrypted; the connected repo becomes the source for SAST/SCA/secrets/IaC and the Hybrid-AST bridge for DAST.

Scans & profiles

Scans are queued and run by a concurrency-limited worker; you can pause, resume or stop them and watch a live phase timeline.

quick

fast surface pass

standard

balanced (default)

deep

thorough active scan

Options include scope exclusions, AJAX spider, graybox (source-informed) and authorized active exploitation (operator consent required). Incremental scans diff against a baseline_commit.

DAST & AI-Pentest

apPosture's dynamic testing runs as two bridged engine stages. DAST delivers broad, deterministic, reproducible coverage of the running application; AI-Pentest adds attacker-grade depth - gray-box reasoning, confirmed exploitation and AI triage. The stages feed each other: DAST output steers the AI-Pentest, and the AI-Pentest proves and ranks what DAST surfaced. Every phase streams to a live timeline grouped by stage.

Stage 1 · DAST

Broad automated coverage

  1. Authenticated session check
  2. Spider + AJAX / SPA crawl
  3. Content discovery (forced browsing)
  4. API-native discovery (OpenAPI / GraphQL)
  5. Active scan (payload injection)
  6. Vulnerability signatures (9000+)
  7. Multi-engine cross-check
  8. Out-of-band (OAST) testing
Stage 2 · AI-Pentest

AI-driven depth & exploitation

  1. Gray-box / Hybrid-AST exploitation
  2. Deep exploitation (injection proof)
  3. Exploit verification (safe reproduction)
  4. AI triage (false-positive filter, dedup)
  5. Correlation & prioritization

Before the scan, the AI reads your source (Hybrid AST), builds a threat model and an attack map, and converts both into a targeted, taint-guided test plan. The deep profile drives the active scan at maximum attack strength with the full rule-set enabled.

Targetrunning app STAGE 1 · DAST - broad coverage Crawl +AJAX/SPA Contentdiscovery API disc.OpenAPI/GQL Activescan Signatures9000+ Multi-engine OASTout-of-band steers STAGE 2 · AI-Pentest - depth & exploitation Gray-boxtaint-guided Deep exploitproof Verifysafe repro AI triageFP filter Correlatededup Unifiedposture · priorities

The two stages run as one bridged pipeline; results deduplicate into the unified posture.

Live scan timeline showing the DAST stage (auth check, spider, AJAX/SPA crawl, active scan, vulnerability signatures, multi-engine scan, out-of-band testing) and the AI-Pentest stage (gray-box, exploit verification, AI triage, correlation)
The live scan timeline in the product - every phase grouped under its DAST or AI-Pentest stage.

Discovery & API scanning

A scan can only test what it can find. apPosture expands the attack surface three ways beyond the crawler:

Content discovery (forced browsing)

Crawling only finds linked pages. apPosture brute-forces a curated, high-signal wordlist for hidden admin panels, API docs, backups, VCS leaks (.git, .svn) and config/secret files (.env, web.config, actuator). Every path that actually exists is folded into scope so the rest of the pipeline tests it.

API-native scanning (OpenAPI / GraphQL)

Modern apps are APIs a spider can't see. apPosture pulls the app's own contract from the live target - OpenAPI / Swagger (v2 & v3, from the usual locations or a spec URL you provide) and GraphQL introspection - expands every operation into a real, parameterised request, and tests it with the full engine set. A publicly-readable spec and enabled GraphQL introspection are reported as their own misconfigurations.

Authenticated & access-control testing

Form, bearer, header/API-key and cookie auth keep the session live throughout the scan. A second account drives horizontal-access (IDOR / BOLA) testing, and the source-informed gray-box bridge tests endpoints the crawler never reaches.

Exploitation & out-of-band testing

Coverage finds candidates; apPosture then turns the strong ones into proven, exploit-confirmed findings.

Multi-engine analysis

Several independent, best-of-breed scan engines run in parallel and cross-check the attack surface for breadth a single engine misses (injection, XSS, SSRF, XXE, command execution, path traversal, insecure headers/cookies, server misconfiguration and outdated components). Results deduplicate by fingerprint, so when multiple engines agree, confidence rises.

Deep exploitation (authorized)

Specialist exploitation engines confirm injection candidates read-only - SQL injection is proven with a benign data-access proof (DBMS banner / current user / database); OS-command injection with a marker command. No data dumping, no shells. Gated on explicit operator authorization. A confirmation is persisted as exploit_confirmed.

Out-of-band testing (OAST) (opt-in)

Blind vulnerabilities show no response signal - the only proof is an out-of-band callback. apPosture injects collaborator payloads into parameterised endpoints to catch blind SSRF, blind RCE, blind SQL injection and XXE; a received interaction is hard proof. Uses a collaborator that needs network egress, so it is off by default - point it at a self-hosted, fully-private collaborator for air-gapped use.

Gray-box / Hybrid-AST & taint-guided testing

When a repo is linked, source data-flow (taint) analysis predicts which endpoints are exploitable and the scanner is steered straight at them. When DAST corroborates a source-proven path, the finding is auto-promoted to exploit_confirmed.

Proof, not noise

A finding becomes exploit_confirmed only when it is genuinely proven - an out-of-band callback, a specialist-engine confirmation, a source-to-sink taint corroboration, or a verified critical/high - never just because a model thought it looked real. Confirmed findings are ranked first; the rest are ordered by reachability and severity. See Priorities.

SAST

Static analysis combines a multi-engine rule layer with a deep data-flow (taint) engine that tracks untrusted input from source to sink - intra-procedural, inter-procedural and cross-file - across Java, Go, C#, Ruby, Python, PHP and JS/TS. Findings map to CWE and OWASP and include the vulnerable snippet.

Reachability

A call-graph + entry-point analysis marks whether a finding is actually reachable from a web entry point, so unreachable issues are deprioritized instead of cluttering the backlog.

ML + LLM triage & confidence fusion

Each finding gets a confidence label (likely-real / uncertain / likely-FP) from a fused signal - taint proof, rule precision, comment/pattern guards and local-LLM review - so false positives are filtered before they reach your queue.

Deduplication & grouping

The same flaw reported many times collapses into one issue with an occurrence count - one row, not eighteen - and can be auto-fixed by the AI.

SCA & supply chain

Dependency analysis across npm, PyPI, Composer, Go, Maven/Gradle, NuGet and RubyGems against a curated offline advisory database, with SBOM export. An optional OSV feed (opt-in egress) augments the curated DB to production-grade CVE breadth, and a local-LLM AI advisor summarises impact and the safe upgrade path. Three offline signals cut noise and catch supply-chain risk:

Reachability

A vulnerable dependency only in the lockfile - never imported - is marked unreachable and deprioritized; imported ones are reachable and ranked higher.

License policy

Licenses read from lockfiles; copyleft (GPL/AGPL/LGPL/SSPL) is flagged to review or gate before shipping.

Typosquat / malicious

A direct dependency whose name is an edit-distance neighbour of a popular package (e.g. expres vs express) is flagged as a possible supply-chain attack.

Secrets

Curated provider patterns + entropy detection; values are always masked, never stored. Plus:

Git-history scan

Finds secrets committed then removed from HEAD but still recoverable from history (one rev-list + cat-file --batch pass).

Validity check (opt-in)

Optionally tests whether a GitHub/GitLab/Slack token is still live; live secrets escalate to critical. Makes an outbound call → off by default for air-gap.

IaC

Misconfiguration checks for Terraform, Kubernetes, CloudFormation and Dockerfiles (curated rules + an industry-standard policy engine) - insecure defaults, exposed services, missing encryption and over-broad IAM.

Containers

Image OS + language-package CVEs from each microservice's Dockerfile and CI-built images. In CI the image is scanned on the runner and the SARIF is uploaded, so the image never leaves your network (see CI/CD → container).

Unified posture (Vulnerabilities)

Every engine writes into one Vulnerability store, deduplicated by a stable fingerprint so the same issue from DAST + SAST collapses into one. Each carries severity, CVSS, an EPSS band, KEV flag, reachable, exploit_confirmed, a composite priority score, owner, status lifecycle (new → triaged → resolved/accepted) and a full event history. Manage at scale with mutes, risk acceptances and Jira sync.

DAST · AI-Pentest SAST SCA Secrets IaC Containers Fingerprintdedup · correlate One Vulnerability severity · CVSS · EPSS band · KEV exploit_confirmed reachable priority_score · risk_score sources[] · occurrences · owner status: new → triaged → resolved full event history · Jira sync

All engines converge into one deduplicated, risk-scored record - the single source of truth.

Priorities - the few that matter

A scanner that says "500 issues" is noise. The Priorities view narrows the full set down to the handful you must fix first - the genuinely actionable ones - and writes the security story in plain English.

All open findings512 Real issues (excl. informational)181 Critical / High23 Fix-first8

"Of 512 findings, 8 matter right now." Each stage is a strict subset of the one above it.

The fix-first set is every non-informational critical/high plus anything proven-exploitable (exploit_confirmed) or known-exploited-in-the-wild (KEV). Reachability and EPSS order the list - they never hide a critical. An AI executive summary turns the numbers into a short, leadership-ready briefing with the top concrete actions, generated locally.

Exploit verification

A finding is marked exploit_confirmed only when it is genuinely proven, from any of four independent signals. All are rate-limited and gated by operator authorization, and evidence is redaction-aware. A model's opinion alone never confirms a finding - confirmed ones rank first, the rest are deprioritized.

Safe reproductionAI re-issues a minimal proof Specialist exploitationSQL/cmd injection proven read-only Out-of-band callbackcollaborator interaction (OAST) Taint corroborationSAST source-to-sink meets DAST exploit_confirmedranked first · priority boost Fix-first

Four independent proofs converge on one verdict - never a model's guess.

Attack map

A graph of the attack surface and chained paths - how an exposed entry point connects to sensitive functions and data - so you fix the links that actually create risk.

Internetentry Public APISSRF (confirmed) Metadata svc169.254.169.254 Internal svc Cloud credsprivilege esc. Database Crownjewels Toxic combination: a single exposed endpoint chains to full cloud compromise.

Threat models

The AI reconstructs your architecture from source and builds a STRIDE threat model, versioned over time, with coverage mapping back to findings - automated threat modeling instead of a whiteboard session. You can also import an existing model (OWASP Threat Dragon, a Mermaid diagram, an OpenAPI spec or a CycloneDX SBOM) and let the AI enrich it. Each DAST-testable threat feeds straight into the scan's targeted test plan.

STRIDE threat model: threat coverage bar, architecture trust zones, data flows crossing trust boundaries, and per-threat findings (spoofing, tampering) with severity, mitigation and tested status STRIDE model with trust zones, data flows and per-threat coverage. Import architecture / threats dialog accepting OWASP Threat Dragon JSON, a Mermaid diagram, an OpenAPI spec or a CycloneDX SBOM Import an existing model, or generate one from source.

ASPM coverage

A program-level view: security score & grade, open vs exploitable vs SLA-breached, MTTR, and 30-day trend / risk-burndown by severity - plus per-application risk ranking for where to focus.

Agentic AI engine

The local DeepSeek LLM drives autonomous agents that reason in a loop - plan, act, verify, correct. No data leaves your perimeter, no per-token bill.

AGENT 01
Threat-model

Reads source → STRIDE model.

AGENT 02
Recon & planning

Steers scanners at risk.

AGENT 03
Exploit-verify

Safe reproduction; kills FPs.

AGENT 04
Triage & fix

Ranks risk, writes the patch.

AI assistant

Ask natural-language questions about your posture ("what's exploitable in payments?", "explain this finding", "draft a fix") - answered locally against your own data.

CI/CD pipelines

A portable agent runs in your pipeline, ships the source to the server, and relays the gate verdict as an exit code. Each microservice repo maps to its own application.

Push / PRGitHub·GitLab·Jenkins Agentships source Server scan6 engines + AI Gate enginepolicy · new-vs-base ✓ pass (0) ⚠ warn ✗ fail (1) PR decoratestatus · inline

A PR fails only on findings new vs the default branch; the verdict posts back as a status check + inline annotations.

curl -fsSL https://aspm.apposture.com/api/v1/ci/agent.sh -o apposture && chmod +x apposture

./apposture test     --app payments --severity-threshold high --fail-on new   # gate a PR
./apposture monitor  --app payments                                           # baseline the default branch
./apposture container --image payments:$SHA --app payments                    # scan a built image
./apposture upload   --sarif results.sarif --app payments                     # bring your own SARIF

Per-branch baseline

A PR fails only on findings new vs the default branch; pre-existing issues don't block.

PR decoration

Commit status check + summary comment + inline annotations on the exact lines.

Run detail & AI fix

Findings grouped by scanner with the vulnerable snippet + one-click AI patch.

Exit codes

0 pass · 1 gate fail · 2 usage · 3 server/timeout.

Copy-paste snippets for GitHub Actions, GitLab CI and Jenkins on the Setup page.

Gates

Break-the-build is owned by security, not the YAML. A deterministic rule engine + policy thresholds decide pass / warn / fail from severity, "new vs all", required scanners and accepted-risk waivers. Every evaluation is recorded as a GateRun for audit; the same call can post a PR/MR comment.

SCM webhooks (zero-pipeline)

Prefer not to edit each pipeline? Point a signature-verified webhook at apPosture and it clones + scans on push/PR automatically.

GitHub  → https://aspm.apposture.com/api/v1/scm/webhook/github   (HMAC-SHA256 secret)
GitLab  → https://aspm.apposture.com/api/v1/scm/webhook/gitlab   (secret token)

Push to the default branch records a baseline; a pull/merge request runs the gate and decorates the PR.

VS Code extension

Scan the open workspace from your editor; findings appear inline as diagnostics with one-click AI fixes. Set apposture.url + apposture.token, then run apPosture: Scan workspace. Talks only to your server.

API & tokens

Everything is under /api/v1, authenticated with a Bearer apt_… token (scoped, expiring, revocable). Interactive docs at /docs.

curl -X POST https://aspm.apposture.com/api/v1/ci/run \
  -H "Authorization: Bearer apt_…" \
  -F 'meta={"app":"payments","gate":{"fail_on_severity":"high","fail_on":"new"}}' \
  -F "source=@src.tar.gz"

Policies

Define organization rules once: severity thresholds, required scanners, environment-specific gates, auto-escalation (e.g. KEV/exploitable → critical) and exceptions. The same engine powers the dashboard, gates and SLAs.

Compliance & SBOM

Findings map to SOC 2, PCI DSS, HIPAA, NIST and GDPR controls; generate auditor-ready evidence on-prem. Export an SBOM in CycloneDX or SPDX per application.

SLA & tickets

Set remediation SLAs by severity; breaches surface on the dashboard and drive notifications. Push findings to Jira / GitLab / Azure DevOps and sync status back via signed webhooks. The AI can open an auto-fix PR with the patch.

Reports

Executive and operational reporting: posture trends, risk-by-application, scan history, and exportable run reports - plus shareable read-only report links secured by an expiring token.

Identity & access

Notifications

Email (SMTP), Slack, Telegram and generic webhook channels with per-user preferences, approved templates and a delivery log. Wire alerts for new criticals, gate failures, SLA breaches and health events. Dry-run mode renders without sending (offline-safe).

Audit log

Every privileged action - scans, gate runs, status changes, config edits, token use - is recorded with actor, IP and before/after state for incident review and compliance evidence.

Backups

Scheduled, encrypted database backups with automatic verify-restore into a scratch DB, a pre-restore safety snapshot, retention pruning, and off-site targets (local volume, S3/MinIO, SFTP, fileshare).

BACKUP Schedulecron Dump DBpg_dump Encryptat rest Verify-restorescratch DB Pruneretention off-site → Local vol S3 / MinIO SFTP Fileshare RESTORE Select backup Safety snapshotpre-restore Restore + verify

Every backup is verified by a test-restore; every restore takes a safety snapshot first - so recovery is never a leap of faith.

Health monitor

Watches the scanner pool, database, LLM and other services; alerts on down/recovery (e.g. via Telegram) with configurable thresholds and re-alert intervals - so a stuck scanner never silently fails scans.

Threat intel

A curated threat-intel feed (KEV / NVD / GHSA) cross-references findings (CWE/CVE class, exploit-in-the-wild signals) to sharpen prioritization, correlated to your detected technology stack. Opt-in & egress-gated, so it stays air-gap friendly when you need it to.

Threat Intelligence dashboard: advisory count, KEV exploited count, severity breakdown, advisories by source (NVD, GitHub GHSA), and a priority spotlight of CVEs with EPSS scores
Threat-intel advisories correlated to your stack, ranked by KEV / EPSS.

API Security platform

apPosture ships a second, independent product for runtime API protection (waf.apposture.com): continuous discovery of documented & shadow APIs, an AI-assisted WAF that blocks attacks inline, OWASP API Top 10 auditing (BOLA, BFLA, mass assignment), bot/abuse defense, rate limiting and schema validation. Separate app, separate data - run it alongside ASPM or on its own.

API Security overview: OWASP API Top 10 posture, endpoint inventory, API findings, exploit-confirmed count, top-10-at-risk score, OWASP API Top 10 coverage grid and a list of top risky endpoints
The API Security platform - OWASP API Top 10 posture, endpoint inventory and top risky endpoints.

Need help? Contact us · Launch ASPM · API reference

© 2026 apPosture ai - Enterprise Application & API Security Platform