{
  "$schema": "https://raw.githubusercontent.com/arm/topo-project-catalog/main/data/catalog.schema.json",
  "version": "v2.2.0",
  "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": "92caa6d7fc5f73c23c6ef09efa32f4f92d979f01"
    },
    {
      "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": "f5606d2dc7d8b03b13c294a5e9dbef4faefe6557"
    },
    {
      "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": "c04a21c89d5686c4d848f48c0bf4043daa108cbd"
    },
    {
      "name": "Image Classifier (ExecuTorch + XNNPACK)",
      "description": "An on-device evaluation harness for compatible ExecuTorch image classification\nmodels that use the XNNPACK backend and are hosted on Hugging Face. Deploy the\nProject to an Arm Target, upload images through a Gradio web interface, and\nmeasure inference results and performance. No GPU is required.\n",
      "features": null,
      "parameters": {
        "HF_ENDPOINT": {
          "description": "Hugging Face API endpoint for downloading models",
          "default": "https://huggingface.co",
          "example": "https://hf-mirror.com",
          "hints": {
            "meta.type": "huggingface.endpoint"
          }
        },
        "HF_REPO_ID": {
          "description": "Hugging Face repository containing config.yaml, metadata.yaml, and an ExecuTorch model that uses the XNNPACK backend",
          "default": "Arm/vit-base-int8-xnnpack-executorch",
          "example": "Arm/resnet-18-int8-xnnpack-executorch",
          "hints": {
            "executorch.backend": "xnnpack",
            "meta.type": "huggingface.repo-id",
            "model.format": "pte",
            "model.task": "image-classification"
          }
        }
      },
      "url": "https://github.com/Arm-Examples/topo-executorch-image-classifier.git",
      "ref": "2bee62ec5cdf41ef4f1c0bda9e2dc31000fc02a8"
    },
    {
      "name": "Text Generator (ONNX Runtime GenAI)",
      "description": "An on-device evaluation harness for Arm-optimized generative ONNX models.\nDeploy a compatible Hugging Face model to an Arm Target, generate text\nthrough a Gradio web interface, and measure time to first token and decode\nthroughput on the Target CPU. The Target does not require a GPU.\n",
      "features": null,
      "parameters": {
        "HF_ENDPOINT": {
          "description": "Hugging Face API endpoint for downloading models",
          "default": "https://huggingface.co",
          "example": "https://hf-mirror.com/",
          "hints": {
            "meta.type": "huggingface.endpoint"
          }
        },
        "HF_REPO_ID": {
          "description": "Hugging Face repository containing config.yaml and an ONNX Runtime GenAI bundle",
          "default": "Arm/qwen3-0-6b-onnx-genai-int4-kquantlast-emb-int4",
          "hints": {
            "meta.type": "huggingface.repo-id",
            "model.format": "onnx",
            "model.task": "text-generation"
          }
        }
      },
      "url": "https://github.com/Arm-Examples/topo-onnx-text-generator.git",
      "ref": "ab2bdbac3fc0bc6b777b9398f3068a411305238f"
    },
    {
      "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": "d10307c3ba7b93cc5e49ed69068e98b8465f3dcf"
    }
  ]
}
