Skip to main content

Signal Engine

Signal Engine is a modular tool for aggregating, normalizing, and analyzing the output of static code analysis tools.
It is designed to provide insight into top rules, top files, and clusters of findings across multiple scans.

Signal Engine takes scan outputs, in JSON format, and transforms them into actionable insights:

  • Top Rules – see which rules are triggered most frequently
  • Top Files – identify the files with the highest number of findings
  • Clusters – group related findings to reveal patterns and correlations

Currently supported tools

  • semgrep

Features

  • Ingest and parse JSON outputs from supported tools
  • Normalize findings into a consistent structure
  • Compute top rules and top files
  • Group findings into basic clusters
  • Export results in CSV format

Installation

pip install signal-engine

Usage

Ingesting results

Ingest findings from static analysis JSON files into the repository database.

Ingest multiple JSON files from a directory

signal-cli ingest --repo-name myrepo --tool semgrep /path/to/json_reports/
  • --repo-name → name of the repository
  • --tool → the tool that generated the findings (semgrep, bandit, etc.)
  • positional argument → path to JSON file or directory containing multiple JSON files

Ingest a single JSON file

signal-cli ingest --repo-name myrepo --tool semgrep /path/to/json_reports/report.json

After ingest, all findings are stored in a SQLite database located in the standard user data directory, and can be queried with analyze or info.

Analyzing ingested results

By default, analyze prints results to standard output:

signal-cli analyze --repo-name myrepo

Optional CSV export with -o / --output:

signal-cli analyze --repo-name myrepo -o analysis.csv

Show Repository Info

Basic info about a repository’s ingestion:

signal-cli info --repo-name myrepo

A possible output can be something like:

Repository: myrepo
DB path: /home/user/.local/share/signal-engine/<hash>.db
Ingest time: 2026-02-03T14:25:01+00:00
Number of findings: 153

Verbose mode with top rules and tools:

signal-cli info --repo-name myrepo --verbose
Repository: myrepo
DB path: /home/user/.local/share/signal-engine/<hash>.db
Ingest time: 2026-02-03T14:25:01+00:00
Number of findings: 153
Tool version used for ingest: 0.1.2
Tools in DB: semgrep, bandit
Top 5 rules:
  javascript.browser.security.eval-detected.eval-detected: 12
  python.security.audit.use-of-exec: 8
  ...

Database migrations

Signal Engine uses a lightweight migration system to manage database schema changes over time. Each repository database keeps track of applied migrations via the schema_migrations table.

Migrations are distributed with the package and applied explicitly via the CLI. This allows existing databases to be upgraded safely when new features introduce schema changes (e.g. new tables such as metrics).

When running migrations, Signal Engine will:

  • Detect which migrations are missing for a given repository database
  • Apply them in order
  • Record their application to avoid reapplying them in the future

This approach ensures backward compatibility with existing databases while allowing the schema to evolve as new analysis features are introduced.

Applying database migrations

Signal Engine ships with database migrations to evolve the schema of repository databases over time (for example, when introducing new tables such as metrics).

To apply migrations to a specific repository database, use the migrate command and pass the repository name:

signal-cli migrate --repo-name myrepo

To check if a migration is needed, you can use the --check flag. Please note that this don't apply pending migrations.

signal-cli migrate --repo-name myrepo

LICENSE

License: AGPL v3 This project is licensed under the AGPLv3 license.

Metadata

Release files for signal-engine 0.3.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 signal-engine 0.3.0
File Size Uploaded Provenance
signal_engine-0.3.0.tar.gz 25.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for signal-engine 0.3.0
File Interpreter ABI Platform
signal_engine-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.5 kB

Release files / signal_engine-0.3.0.tar.gz

Download URL signal_engine-0.3.0.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d414cc38bde3fb3f56226e1dea0ae847f73acd49a08337f69522e684890ff083
BLAKE2b-256 checksum
How to use checksums
48a08f4482a724f785279aa8c02e3d55c56b0ac3b078dd57d03123203ac9f629
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / signal_engine-0.3.0-py3-none-any.whl

Download URL signal_engine-0.3.0-py3-none-any.whl
Size 25.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6141075f52f70cb4f898bafe9ca25c990ab0baa1f3855466f7b1ff28f896df59
BLAKE2b-256 checksum
How to use checksums
72f61a651c2cf84287cf9c1bdeaeffecb00b1474f3350bb90f9bbb006e4b2c9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Security for signal-engine 0.3.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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