{
  "schema_version": 1,
  "docs_version": "1.1.0",
  "entrypoint": "/llms.txt",
  "recipes": [
    {
      "id": "existing-ai",
      "guide": "/install/external-ai",
      "markdown_guide": "/install/external-ai.md",
      "bundle_id": "dicto-reference",
      "platform": "linux/amd64",
      "required_inputs": [
        "DICTO_HOST",
        "ACME_EMAIL",
        "DB_PASSWORD",
        "AUTH_SECRET",
        "STORAGE_ACCESS_KEY_ID",
        "STORAGE_SECRET_ACCESS_KEY",
        "ADMIN_EMAIL",
        "ADMIN_PASSWORD",
        "CHAT_BASE_URL",
        "CHAT_API_KEY",
        "TRANSCRIPTION_BASE_URL",
        "TRANSCRIPTION_API_KEY",
        "provider_model_ids",
        "registry_pull_access"
      ],
      "input_files": [
        "secrets.env",
        "server/server.yaml",
        "app-management/public.env",
        "config/app.yaml"
      ],
      "steps": [
        {
          "id": "prerequisites",
          "action": "Read requirements and choose a new isolated installation; obtain DNS/TLS and registry access"
        },
        {
          "id": "download",
          "action": "Verify archive checksum and checksums.sha256 before editing files"
        },
        {
          "id": "configure",
          "action": "Supply secrets and hostnames and replace provider_model IDs with provider-supported values"
        },
        {
          "id": "compose",
          "command": "docker compose --env-file secrets.env config --quiet",
          "expected": "exit 0"
        },
        {
          "id": "config",
          "command": "docker compose --env-file secrets.env run --rm --no-deps migrator validate-config --resolve-env",
          "expected": "exit 0; does not test connections"
        },
        {
          "id": "initialize",
          "command": "docker compose --env-file secrets.env up --build -d",
          "expected": "storage-init and migrator exit 0; long-lived services running"
        },
        {
          "id": "verify",
          "action": "Verify HTTPS discovery and management sign-in; record and play back audio; verify transcription and configured chat"
        },
        {
          "id": "finish-bootstrap",
          "action": "Disable seed.admin.enabled and recreate API/jobs"
        }
      ],
      "validation": {
        "status": "configuration-checked",
        "gpu_inference": "external-dependency",
        "fresh_product_end_to_end": "operator-required"
      }
    },
    {
      "id": "self-hosted-ai",
      "guide": "/install/self-hosted-ai",
      "markdown_guide": "/install/self-hosted-ai.md",
      "bundle_id": "dicto-reference",
      "platform": "linux/amd64-with-NVIDIA",
      "required_inputs": [
        "DICTO_HOST",
        "ACME_EMAIL",
        "DB_PASSWORD",
        "AUTH_SECRET",
        "STORAGE_ACCESS_KEY_ID",
        "STORAGE_SECRET_ACCESS_KEY",
        "ADMIN_EMAIL",
        "ADMIN_PASSWORD",
        "INFERENCE_API_KEY",
        "CHAT_API_KEY",
        "TRANSCRIPTION_API_KEY",
        "registry_pull_access",
        "compatible_GPU_capacity",
        "model_access"
      ],
      "optional_inputs": [
        "HF_TOKEN"
      ],
      "input_files": [
        "secrets.env",
        "server/server.yaml",
        "app-management/public.env",
        "config/app.yaml",
        "transcription/compose.yaml",
        "llm/compose.yaml",
        "llm-server/models.json"
      ],
      "compose_prefix": "docker compose --env-file secrets.env -f compose.yaml -f transcription/compose.yaml -f llm/compose.yaml --profile self-hosted-ai",
      "steps": [
        {
          "id": "prerequisites",
          "action": "Verify NVIDIA runtime and selected devices; obtain image/model access and DNS/TLS"
        },
        {
          "id": "download",
          "action": "Verify archive and member checksums before editing"
        },
        {
          "id": "configure",
          "action": "Replace all placeholders; align hostnames and inference keys; verify GPU IDs and budgets"
        },
        {
          "id": "compose",
          "action": "Run config --quiet with the full compose_prefix",
          "expected": "exit 0"
        },
        {
          "id": "inference",
          "action": "Start Whisper and GPT-OSS and gateway with full prefix; wait for model loading"
        },
        {
          "id": "check-inference",
          "action": "Test real audio transcription and text generation through authenticated gateway",
          "expected": "non-empty text and assistant output"
        },
        {
          "id": "config",
          "action": "Run migrator validate-config --resolve-env using full prefix",
          "expected": "exit 0"
        },
        {
          "id": "initialize",
          "action": "Run up --build -d with full prefix",
          "expected": "successful bucket initialization/migrations and running API/jobs"
        },
        {
          "id": "verify",
          "action": "Verify management sign-in and client recording/playback/transcription and separate chat prompt"
        },
        {
          "id": "finish-bootstrap",
          "action": "Disable seeder and recreate API/jobs with full prefix"
        }
      ],
      "validation": {
        "status": "configuration-checked",
        "gpu_inference": "operator-required-not-run-in-docs-build",
        "fresh_product_end_to_end": "operator-required"
      }
    }
  ],
  "bundles": [
    {
      "id": "dicto-reference",
      "url": "/downloads/dicto-reference-setup-1.1.0.zip",
      "sha256": "328c1669860d5eca5bed31c1c59f11e7a298e09d32fa80cd9e645877ec3659a7",
      "files_url": "/examples/reference/",
      "files": {
        "versions.yaml": "f8d909fa9a94e3a9578fe74f401974fc23a849b905363352c71158727da2345f",
        "llm-server/models.json": "7ead86c91493bc2bff210131105e86f3d4a96910e481209a63b32f5a24fc3b28",
        "proxy/README.md": "23f7e3da6fc46b955f9283ea85d2e1ab87a35b035c2eafb349806956afe36b44",
        "README.md": "7e03086715a3da5cd552a8637c14e27dbacbdefbc070b940cb435a01fee85779",
        "app-management/public.env": "35a406fd4d09b634f45e4a2c10a40c56a7db596d39e4c0f8ff825f6786b0cd93",
        "compose.yaml": "8a104903562cb5e064a9278682e557457965f750389d339293253da242ae401f",
        "server/server.yaml": "9a615b9a5e2a624e18369d84774aca4a2ebfe93fe14888f068f8873f76ee4b12",
        "secrets.env.example": "4e23331d26e9dccdc836e832fb5719e5656729d5a6b2557115b7898882ad7def",
        "monitoring/prometheus.yaml": "d406c2cb5f59b422a723cc91533fc22dc4571e6dd1b119e03382357d627a38ef",
        "monitoring/compose.yaml": "5176ce16e5ba3825ecd20794a0d8d7c5d0a144bf48741baf394b36322ccb6df9",
        "transcription/compose.yaml": "1617554a4fcd410dbbd9a803aeb21df5af84e3a2d4d028714cdb9195d19425cc",
        "transcription/Dockerfile": "fb2dc4b26b18a0780ba978ccc41aef29018f903b0a67c1dd5d514d884e84d2e6",
        "config/app.yaml": "08802bda73320487eb9de9f9c74c11640afe8d6c26421595fb758b09fb249be4",
        "llm/compose.yaml": "2f87e5313876581e1b0c16e26ff83838077ef9464faa980469ae48350055008e",
        "database/Dockerfile": "e69f1b7f7e2fc22eb4beadde6b0444c7089c47bcc52b1af5c0645ba17f2b19c2",
        "checks/README.md": "fe43b5335bded2244c7d5dc6c4ad471acfe1c460263f479bb876d875811abdc5",
        "schemas/server.schema.json": "fc63aae34a430f5ae39c5915e67a7a615b8f58f8e6856fc2f73363df741c4303",
        "schemas/app.schema.json": "6e658cdd1e3507b709ca7eacc8461ba69266a540f7e15cab5563a8ea58de56ac",
        "schemas/export-manifest.json": "f0257bbb9aacd732c4a4333e46cddc1c776b80882b9ed63019117795b80a8431",
        "checksums.sha256": "a38b5ed3397420028eb185eeab837ef4ee78e69377a9f1c3b196d9f555906ba1"
      }
    }
  ]
}
