Introducing opensource Kindwise Router Models

Open-source image router for plant, insect, crop & mushroom apps
At Kindwise, we build machine learning models that help developers understand the natural world — from identifying plants and fungi to diagnosing crop health and recognizing insects.
A common challenge our partners face is simple but important:
When a user takes a photo, how do we know which Kindwise model or API to call?
Until now, most apps solved this on the backend — usually by sending the image to several endpoints or implementing their own heuristics. That’s costly, slow, and not privacy-friendly.
So we decided to open-source the small but powerful model that solves exactly this problem.
Meet the Router
The Kindwise Router is a lightweight image classifier designed to run directly on-device.
Its job is to decide, given an input photo, which of our APIs (or products) it should be routed to — these are the classes:
It’s a small classifier that helps your app choose the right downstream model or API — before any data leaves the device.
To make integration easy across platforms, we’re releasing three router variants under the Apache 2.0 license on Hugging Face.
Each version offers a different balance of speed, accuracy, and model size — so you can pick the one that fits your device or workload.
- 🔹 router.tiny — optimized for speed and minimal footprint
≈ 3.9 MB (TorchScript) | ≈ 2.5 MB (TFLite) - 🔸 router.small — balanced accuracy vs. latency
≈ 8.4 MB (TorchScript) | ≈ 5.2 MB (TFLite) - 🔶 router.base — highest accuracy, still mobile-friendly
≈ 18 MB (TorchScript) | ≈ 11 MB (TFLite)
All models are available as PyTorch and TensorFlow Lite checkpoints, ready for use on server, mobile, or edge devices.
You can download the raw model files in the Files and versions tab on Hugging Face.
Here’s a minimal example of how you might use it in Python or on mobile:
from PIL import Image
from transformers import AutoModelForImageClassification, AutoProcessor
model = AutoModelForImageClassification.from_pretrained("kindwise/router.small")
processor = AutoProcessor.from_pretrained("kindwise/router.small")
img = Image.open("example.jpg")
inputs = processor(images=img, return_tensors="pt")
outputs = model(**inputs)
pred = outputs.logits.softmax(dim=-1)
label = model.config.id2label[pred.argmax()]
print("Suggested Kindwise service:", label)
If the router predicts "mushroom"
, you can forward the photo to Mushroom.id
.
If it predicts "human"
, you might blur or discard it locally.
Secondary use cases
Although the router’s main goal is to select the right Kindwise service, it also turns out to be useful for a few other things:
- Pre-filtering large image datasets before sending them to your APIs
- On-device privacy screening (“human” detector)
- Data triage for annotation or active learning pipelines
- Lightweight content filtering for camera traps or citizen-science projects
If you’re doing any large-scale or embedded image processing, you’ll probably find creative uses beyond routing.
Get started
- Explore the models on Hugging Face:
router.tiny • router.small • router.base - License: Apache 2.0
- Ready for: PyTorch, TensorFlow Lite, and ONNX
We hope this helps developers build faster, cheaper, and more privacy-friendly nature apps — whether you’re identifying crops, detecting plant diseases, or just routing photos to the right model.
If you build something cool with it, tag us or share feedback — we’d love to see what you make. 🌿