› cavi-ai/
GitHub ↗

State and files

App state#

The app keeps its records in ~/Library/Application Support/mlx-workbench. JSON stores replace their files atomically. Workflow, verification and comparison archives use transactional SQLite records. Stores refuse a symbolic link in place of the file.

History loads and saves run in the background. The toolbar shows workflow history progress; conversion and verification wait for their required state to be saved before proceeding. Usage stamps and Watch state also load and save in the background. Usage updates retain the last serving timestamp when a later verification or comparison records use. Failed writes preserve the saved file. Current usage observations remain available until quit, with a warning in Overview and Reclaim when they could not be saved.

FileHolds
model-workflows.json.sqliteConversion workflows and their lifecycle state
verification-reports.json.sqliteQuality gate verdicts
comparison-runs.json.sqliteNative comparison runs, indexed history entries, prompt snapshots, samples and quality reviews
hosted-comparison-runs.json.sqliteHosted comparison runs, captured conditions and submitted workflow evidence
prompt-sets.jsonSaved prompt sets
serving-profiles.jsonSaved serving profiles and their verification
endpoint-fleet.jsonAlways-on endpoints and their memory policies
recommendation-preferences.jsonPreferred model per use case
usage-stamps.jsonWhen each model was last served, verified or benchmarked
wiring-transactions.jsonClient wiring transactions, with the backup locations used for rollback
source-cleanup.jsonOriginal sources moved to the Trash after verification, with restore metadata
watch-state.json, watch-alerts.jsonWatch baselines, alerts, snooze and mute state
workflow-evidence.jsonImported workflow reports
FolderHolds
comparison-outputs/<run-id>/Comparison inputs and outputs; the 10 newest media runs keep their files
prompt-set-inputs/<uuid>/Input files owned by saved prompt sets
runtimes/<manifest-sha256>/Prepared bundled engine sources and their explicitly installed Python environment; existing versions are retained

Existing model-workflows.json, verification-reports.json, comparison-runs.json and hosted-comparison-runs.json arrays migrate once into their SQLite archives. Migration validates every record in one transaction and leaves the original JSON files untouched as backups. Later edits use the archives; editing a backup does not update current history. Preserve the archives when backing up or moving app state.

endpoint-config.json from earlier releases is migrated once into endpoint-fleet.json and then only read.

Other locations#

LocationHoldsOwner
~/.config/mlx-workbench/config.jsonConfiguration; see ConfigurationApp
<quarantine_dir>/quarantine-ledger.jsonlQuarantine and Trash historyApp
~/Library/Application Support/mlx-agent/labExperiment database and artifactsEngine
~/Library/LaunchAgents/ai.cavi.mlxworkbench.endpoint.plistOptional endpoint login itemApp
~/.cache/mlx-agent/strataOptional Strata runtimeEngine

Conversion jobs, their queue, serving processes and training runs leave receipts in the engine's own state; the app reads them and never treats its own records as the authority on what is running.

Earlier queue files#

Before the engine owned the conversion queue, Workbench kept convert-queue.json beside its configuration or under $XDG_STATE_HOME/mlx-workbench (default ~/.local/state/mlx-workbench). Those files remain explicit import sources in Activity. Stop the former server before importing; the source and an exact backup are preserved.

Model files#

The app never moves model files on its own. Conversions write to the output directory. Deletion, quarantine, Trash and source cleanup happen only through their reviewed actions in Library and Reclaim.