Skip to main content

Evagix

Local-first evidence validation for AI-assisted repositories.

Evagix checks repository claims, documented commands, agent-facing instructions, and generated context against local evidence before humans or coding agents rely on them.

PyPI version CI Python Runtime dependencies License

Quick start · Commands · Documentation · Security

Evagix v0.1.0 provides conservative local evidence checks and CI-friendly repository validation.


Why Evagix?

AI-assisted development increasingly depends on repository text: README files, agent instructions, CI notes, generated context, and documented commands.

Those instructions can drift away from the repository they describe.

README says: npm test
package.json has no matching test script
README claims Docker support
no Dockerfile or Compose file exists
AGENTS.md documents one test command
evagix.toml declares another

Evagix treats repository instructions as evidence-backed artifacts rather than trusted prose.

repository evidence
        ↓
rules + policy
        ↓
findings + scoring
        ↓
text / JSON / Markdown / SARIF

It is intentionally focused: Evagix validates repository-facing evidence and instructions. It does not replace tests, CI, code review, SAST, secret scanning, or dependency auditing.


Quick start

Install:

python -m pip install evagix

Run the main checks:

evagix doctor . --strict --fail-under 80
evagix readme-audit . --strict --fail-on unsupported
evagix eval-context . --strict --fail-on high
evagix check .

The shorter evgx command is also available:

evgx doctor .

Typical findings

Finding Why it matters
README claims Docker support, but no Dockerfile or Compose file was found. Prevents unsupported setup claims from being treated as repository fact.
README documents npm test, but no matching package script exists. Flags stale commands before humans or agents copy them.
AGENTS.md and evagix.toml disagree about the canonical test command. Surfaces conflicting agent instructions.
Generated context fingerprint no longer matches repository facts. Detects context drift.
Agent-facing docs instruct tools to read local environment files. Flags risky guidance around local secrets.
CI is claimed in documentation, but no workflow evidence exists. Prevents readiness claims from being inferred without evidence.

Install

PyPI

python -m pip install evagix

For an isolated CLI installation:

pipx install evagix

Upgrade with:

python -m pip install --upgrade evagix

or:

pipx upgrade evagix

From source

git clone https://github.com/tarekmasryo/Evagix.git
cd Evagix
python -m pip install -e ".[dev]"

Check the CLI:

evagix --version
evgx --version

Evagix requires Python 3.11 or newer and has zero runtime dependencies.

The release CI matrix validates Python 3.11, 3.12, 3.13, and 3.14. Newer interpreter versions are considered supported only after they enter that matrix.


What Evagix checks

Evagix works from repository-local evidence.

Area What it looks for
README evidence Unsupported or weakly supported claims about tests, CI, Docker, packaging, deployment, typing, monitoring, and related capabilities
Commands Install, test, lint, typecheck, build, eval, smoke, and application-run evidence
Agent context AGENTS.md, supported tool-specific context files, conflicts, unsafe instructions, and missing canonical commands
Generated context Missing, stale, unmanaged, tampered, truncated, or invalid generated targets
Safety signals Dangerous shell guidance, credential-bearing commands, environment exposure, and context-poisoning patterns
Repository signals Languages, tests, migrations, tooling, infrastructure markers, and related readiness evidence
CI / PR context Workflow evidence and advisory changed-file risk signals

Findings are designed to explain what was detected, what evidence supports it, why it matters, and what should be fixed or deliberately waived.

See the complete rule reference.


Core commands

Goal Command
Repository readiness evagix doctor . --strict --fail-under 80
README evidence audit evagix readme-audit . --strict --fail-on unsupported
Agent-context evaluation evagix eval-context . --strict --fail-on high
Generated-context verification evagix check .
Generate context evagix compile . --force
Preview synchronization evagix sync . --plan
Repository audit evagix audit .
PR risk signals evagix pr-risk . --base main
Explain a finding evagix explain missing-ci
Export a report evagix report .

Additional commands for baselines, scoped checks, context packs, evidence export, and automation are documented in docs/commands.md.

--strict enables stricter gate behavior. Failure thresholds are controlled by command-specific options such as --fail-under, --fail-on high, and --fail-on unsupported.

pr-risk is advisory and does not replace repository checks, tests, CI, or human review.

Advanced commands

Goal Command
Baseline snapshot evagix baseline .
Baseline diff evagix diff .
Scoped checks evagix scoped .
Context pack evagix context-pack .

How it works

flowchart LR
    A[Repository files] --> B[Evidence collection]
    B --> C[Rules and policy]
    C --> D[Findings and scoring]
    D --> E[Reports and generated context]

    B --> B1[README claims]
    B --> B2[Commands]
    B --> B3[Agent context]
    B --> B4[CI and repository signals]

    E --> E1[Text]
    E --> E2[JSON]
    E --> E3[Markdown]
    E --> E4[SARIF]

Evagix does not execute project commands while scanning, install project dependencies, call model APIs, or upload the repository.

Static markers are evidence signals, not proof of high-impact claims such as secure or production-ready. When local evidence is insufficient, Evagix keeps the result weak, partial, unsupported, or subject to manual review instead of manufacturing certainty.


