{
  "$schema": "https://raw.githubusercontent.com/arm/topo-project-catalog/main/data/catalog.schema.json",
  "version": "v2.3.2",
  "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",
          "example": "Markus"
        }
      },
      "url": "https://github.com/Arm-Examples/topo-welcome.git",
      "ref": "0b8170eb5f163265a86a1f180eaaf5eb3a1170bb"
    },
    {
      "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",
          "example": "shakespearean english"
        },
        "PLATFORM": {
          "description": "The platform to build for. Must be either `stm32mp257` or `imx93`."
        },
        "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."
        }
      },
      "url": "https://github.com/Arm-Examples/topo-lightbulb-moment.git",
      "ref": "10b012c118f7810ca745ff53e934c61f6a3f0a27"
    },
    {
      "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- Qwen3-30B-A3B-Instruct-2507 with target-aware precision selection\n- Built-in web chat interface\n- No GPU required - pure CPU inference\n\nTopo supplies target memory; whichllm selects a precision during the build.\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": {
        "CONTEXT_LENGTH": {
          "description": "Context tokens for both memory estimation and inference (default 4096).",
          "example": "4096"
        },
        "MODEL": {
          "description": "GGUF repository; defaults to Qwen3-30B-A3B-Instruct-2507 (MoE).",
          "example": "bartowski/Qwen_Qwen3-30B-A3B-Instruct-2507-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"
          }
        },
        "TARGET_MEMORY_KIB": {
          "description": "Total target memory in KiB; populated by configure --target."
        }
      },
      "url": "https://github.com/Arm-Examples/topo-llama-web-ui.git",
      "ref": "1d6a39e59a1ea6c697cf7598065c1383462dd47f"
    },
    {
      "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"
          }
        },
        "TARGET_MEMORY_KIB": {
          "description": "Optional target memory in KiB. Omit to skip the memory check."
        }
      },
      "url": "https://github.com/Arm-Examples/topo-onnx-text-generator.git",
      "ref": "aab71180371b339db695c69ee6c3874bb3e2bd59"
    },
    {
      "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"
    },
    {
      "name": "Cairn Perception Object Detection example",
      "description": "Runs a Cairn camera-to-inference workflow and prints object detections.",
      "features": null,
      "parameters": {
        "OPK_HF_DETECTION_MODEL": {
          "description": "Hugging Face repository for the object-detection model",
          "default": "Arm/yolo26n-320-int8-onnx-raspberrypi5",
          "example": "https://huggingface.co/Arm/yolo26n-320-int8-onnx-raspberrypi5",
          "hints": {
            "meta.compatibility": "opk",
            "meta.type": "huggingface.repo-id",
            "model.format": "onnx",
            "model.task": "object-detection"
          }
        }
      },
      "url": "https://github.com/Arm-Examples/composable-ai-perception-object-detection.git",
      "ref": "6a995eaee273968864a5d59dcd3a4aa0800349dd"
    }
  ]
}
