Skip to main content

FM2Web

FM2Web is a CLI-first FileMaker DDR extraction, analysis, and LLM-context engine.

It turns FileMaker DDR XML exports into a local SQLite knowledge store containing normalized entities, relationships, evidence, retrieval chunks, and deterministic analysis findings. FM2Web does not call an internal LLM. Instead, it gives external agents and LLM tools grounded commands for retrieval, inspection, tracing, evidence lookup, and context-pack creation.

Install with uv

Install from PyPI:

uv tool install fm2web

Confirm the command is on your PATH:

fm2web --version
fm2web --help

Upgrade later with:

uv tool upgrade fm2web

If uv is not installed yet:

curl -LsSf https://astral.sh/uv/install.sh | sh

Quick start

Extract a single DDR XML file:

fm2web extract \
  --ddr /path/to/FileMaker_DDR.xml \
  --project clean-sweep

Extract a multi-file DDR directory containing Summary.xml:

fm2web extract \
  --ddr /path/to/DDR-directory \
  --project clean-sweep

Run deterministic analysis:

fm2web analyse --project clean-sweep --refresh

analyse is canonical Canadian spelling. analyze is also available as an alias.

Ask for an LLM-ready context pack without calling an internal LLM:

fm2web ask \
  --project clean-sweep \
  "How does invoice creation work? Cite evidence." \
  --json

Core commands

extract

Parses FileMaker DDR XML and writes normalized facts into SQLite.

Supported inputs:

  • single DDR XML report
  • Summary.xml
  • directory containing Summary.xml

Extracted domains include:

  • schema tables and fields
  • relationship graph/table occurrences
  • scripts and script steps
  • script-call relationships
  • layouts, layout objects, buttons, field references
  • button-to-script activations
  • custom functions
  • value lists
  • accounts and privilege sets
  • evidence records
  • retrieval chunks and FTS index

analyse / analyze

Writes deterministic findings over the extracted facts.

Current finding layers include:

  • schema_quality
  • script_call_graph
  • script_data_access
  • script_semantics
  • layout_implementation
  • feature_flow
  • workflow_candidate
  • business_feature
  • security_mapping
  • migration_risk

Semantic analysis uses extracted script-step entities to classify action, intent, mutation, control-flow, integration, and UI/reporting behavior. These semantics roll up into layout feature flows and business feature findings.

retrieve

Returns citation-bearing context chunks for a query:

fm2web retrieve --project clean-sweep "square foot quoting" --json

ask

Builds an LLM-ready context packet and answer contract. FM2Web does not answer internally:

fm2web ask --project clean-sweep "How does square foot quoting work?" --json

findings

Lists persisted analysis findings with explicit pagination:

fm2web findings \
  --project clean-sweep \
  --type business_feature \
  --limit 50 \
  --offset 0 \
  --json

Analysis writes complete persisted findings. Output volume controls belong to read commands like findings --limit/--offset, not to the analyser.

inspect

Inspects exact stored facts:

fm2web inspect schema --project clean-sweep --table Contacts --json
fm2web inspect script --project clean-sweep --name "Save Invoice" --json
fm2web inspect layout --project clean-sweep --name "Invoice Detail" --json
fm2web inspect security --project clean-sweep --json
fm2web inspect entity --project clean-sweep --name Contacts --json

trace

Traverses dependencies and impacts in the stored relationship graph:

fm2web trace \
  --project clean-sweep \
  --entity script:clean-sweep:save-invoice \
  --direction both \
  --depth 3 \
  --json

Directions:

  • upstream
  • downstream
  • both

evidence

Dereferences raw evidence by ID:

fm2web evidence --project clean-sweep --id evidence:abc123 --json

export context

Writes a reusable Markdown context pack:

fm2web export context \
  --project clean-sweep \
  --question "How does invoicing work?" \
  --out invoicing-context.md

doctor

Checks local readiness:

fm2web doctor --json

Store location

By default FM2Web uses project-local state under:

.fm2web/fm2web.sqlite

Override with:

fm2web extract --store /path/to/fm2web.sqlite --ddr /path/to/ddr.xml --project clean-sweep

Use the same --store path for follow-up commands.

Optional extras

Install optional vector dependencies:

uv tool install 'fm2web[vector]'

Install optional Qdrant dependencies:

uv tool install 'fm2web[qdrant]'

SQLite/FTS works without these extras.

Development

From a source checkout:

uv sync --extra dev
uv run pytest
uv run fm2web --help

Build locally:

uv build

License

Proprietary.

Metadata

Release files for fm2web 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 fm2web 0.1.0
File Size Uploaded Provenance
fm2web-0.1.0.tar.gz 92.7 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 129.3 kB

Release files / fm2web-0.1.0.tar.gz

Download URL fm2web-0.1.0.tar.gz
Size 92.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0b10840de29f416d14711a5673ab98eb68dbfb68aae9b1a49d6b276b580cb0c4
BLAKE2b-256 checksum
How to use checksums
6bc6e241698c6bac62395818ffd707db4c75f98c4dc597ea11410392afce1e8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL fm2web-0.1.0-py3-none-any.whl
Size 36.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
52fa4b42f32cca67f90cfdef80e798a89fb0ef6bd54940f2bf03dcf1ff951e81
BLAKE2b-256 checksum
How to use checksums
8d92473d62f61d76220e4b32789247dc6e8d81a782df1114233d2ab34c96f3c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for fm2web 0.1.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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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