{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Recordist (app.recordist.desktop)",
  "description": "Managed policy for Recordist, the local meeting recorder. Recordist reads these values from the Mac's managed preferences at launch and every 60 seconds. Nothing is sent to any server. Leave a key Not Configured to let people choose for themselves. Reference: https://recordist.app/docs/managed-settings.",
  "type": "object",
  "properties": {
    "OrganizationName": {
      "title": "Organisation name",
      "description": "Shown in Recordist next to every managed setting, as \"Managed by <name>\". Without it Recordist says \"your organisation\". On its own it enforces nothing.",
      "property_order": 5,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "string", "maxLength": 80 }
      ]
    },
    "ForceLocalModel": {
      "title": "Notes are written on this Mac only",
      "description": "True: cloud AI providers (Anthropic, OpenAI-compatible) are refused, and so is Ollama at any address other than 127.0.0.1 or localhost. Recordist falls back to its built-in engine. Saving API keys for cloud providers is refused too.",
      "property_order": 10,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "DisableCloudAIKeys": {
      "title": "No API keys for cloud AI providers",
      "description": "True: the Anthropic and OpenAI-compatible providers cannot be used and their API keys cannot be saved. Ollama is still allowed wherever it runs; combine with ForceLocalModel to keep notes on the Mac.",
      "property_order": 15,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "MaxRetentionDays": {
      "title": "Maximum retention, in days",
      "description": "Caps both Keep audio files and Delete meetings after. Longer choices, including Forever, become this number of days; shorter choices are kept. Starred meetings are not deleted (see recordist.app/docs/managed-settings). 0 or a negative number means no cap.",
      "property_order": 20,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "integer", "minimum": 1, "maximum": 36500, "default": 30 }
      ]
    },
    "DisableAudioExport": {
      "title": "No audio export from the app",
      "description": "True: the app's Show in Finder for meeting audio is removed and refused. Audio still plays inside Recordist. The files remain in the person's data folder (see recordist.app/docs/managed-settings).",
      "property_order": 25,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "DisableAgentRecording": {
      "title": "Agents cannot start recordings",
      "description": "True: Allow agents to start recordings is forced off. The local API, the MCP gateway and agents cannot start a recording or import audio. They can still read meetings the person has recorded.",
      "property_order": 30,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "DisableAutoRecordApps": {
      "title": "Always ask before recording",
      "description": "True: the Record without asking for list is forced empty, so the record card always asks before a detected call is recorded.",
      "property_order": 35,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "DisableAutoExport": {
      "title": "No automatic Markdown export",
      "description": "True: Auto-export Markdown after each meeting is forced off. Exporting a meeting by hand still works.",
      "property_order": 40,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "boolean", "default": true }
      ]
    },
    "AllowedExportFolder": {
      "title": "Export folder",
      "description": "Exports (by hand and automatic) are written to this folder or a folder inside it. An absolute path; ~ is the person's home folder. Relative paths and paths with .. are ignored.",
      "property_order": 45,
      "anyOf": [
        { "type": "null", "title": "Not Configured" },
        { "title": "Configured", "type": "string", "pattern": "^(/|~/|~$)" }
      ]
    }
  }
}
