Signals
Static analysis, dependency resolution, live API probing, and imported third-party results.
One input among several — not the product.
RELEASE SECURITY DECISIONS, BACKED BY EVIDENCE
Fendix connects code findings to reachable application behavior, correlates dependency and API evidence, then applies your release policy to return a decision your team can act on.
Release
payments-api · 2.14.0 · commit 9f3c1ab
Recommendation
WARNBecause: 1 reachable HIGH finding · dependency scan incomplete
Read the full recordEngineering teams already receive findings from code scanners, dependency tools, API tests, and penetration tests. The hard part is knowing what is reachable, what violates policy, who owns the fix, and whether the release can move forward.
What you already have
What nobody can answer
Scanning is one source of signals. The decision is the product.
Static analysis, dependency resolution, live API probing, and imported third-party results.
One input among several — not the product.
Findings are linked to the route, handler, data flow, and runtime behavior behind them.
Your committed policy decides what blocks, what warns, and what is informational.
Each finalized finding receives BLOCK, WARN, or INFO under the configured severity threshold; the report summarizes those statuses and scanner coverage.
Each remaining risk gets an owner, a status, and a remediation deadline.
Re-run the exact check that found it and record whether the fix held.
See what changed, what was tested, which policies were triggered, and why the release received its decision.
Release
payments-api · 2.14.0 · commit 9f3c1ab
Policy: .fendix.yaml v1 — blocks at CRITICAL
Highest finding status
WARNWildcard CORS origin on /public/status
Accepted by Security Lead · expires 2026-08-04
SQL injection in refund handler
@payments-team · due 2026-07-29
Missing rate limit on /api/v2/login
@platform-security · due 2026-08-07
A finding on its own is a guess. Fendix links what it observed at runtime to the route, the handler, and the data flow behind it — then to the person accountable for fixing it.
API endpoint
POST /api/v2/payments/refund
Runtime behavior
401 without a token · 200 with a member token
Application route
payments.urls → refund_view
Code handler
payments/views.py:88
Data flow
request.data["account"] → build_query() → cursor.execute()
Risk
HIGH · SQL injection · CWE-89
Owner
@payments-team · due 2026-07-29
Verified fix
Re-checked after the fix — resolved
When evidence is available. Not every finding has a complete chain — Fendix shows the links it can support and marks the rest as unverified.
The same decision, read the way each team needs to read it.
Know what to fix, why it matters, and how to verify the fix.
Define policy, review exceptions, and track risk to closure.
Understand whether a release can move forward and what risk remains.
Access a documented history of testing, decisions, exceptions, and remediation.
Start with the operating model closest to yours.
Ship quickly without blindly accepting application risk.
Apply a repeatable security gate across client projects.
14-Day Managed Pilot
Work directly with the Fendix team on one repository and, where applicable, one staging API. Leave with a reviewed decision record and a clear next-step recommendation.
Apply for a 14-Day PilotSelect one repository and, where applicable, one staging API.
Agree the release policy and success criteria.
Configure and run Fendix together.
Review decisions, coverage gaps, and supporting evidence.
Re-test selected critical fixes where supported.
Finish with a pilot outcome and next-step recommendation.
Arabic is a first-class experience, not a translation layer — and the same deployment and evidence controls apply wherever your team runs.
Both languages are complete product experiences, not partial translations.
Right-to-left layout, mirrored navigation, and Arabic type shaping throughout.
Run scans on your own infrastructure so target traffic and source never leave it.
Append-only records of security-relevant actions, exportable as CSV.
HTML and SARIF outputs for engineers; decision summaries for leadership.
One binary in your pipeline, a pre-commit hook, or a GitHub Actions step.
No telemetry in the engine, and deployment options that keep scan data in your environment.
If we can't show you how to verify it, it isn't here.
Every tagged release is signed with cosign keyless (Sigstore) and ships an SBOM. Unsigned tags fail the release pipeline.
See releasesThe engine has no phone-home code. Confirm it yourself with tcpdump, or read the source.
Privacy and data handlingAccuracy and performance numbers are published with the version, date, run count, and the command to reproduce them.
Accuracy methodologyEach scanner reports completed, skipped, or failed per run — so a partial scan reads as INCOMPLETE instead of green.
CapabilitiesEnforcement rules live in a committed .fendix.yaml, reviewed like any other change. No hidden server-side thresholds.
CLI referenceA single static binary with no agents to install, runnable entirely inside your own network.
ArchitectureThe full check library, each check's technique, and its known limits are documented in public.
Check libraryThe engine is MIT-licensed. Audit how a decision is reached instead of taking our word for it.
LicenseDirect answers about fit, workflow, and evidence.
No. Scanners provide signals. Fendix correlates supported code, dependency, and API evidence, applies release policy, and produces a release decision with its reasons and coverage gaps.
The initial focus is Python, Django, FastAPI, supported Node.js analysis, APIs, and backend-heavy products. The walkthrough confirms fit against your repository before a pilot.
Not necessarily. Fendix can collect its own supported signals and import supported third-party results; its role is to turn evidence into a consistent release decision.
A finalized finding is BLOCK when its severity meets or exceeds the fail_on threshold in your committed policy AND its deterministic confidence band supports the claim: a HIGH band blocks, MEDIUM blocks only with at least one corroborating signal, and LOW warns instead. Correlation is still not required — a single-source finding can block on its own evidence, since a directly observed missing header and a deterministic pattern match in production code each reach the HIGH band alone. What changed in v2.0 is that confidence is now required rather than merely explanatory, so a finding the scan could not corroborate warns instead of failing the build; --enforce-confidence=false restores the previous severity-only rule byte-for-byte. Since v3.2.0 the report names which of these justified the block, so you do not have to infer it: independent corroboration (a second, distinct observation agreed), a reachable taint path (user-controlled input was proved to reach the dangerous call), or a self-evident deterministic match (a pattern whose observation substantially is the claim, such as a provider-issued credential in production code). A build blocked only because --enforce-confidence=false switched the requirement off is marked as a relaxed-policy override, so it can never be mistaken for an evidence-backed block. The same rationale appears in the native JSON and in SARIF. Scanner failures and coverage gaps are reported separately.
Yes. Fendix supports command-line and GitHub Actions workflows, with policy stored in .fendix.yaml.
The engine has no telemetry. Self-hosted execution can keep target traffic and source inside your infrastructure; deployment details are confirmed for your chosen workflow.
We scope one repository and an applicable staging API, agree policy and success criteria, run Fendix with you, review the decision, and verify selected fixes where supported.
Yes. Software houses can apply a repeatable policy and decision workflow across repositories while preserving per-project evidence and accountability.
Bring a repository or staging API. We'll walk through how Fendix reaches a release decision using real evidence.