Skip to main content

flameox

Local runtime evidence for coding agents investigating performance, memory, execution, concurrency, and reliability.

flameox mascot: an ox with a flame graph between its horns

Python 3.12 or newer Data stays local CLI and MCP interfaces

Flameox coordinates maintained profilers, benchmark tools, and trace processors; preserves their native artifacts and provenance; and exposes bounded evidence to an agent. The agent forms the hypothesis. Flameox makes the measurements and experimental record inspectable.

It is not a profiler, hosted observability service, arbitrary shell or SQL gateway, source-code editor, or automatic bug finder.

Quick start

Connect a supported MCP client through the guided setup:

npx flameox@latest setup

Restart the client, open the project you intend to inspect, and ask it to:

Initialize Flameox in this project and list the available profiling capabilities.

Setup installs a versioned local runtime and changes only approved client configuration. Project initialization is separate and creates .diagnostics/ only after the client calls the initialization workflow for its fixed project root.

For source development:

uv sync --extra dev
uv run flameox init .
uv run flameox status

Python 3.12 or newer and the committed uv.lock are required.

Investigation path

symptom → capture or import → bounded evidence → hypothesis
        → discriminating experiment → supported, refuted, or inconclusive finding

Typical evidence sources include pyperf, py-spy, pytest-reportlog, coverage.py, Memray, Perfetto, torch.profiler, Nsight Systems, Nsight Compute, ROCprofiler, Compute Sanitizer, NVBench, and typed inference-provider exports. Availability depends on the host, permissions, installed extras, and selected adapter. Flameox reports missing evidence instead of silently substituting a weaker source.

A profile is exploratory. A performance or correctness conclusion requires a representative workload, declared metric and estimand, compatible run identity, preserved samples, and an appropriate semantic oracle.

Named workloads

Commands live in flameox.toml as argument arrays. Parameters are declared scalars; there is no shell expansion.

schema_version = 1

[workloads.scan]
argv = ["python", "bench.py", "--implementation", "{implementation}"]
cwd = "."
timeout_seconds = 60

[workloads.scan.parameters]
implementation = ["baseline", "candidate"]

[workloads.scan.oracle]
strength = "cross_treatment_equivalence"
argv = ["python", "validate.py", "--implementation", "{implementation}"]

[experiments.scan_comparison]
workload = "scan"
design = "randomized_complete_blocks"
blocks = 10
treatment_factor = "implementation"
combination_policy = "cartesian"
primary_metric = "pyperf.workload"
polarity = "lower_is_better"
estimand = "median_paired_log_ratio"
practical_threshold = 0.05
confidence_level = 0.95
random_seed = 1984

[experiments.scan_comparison.factors]
implementation = ["baseline", "candidate"]

The MCP configure_workload tool validates and writes the canonical definition without executing it. A manually authored valid definition is active immediately; there is no approval copy or secondary workload registry.

uv run flameox workload show scan --json
uv run flameox capture plan pyperf --workload scan \
  --parameters '{"implementation":"baseline"}' --json
uv run flameox capture run pyperf --workload scan \
  --parameters '{"implementation":"baseline"}' --json

Planning resolves every executable once. The resulting binding contains the exact invocation path, canonical target, trust decision, and file identity. Execution revalidates that binding instead of searching PATH again. Plans are short-lived, single-use capabilities whose complete intent is retained in the workspace SQLite control plane.

Experiments and analysis

uv run flameox investigations create \
  '{"question":"Does the candidate remove reverse-scan overhead?"}' --json
uv run flameox hypotheses record @hypothesis.json --json
uv run flameox experiment plan scan_comparison \
  --investigation <investigation-id> --adapter pyperf --json
uv run flameox experiment run scan_comparison \
  --investigation <investigation-id> --adapter pyperf --json

Experiments retain randomized treatment order, attempted trials, failures, cancellations, validation receipts, and exclusions. Analyses resolve all input through one pinned corpus snapshot:

uv run flameox analyze hotspots <run-or-artifact>
uv run flameox analyze scaling <experiment-id>
uv run flameox analyze compare @comparison-request.json
uv run flameox analyze memory <run-or-artifact>
uv run flameox analyze execution <run-or-artifact>
uv run flameox analyze pytorch <run-or-artifact>
uv run flameox analyze failures

Read-only analysis does not create a durable claim. Use analyze record, analyze record-comparison, or findings record when the result should become part of the investigation history.

Data and safety boundaries

.diagnostics/ contains:

  • control-plane.sqlite3 for plans, operations, runs, revisions, idempotency, and relationships;
  • content-addressed native artifacts;
  • immutable Parquet generations and corpus commits;
  • a rebuildable catalog.duckdb analytical cache.

Large evidence does not live in SQLite. Deleting catalog.duckdb does not delete evidence; flameox catalog rebuild recreates it from committed generations.

The CLI and MCP server expose bounded task-shaped operations, not shell strings, raw SQL, or arbitrary artifact bytes. Workloads may access the network unless active containment denies it. The control process performs network I/O only for explicit setup, upgrade, approved provider acquisition, or explicitly enabled symbol services—not during ordinary capture or analysis.

The trusted-local capture path records that descendant containment is not enforced. Projects that require managed containment can select it explicitly; planning refuses when the requested guarantee is unavailable.

CLI and MCP discovery

uv run flameox --help
uv run flameox mcp serve --project-root .
uv run flameox mcp inspect --project-root . --json

mcp inspect is the authoritative inventory of tool schemas, annotations, and resource templates for the installed version. See CLI and MCP boundaries for workflow and trust semantics.

Integrity and retention

uv run flameox validate
uv run flameox validate --full
uv run flameox catalog validate
uv run flameox catalog rebuild
uv run flameox recover
uv run flameox gc
uv run flameox gc --apply

Validation never repairs evidence. Garbage collection is a dry run unless --apply is supplied, and applied candidates first move to recoverable trash. Permanent purge requires a separate explicit command naming an expired trash manifest.

Documentation

Development

uv sync --extra dev
uv run ruff check src tests tools
uv run mypy src tests tools
uv run pytest -q

See the testing guide for marker and provider commands. Flameox is available under the MIT License.

Download files

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

Source Distribution

flameox-0.1.14.tar.gz (16.6 MB view details)

Uploaded Source

Built Distribution

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

flameox-0.1.14-py3-none-any.whl (676.0 kB view details)

Uploaded Python 3

File details

Details for the file flameox-0.1.14.tar.gz.

File metadata

  • Download URL: flameox-0.1.14.tar.gz
  • Upload date:
  • Size: 16.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for flameox-0.1.14.tar.gz
Algorithm Hash digest
SHA256 8d82a16c4f9fac5a3911a5e509334885b0e7f0e4e824a492b49162fc8ec7ad80
MD5 f9ed2895960dbc6b4ca04f10408f841f
BLAKE2b-256 b6ac8dca53403f98df21764a7a3ae80b8edb1a2eda85158e4b75d2253a9267c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for flameox-0.1.14.tar.gz:

Publisher: release.yml on morluto/flameox

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

File details

Details for the file flameox-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: flameox-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 676.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for flameox-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 434fa96cbbe92ac0420a4b9970d6616360dd3a80d0a9e261e359636cce6c1ccb
MD5 2c3fd08184832e59a1891962cf52e7dc
BLAKE2b-256 98b69785ffe41fb605ddf1d96aef9c2b87b52f84c0b8d2592f8db13f763539b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for flameox-0.1.14-py3-none-any.whl:

Publisher: release.yml on morluto/flameox

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

Release history Release notifications | RSS feed

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.1.15

2 files

This release

0.1.14 This release

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 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