Skip to main content

CLI-first FileMaker DDR extraction, analysis, and LLM context engine

Project description

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.

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

fm2web-0.1.0.tar.gz (92.7 kB view details)

Uploaded Source

Built Distribution

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

fm2web-0.1.0-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file fm2web-0.1.0.tar.gz.

File metadata

  • Download URL: fm2web-0.1.0.tar.gz
  • Upload date:
  • Size: 92.7 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for fm2web-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0b10840de29f416d14711a5673ab98eb68dbfb68aae9b1a49d6b276b580cb0c4
MD5 a7b8a9b342b0139b75b656ca51739037
BLAKE2b-256 6bc6e241698c6bac62395818ffd707db4c75f98c4dc597ea11410392afce1e8f

See more details on using hashes here.

File details

Details for the file fm2web-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fm2web-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for fm2web-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52fa4b42f32cca67f90cfdef80e798a89fb0ef6bd54940f2bf03dcf1ff951e81
MD5 603975c7c41f3cc100f33c4205ee3a41
BLAKE2b-256 8d92473d62f61d76220e4b32789247dc6e8d81a782df1114233d2ab34c96f3c7

See more details on using hashes here.

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