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.0.1.tar.gz (35.8 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.0.1-py3-none-any.whl (33.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fm2web-0.0.1.tar.gz
  • Upload date:
  • Size: 35.8 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.0.1.tar.gz
Algorithm Hash digest
SHA256 39e749d65a2d0db40f4a4d3bdab6e52def52da0e89eaf4e8f9f7818dfbd3cc9c
MD5 06aefb42f3004a6baabb9e992ee2a425
BLAKE2b-256 78d95aac1ab8a47300a4622ce934e1b3292b7eb5b23185ba18bb450f76d3b1d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fm2web-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 33.4 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.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6831ac8c0ca3460ea427897407667ed809cb83689ee05452b1e47dece786b4c9
MD5 45ab491d7e504bed287b80cbecaafccd
BLAKE2b-256 7204097a94e86a9861fc5ffc3e576ab430088fdd906f5574765b0d2d757ddfee

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