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_qualityscript_call_graphscript_data_accessscript_semanticslayout_implementationfeature_flowworkflow_candidatebusiness_featuresecurity_mappingmigration_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:
upstreamdownstreamboth
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b10840de29f416d14711a5673ab98eb68dbfb68aae9b1a49d6b276b580cb0c4
|
|
| MD5 |
a7b8a9b342b0139b75b656ca51739037
|
|
| BLAKE2b-256 |
6bc6e241698c6bac62395818ffd707db4c75f98c4dc597ea11410392afce1e8f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52fa4b42f32cca67f90cfdef80e798a89fb0ef6bd54940f2bf03dcf1ff951e81
|
|
| MD5 |
603975c7c41f3cc100f33c4205ee3a41
|
|
| BLAKE2b-256 |
8d92473d62f61d76220e4b32789247dc6e8d81a782df1114233d2ab34c96f3c7
|