adt.json

adt.json is the project manifest. It contains the manifest version, FileMaker file targets, Web Viewer app bindings, and an optional project standards pack.

Copy
{
  "version": 1,
  "standards": {
    "pack": "acme-filemaker-standards",
    "enabled": {
      "advisory.md": false
    }
  },
  "files": {
    "Inventory": {
      "target": "fmnet://filemaker.example.com/Inventory",
      "username": "adt-developer"
    },
    "Sandbox": {
      "target": "files/Sandbox.fmp12"
    }
  },
  "apps": {
    "inventory-dashboard": {
      "path": "webviewer-apps/inventory-dashboard",
      "file": "Inventory"
    }
  }
}

Top-level keys

Key Type Required Description
version 1 Yes Manifest schema version. The current and only supported value is 1.
files Record<string, FileEntry> Yes FileMaker files known to the project, keyed by the name used elsewhere in the manifest. An empty project uses {}.
apps Record<string, AppEntry> Yes Web Viewer apps in the project, keyed by app name. An empty project uses {}.
standards StandardsEntry No Project-specific FileMaker standards. Omit this key to use the global defaults without a project standards pack.

files

Each key in files identifies one FileMaker file. A key cannot be empty or contain /.

Copy
{
  "files": {
    "Inventory": {
      "target": "fmnet://filemaker.example.com/Inventory",
      "username": "adt-developer"
    }
  }
}
Key Type Required Description
target string Yes An fmnet://<host>/<FileName> address or a path to a local .fmp12 file.
username string No FileMaker account name associated with this target. It cannot be empty.

An fmnet:// target names a file hosted by FileMaker Pro or FileMaker Server. Its file name does not include the .fmp12 extension.

A relative local target is resolved from the directory that contains adt.json. An absolute local path is also valid. A path beginning with ~ is invalid because ADT does not expand it.

username is an account name, not a credential. Passwords and tokens are not valid manifest fields.

The FileMaker Pro Agent Access port is not a manifest field either. It belongs to the machine and that copy of FileMaker Pro, not to the project, so ADT reads a custom port from the FM_DEV_SERVER_PORT environment variable and otherwise uses 19080. Keep the variable in your shell profile or coding agent host's environment configuration; it does not travel with adt.json. See System Requirements.

apps

Each key in apps is an app name. Names use lowercase alphanumeric characters plus -, _, ., and ~; npm-style scoped names are also valid.

Copy
{
  "apps": {
    "inventory-dashboard": {
      "path": "webviewer-apps/inventory-dashboard",
      "file": "Inventory"
    }
  }
}
Key Type Required Description
path string Yes Path to the app directory, relative to the project root.
file string Yes Key of the FileMaker file in the top-level files object that this app deploys to.

standards

The optional standards object declares a project-specific standards pack. Without this object, the coding-agent plugin applies its global default standards.

Copy
{
  "standards": {
    "pack": "acme-filemaker-standards",
    "enabled": {
      "naming.md": true,
      "patterns.md": true,
      "advisory.md": false,
      "checks.json": true
    }
  }
}
Key Type Required Description
pack string Yes Name declared by the standards pack's META.json. The value cannot be empty.
enabled Record<string, boolean> No Per-file switches for the pack. A missing key is enabled.

The recognized standard files are naming.md, patterns.md, advisory.md, and checks.json. The map also accepts additional file names so a standards pack can define files introduced by a newer ADT version.

Validation and serialization

The manifest must contain one JSON object. ADT rejects an unsupported version, invalid key type, invalid app name, empty username, or malformed entry.

ADT serializes standards, files, and apps in that order. File and app names are sorted. Empty standards.enabled objects are omitted, as are missing usernames. Fields outside the documented schema are not preserved when ADT rewrites the manifest.