Reports and outputs

evagix doctor . --format json
evagix readme-audit . --format json
evagix eval-context . --format json
evagix report . --format sarif --output evagix.sarif --force
Format Typical use
Text Local review
JSON Automation and CI parsing
Markdown Human-readable reports
SARIF Code-scanning style integrations where supported

Evidence-sensitive reads are bounded. Truncated, unreadable, or invalid UTF-8 input is reported as incomplete rather than being treated as clean evidence.


CI usage

A conservative CI gate can run:

python -m evagix check .
python -m evagix doctor . --strict --fail-under 80
python -m evagix readme-audit . --strict --fail-on unsupported
python -m evagix eval-context . --strict --fail-on high

For gradual adoption, start with reporting-only output, review the findings, then add strict thresholds when the repository policy is ready to enforce them.


Configuration

evagix.toml defines canonical commands, generated targets, and policy thresholds.

[policy]
fail_on_stale = true
fail_under = 80

[commands]
test = "python -m pytest"
lint = "python -m ruff check ."
typecheck = "python -m mypy evagix"

Configuration is validated before it is trusted. Invalid keys, empty commands, unsafe target paths, literal command credentials, and high-risk shell commands are rejected at the relevant boundary.

README examples can be excluded from claim analysis, while intentionally waived real claims remain visible in results.

See docs/configuration.md.


Generated context

Evagix can create opt-in agent-facing context for AGENTS.md-compatible workflows and supported tool-specific targets.

Neutral Evagix-managed context targets include:

.evagix/context.md
.evagix/context.json

Generated context carries ownership and fingerprint information.

Evagix records integrity state separately in:

.evagix/integrity.json

This allows evagix check to detect stale context and manual modification independently, and to report both when appropriate.

Tool-specific exports are generated only when explicitly requested or configured. Vendor names identify compatible target formats only; they do not imply affiliation, endorsement, or sponsorship.


Conservative behavior

Evagix intentionally avoids turning missing evidence into confidence:

  • External or missing agent context is unscored rather than receiving a positive structural score.
  • Incomplete README reads do not become clean 100/100 results.
  • Invalid UTF-8 and unsafe path conditions are surfaced instead of silently ignored.
  • Generated context freshness and integrity are checked independently.
  • Unsafe repository-internal symlink traversal is rejected.
  • Policy waivers remain visible and do not create supporting evidence.

Exact semantics are documented in the rule reference.


Supported environments

Evagix targets Python 3.11–3.14 through its release matrix.

It has zero runtime dependencies and does not require network access for repository scans.

Evagix can inspect repositories containing different languages and ecosystems, but it is not a deep language or framework analyzer.


Scope

Evagix is not:

  • a full security scanner;
  • a secret scanner;
  • a dependency vulnerability auditor;
  • a semantic code analyzer;
  • a test runner;
  • a CI replacement;
  • a release approval system.

It complements those tools by checking whether repository-facing instructions and claims are supported by local evidence available to humans and coding agents.


Documentation

Document Purpose
docs/architecture.md Architecture boundaries and extension rules
docs/commands.md Command guide and common workflows
docs/configuration.md Configuration reference
docs/rules.md Rule overview
docs/rules-reference.md Complete rule reference
docs/schemas.md JSON schema notes
SECURITY.md Security policy
CONTRIBUTING.md Contribution workflow

Development

python -m pip install -e ".[dev]"
python -m ruff check .
python -m ruff format --check .
python -m mypy evagix
python -m pytest --cov=evagix --cov-branch --cov-report=term-missing --cov-fail-under=80

Architecture boundaries are documented in docs/architecture.md.


Security

Evagix is designed to inspect repository evidence conservatively and avoid unnecessary access to known secret-bearing file types.

It does not intentionally read .env files or private-key formats as ordinary repository evidence.

For vulnerability reporting and security policy, see SECURITY.md.


License

Apache-2.0. See LICENSE.

Metadata

Release files for evagix 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evagix 0.1.0
File Size Uploaded
evagix-0.1.0.tar.gz 199.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evagix 0.1.0
File Interpreter ABI Platform
evagix-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 464.2 kB

Release files / evagix-0.1.0.tar.gz

Download URL evagix-0.1.0.tar.gz
Size 199.9 kB
Tags Source
SHA-256 checksum
How to use checksums
4da4851af4f0d982c77a2b2a380ad8c5f39789cbdb78525e04689ceb2b4d406a
BLAKE2b-256 checksum
How to use checksums
d073376d0e1929ac8d7e038ebcc0e73a1a4d7c522396f080100159154820bbcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / evagix-0.1.0-py3-none-any.whl

Download URL evagix-0.1.0-py3-none-any.whl
Size 264.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51ce5d2f31f758686af9c7036be57ff56f3ba9134081cf09852cb9cbaf1b4d92
BLAKE2b-256 checksum
How to use checksums
7c5a84c15af613268cf99354f2a903723e9f8fc5e1217c80a19368d895a4c90f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page