{
  "$schema": "https://raw.githubusercontent.com/arm/topo-project-catalog/main/data/catalog.schema.json",
  "version": "v2.0.1",
  "projects": [
    {
      "name": "Hello World",
      "description": "A minimal \"Hello, World\" web app for validating a Topo setup and deployment.\nIt runs a single service that exposes a web page on the target,\nwith the greeting text customizable via the GREETING_NAME parameter.\n",
      "features": null,
      "parameters": {
        "GREETING_NAME": {
          "description": "The text to use in the greeting message",
          "required": true,
          "default": "World",
          "example": "Markus"
        }
      },
      "url": "https://github.com/Arm-Examples/topo-welcome.git",
      "ref": "8303e66db59a7a11e64877121f3db1b688d2011f"
    },
    {
      "name": "Lightbulb Moment",
      "description": "Reads a switch over GPIO pins on an M class cpu, reports switch state over Remoteproc Message, then a web application on the A class reads this and displays a lightbulb in either the on or off state. The lightbulb state is described by an LLM in any user-specified style.",
      "features": [
        "remoteproc-runtime"
      ],
      "parameters": {
        "LLM_PROMPT_PRESET": {
          "description": "The writing style for the LLM to use when generating messages about the light bulb state. Can be any style description (e.g., \"shakespearean english\", \"pirate\", \"haiku\", \"detective noir\").\n",
          "required": true,
          "default": "shakespearean english",
          "example": "shakespearean english"
        },
        "PLATFORM": {
          "description": "The platform to build for. Must be either `stm32mp257` or `imx93`.",
          "required": true
        },
        "REMOTEPROC": {
          "description": "The remoteproc device to use. Must be `m33` if the stm32 board is used, or `imx-rproc` if the imx93 board is used.",
          "required": true
        }
      },
      "url": "https://github.com/Arm-Examples/topo-lightbulb-moment.git",
      "ref": "c2b2e4a672cda67832372f77aeb1d1f71beee9a7"
    },
    {
      "name": "Topo llama.cpp WebUI Chat",
      "description": "LLM chat application with Arm CPU inference provided by llama.cpp.\n\nThis project demonstrates running large language models on CPU\nwith inference provided by the llama.cpp server.\n\nThe upstream Linux Arm64 image includes architecture-specific CPU\nbackend variants for Armv8.0 baseline, Armv8.2 dot product/FP16/SVE,\nArmv8.6 int8 matrix multiply/SVE2, and Armv9.2 SME-capable CPUs.\n\nThe stack includes:\n- llama.cpp\n- Quantized SmolLM2 135M default model loaded through llama.cpp\n- Built-in web chat interface\n- No GPU required - pure CPU inference\n\nPerfect for demos and testing! The default SmolLM2-135M-Instruct model\ngives the project a small ready-to-use model reference by default.\n\nIdeal for testing LLM workloads on Arm hardware without GPU dependencies\nwhile avoiding a source build during Topo Project deployment.\n",
      "features": null,
      "parameters": {
        "MODEL": {
          "description": "Model artifact reference. Must be one of: \n- Hugging Face GGUF repo ID (e.g. `unsloth/SmolLM2-135M-Instruct-GGUF`)\n- Hugging Face GGUF repo ID with quantization (e.g. `unsloth/SmolLM2-135M-Instruct-GGUF:Q4_K_M`)\n- URL to GGUF file (e.g. `https://huggingface.co/unsloth/SmolLM2-135M-Instruct-GGUF/resolve/main/SmolLM2-135M-Instruct-Q4_K_M.gguf`)\n",
          "default": "unsloth/SmolLM2-135M-Instruct-GGUF",
          "hints": {
            "meta.type": [
              "huggingface.repo-id"
            ],
            "model.format": "gguf",
            "model.task": "text-generation"
          }
        },
        "MODEL_ENDPOINT": {
          "description": "Hugging Face API compatible endpoint for downloading models",
          "default": "https://huggingface.co",
          "example": "https://hf-mirror.com",
          "hints": {
            "meta.type": "huggingface.endpoint"
          }
        }
      },
      "url": "https://github.com/Arm-Examples/topo-llama-web-ui.git",
      "ref": "9ef51579218733d97707f23c68189b2c4042e129"
    },
    {
      "name": "SIMD Visual Benchmark",
      "description": "Visual demonstration of SIMD performance benefits on Arm processors.\nCompare scalar (no SIMD), NEON (128-bit), and SVE (scalable vector)\nimplementations running identical image processing workloads side-by-side.\n\nThis demo shows real hardware acceleration through three C++ services\ncompiled with different architecture flags, processing the same box blur\nalgorithm on images. Performance differences are measured in real-time\nand displayed in an interactive web dashboard.\n\nPerfect for demonstrating to non-technical audiences the concrete benefits\nof SIMD optimizations, with visual results and quantified speedups.\n",
      "features": [
        "SVE"
      ],
      "parameters": {
        "PROCESSOR_CLIENT_TIMEOUT_S": {
          "description": "HTTP timeout in seconds that the dashboard uses when contacting the\nprocessor services. Increase when running very large workloads.\n",
          "default": "30"
        }
      },
      "url": "https://github.com/Arm-Examples/topo-simd-visual-benchmark.git",
      "ref": "f0cd31621ce79b4643df7e9bdd8eff26c20b338c"
    }
  ]
}
