Skip to main content

Developer security platform — write-time, commit-time, and runtime protection

Project description

ekmire

Developer security platform — write-time, commit-time, and runtime protection.

pip install ekmire
ekmire init

Features

Feature Flag / Command What it does
Build Guard (SAST) ekmire scan Detects secrets, injection, AI security risks in source code
SCA — dependency CVEs --deps Scans lockfiles against the OSV database for known CVEs
Reachability analysis --reachability Tags AST findings as reachable or not via call-graph analysis
CycloneDX SBOM --output cyclonedx Emits a CycloneDX 1.5 SBOM (SAST + SCA combined)
SARIF --output sarif Uploads findings to GitHub Code Scanning
Dev Audit ekmire dev-audit AI-powered security review of a file, dir, or staged diff
MCP Audit ekmire mcp audit Scans all IDE MCP server configs for exposure and poisoning risks
Pre-commit hook ekmire hook install Blocks commits with critical findings

Quick start

# Install
pip install ekmire

# First-run wizard: auth → scan → hook install
ekmire init

# Scan current directory
ekmire scan --deep .

# Also scan lockfiles for CVEs (SCA)
ekmire scan --deep . --deps

# Tag findings with reachability (AST engine, Python files)
ekmire scan --deep . --reachability

# Output SARIF for GitHub Code Scanning
ekmire scan --deep . --deps --output sarif > results.sarif

# Output CycloneDX SBOM (SAST + SCA)
ekmire scan --deep . --deps --output cyclonedx > sbom.cdx.json

# AI security review of a file or staged diff
ekmire dev-audit src/auth.py
ekmire dev-audit --diff

# Scan all IDE MCP configs
ekmire mcp audit

scan command

ekmire scan [PATH] [OPTIONS]
Option Default Description
--deep off Recursive scan without requiring git context
--all off Scan all files in working directory
--deps off Also scan lockfiles for CVEs via OSV (SCA)
--reachability off Tag AST findings with reachability analysis (slower)
--output text Output format: text, json, sarif, cyclonedx
--fail-on none Exit 1 if findings at or above this severity exist

Detection engines

Engine A — regex (cross-language, fast)

Applied to raw file content. Detects hardcoded secrets, prompt injection patterns, XSS risks, and misconfigured MCP server URLs.

Engine B — AST (Python only)

Structural analysis using Python's ast module. Detects:

  • HARDCODED_SECRET_GENERIC — high-entropy strings in secret-named variables
  • SQL_INJECTION_RISK — f-strings or concatenation inside execute()
  • DANGEROUS_DESERIALISATIONpickle.loads() / marshal.loads()
  • UNSAFE_YAML_LOADyaml.load() without SafeLoader
  • COMMAND_INJECTION_RISK — dynamic args to subprocess.run() / os.system()
  • MCP_TOOL_POISONING — instruction-override language in MCP tool descriptions

With --reachability: each finding is tagged [REACHABLE] / [NOT REACHABLE] based on a lightweight intra-file call-graph analysis.

Engine C — SCA (lockfile scanning, network)

Parses package lockfiles and queries the OSV database (api.osv.dev) for known CVEs.

Supported lockfiles:

Lockfile Ecosystem
requirements.txt PyPI
Pipfile.lock PyPI
poetry.lock PyPI
package-lock.json npm
yarn.lock npm

SCA findings include: package name, installed version, fix version, CVE IDs, and a copy-ready upgrade command (e.g. pip install --upgrade requests==2.32.0).

No source code is sent to any external service — only package name + version is submitted to the public OSV API.


Output formats

--output text (default)

Rich terminal output with severity colours, reachability badges, fix commands, suppression hints, and docs links.

--output json

JSON array of findings. Each finding includes rule_id, severity, file, line, description, fix, and (when available) reachable, package, installed_version, fix_version, cve_ids.

--output sarif

SARIF 2.1.0 for GitHub Code Scanning. Includes help.text (fix commands) and fixes objects. Upload with github/codeql-action/upload-sarif.

--output cyclonedx

CycloneDX 1.5 JSON SBOM. SCA findings appear as components + vulnerabilities; SAST findings appear as code-level vulnerabilities.


Suppression

To suppress a specific finding, add a comment on the line above (preferred) or inline:

# ekmire-ignore:HARDCODED_SECRET_GENERIC
API_KEY = "..."  # this is a test value

token = get_token()  # ekmire-ignore:HARDCODED_SECRET_GENERIC

Suppressions are logged to your dashboard for review.


CI / CD templates

Copy these into .github/workflows/ in any repository:

Template Purpose
templates/ekmire-sarif.yml SAST + SCA scan → GitHub Code Scanning (SARIF)
templates/ekmire-cyclonedx.yml SAST + SCA → CycloneDX SBOM artifact

Authentication (optional)

Without authentication, ekmire works fully offline using the built-in rule bundle. Authentication enables:

  • Cloud rule bundle (updated threat feed)
  • Dashboard event tracking
  • AI Dev Audit (ekmire dev-audit)
ekmire auth login    # opens browser auth flow
ekmire auth status   # show current auth state
ekmire auth logout   # remove saved credentials

Docs: ekmire.com/docs
Dashboard: app.ekmire.com

© Flux8Labs 2026

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ekmire-2.0.4.tar.gz (30.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ekmire-2.0.4-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file ekmire-2.0.4.tar.gz.

File metadata

  • Download URL: ekmire-2.0.4.tar.gz
  • Upload date:
  • Size: 30.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ekmire-2.0.4.tar.gz
Algorithm Hash digest
SHA256 4c17f302064f93a05038e4a0403464ebf32048892adcdbd71c471029308da4c8
MD5 d56b72cedf26f9de8acdb15891809a5f
BLAKE2b-256 9bbe93459a425bd8f1c15e2699130745c4f82c78b8f22357585517bc2ed83d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for ekmire-2.0.4.tar.gz:

Publisher: cli.yml on bhavyansh001/ekmire-backend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ekmire-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: ekmire-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ekmire-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d8ae724f8a8738040cc9da57c7787479d7d9ac091402519cbb19184288800a50
MD5 23789504c4d24e8a6b6d46e4b9269bf7
BLAKE2b-256 83e9460b74e6681cbc6da284a1d3aed6ab2e6674ad3d4e0db0566ab552fe7657

See more details on using hashes here.

Provenance

The following attestation bundles were made for ekmire-2.0.4-py3-none-any.whl:

Publisher: cli.yml on bhavyansh001/ekmire-backend

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page