Deterministic, CI-native performance regression and evolution engine.
Make performance a first-class, enforceable engineering signal — without requiring any SaaS platform, cloud account, or vendor dependency.
pip install flameiq-core
flameiq init
flameiq baseline set --metrics benchmark.json
flameiq compare --metrics current.json --fail-on-regression
Why FlameIQ?
Performance regressions are rarely caught in code review. They accumulate silently across hundreds of commits — a 3 ms latency increase here, a 2% throughput drop there — until they become expensive production incidents.
FlameIQ brings the same engineering discipline to performance that type checkers bring to correctness: automated, deterministic, CI-enforced.
Design Principles
Principle |
What it means |
|---|---|
Deterministic |
Same input → same output, always. No flakiness. |
CI-native |
Exit codes, JSON output, works in any pipeline. |
Offline-first |
No network calls. No telemetry. Air-gap ready. |
Language-agnostic |
Provider plugin system. Any tool, any language. |
Statistically grounded |
Optional Mann-Whitney U test with effect size. |
Auditable |
Math documented in /specs. No black boxes. |
Vendor-neutral |
No cloud lock-in. Your data stays local. |
Extensible |
Stable plugin SDK. Easy to add new providers. |
Installation
pip install flameiq-core
Requires Python 3.10+. No system dependencies.
Quick Start
Step 1: Initialise
cd my-project
flameiq init
Step 2: Write a FlameIQ v1 metrics file
{
"schema_version": 1,
"metadata": {
"commit": "abc123",
"branch": "main",
"environment": "ci"
},
"metrics": {
"latency": {
"mean": 120.5,
"p95": 180.0,
"p99": 240.0
},
"throughput": 950.2,
"memory_mb": 512.0
}
}
Step 3: Set a baseline
flameiq baseline set --metrics benchmark.json
Step 4: Compare on every PR
flameiq compare --metrics current.json --fail-on-regression
Step 5: Generate an HTML report
flameiq report --metrics current.json --output report.html
GitHub Actions Integration
- name: Install FlameIQ
run: pip install flameiq-core
- name: Restore baseline cache
uses: actions/cache@v4
with:
path: .flameiq/
key: flameiq-${{ github.base_ref }}
- name: Run benchmarks
run: python run_benchmarks.py > metrics.json
- name: Check for regressions
run: flameiq compare --metrics metrics.json --fail-on-regression
Exit Codes
Code |
Meaning |
|---|---|
0 |
Pass — no regression detected |
1 |
Regression — metric(s) exceeded threshold |
2 |
Configuration / baseline error |
3 |
Metrics file invalid or unreadable |
Python API
from flameiq.schema.v1.models import PerformanceSnapshot
from flameiq.core.comparator import compare_snapshots
from flameiq.core.models import RegressionStatus
from flameiq.storage.baseline_store import BaselineStore
store = BaselineStore()
baseline = store.load_baseline()
current = PerformanceSnapshot.from_dict({
"schema_version": 1,
"metadata": {"commit": "def456"},
"metrics": {"latency": {"p95": 185.0}, "throughput": 940.0},
})
result = compare_snapshots(baseline, current)
if result.status == RegressionStatus.REGRESSION:
for reg in result.regressions:
print(f" REGRESSION: {reg.metric_key} {reg.change_percent:+.2f}%")
else:
print("All metrics within threshold.")
# Machine-readable JSON
import json
print(json.dumps(result.to_dict(), indent=2))
Configuration
flameiq.yaml (created by flameiq init):
thresholds:
latency.p95: 10%
latency.p99: 15%
throughput: -5%
memory_mb: 8%
baseline:
strategy: rolling_median
rolling_window: 5
statistics:
enabled: false
confidence: 0.95
provider: json
Documentation
Full documentation: https://flameiq-core.readthedocs.io
Contributing
Contributions are welcome. Please read CONTRIBUTING.rst and open an issue before starting significant work.
License
Apache License 2.0. See LICENSE.
“FlameIQ” is a trademark of the FlameIQ project. Use of the name or logo to endorse derived products requires written permission. Contact: Angufibo Lincoln <angufibolinc@gmail.com>
Metadata
Release files for flameiq-core 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flameiq_core-1.0.2.tar.gz | 72.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flameiq_core-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 119.9 kB
Release files / flameiq_core-1.0.2.tar.gz
| Download URL | flameiq_core-1.0.2.tar.gz |
|---|---|
| Size | 72.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
526dd908f1c4fbfc401a6f036b3086bc3cf1f9f69ee9ac9cc1f771f02815ddc5
|
|
BLAKE2b-256 checksum How to use checksums |
e1b9cc68714a77b98db80a35f8da8e473e6e4e6e46e5310c7e406340574325ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 7, 2026.
Transparency logRelease files / flameiq_core-1.0.2-py3-none-any.whl
| Download URL | flameiq_core-1.0.2-py3-none-any.whl |
|---|---|
| Size | 47.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc199df123e28d912e3c418bbb02725cffe5fad90598308bd7c8aa0b2b61d090
|
|
BLAKE2b-256 checksum How to use checksums |
9e614f0388fc3c2cde81c127230eb0075d9957a99a9d598bd0d103239673c70c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 7, 2026.
Transparency log