Preheat the air fryer: Set to 375°F (190°C).
If your air fryer needs warming, give it 3–5 minutes.
Mix the meatball base: In a large bowl, combine ground meat, breadcrumbs, egg, milk, garlic, grated onion, salt, pepper, cumin, and smoked paprika. Add herbs if using. Stir gently until just combined. Don’t overmix or the meatballs can turn dense.
Shape the meatballs: Form 16–18 meatballs, about 1 1/4 inches wide.
Lightly oil your hands if the mixture is sticky.
Prep the onions and peaches: Toss baby onions and peach wedges with olive oil, a pinch of salt, and pepper. Keep peaches on a separate plate for now; they cook faster.
Air fry the onions: Spray the air fryer basket with oil. Add the baby onions in a single layer.
Air fry for 8–10 minutes, shaking halfway, until lightly browned and starting to soften. Transfer to a bowl and cover loosely to keep warm.
Cook the meatballs: Spray the basket again. Arrange meatballs in a single layer with a little space between each.
Air fry at 375°F for 9–12 minutes, shaking or turning once, until browned and cooked through. Internal temp should reach 165°F for poultry or 160°F for beef/pork.
Make the chutney glaze: While the meatballs cook, stir together chutney, soy sauce, vinegar, Dijon, ginger, and hot sauce in a small saucepan over low heat. Warm until glossy and pourable, 2–3 minutes. If too thick, add 1–2 tbsp water.
Air fry the peaches: After the meatballs are done, add peach wedges to the basket.
Air fry for 3–5 minutes at 375°F until softened and lightly caramelized but still holding shape.
Glaze and toss: Add cooked meatballs and roasted baby onions to a large bowl. Pour over about two-thirds of the chutney glaze and toss gently to coat. Fold in the roasted peaches.
Add more glaze to taste.
Serve: Spoon over rice, couscous, or greens. Garnish with cilantro or parsley and a squeeze of lemon or lime. Serve extra glaze on the side.