Open-source desktop platform for ML dataset annotation, training, and collaboration
Images · Video · Time Series · Tabular Data
Download • Read the Paper • Build from Source • Cite
Annotix: An Open-Source Desktop Platform for Comprehensive Machine Learning Dataset Annotation
Published on Preprints.org (April 2026)
Universidad Austral de Chile, Campus Puerto Montt — TecMedHub
If you use Annotix in your research, please cite the paper.
Most annotation tools focus on a single data type or require cloud accounts. Annotix is different:
| Annotix | Cloud tools (CVAT, Label Studio) | Desktop tools (labelImg, LabelMe) | |
|---|---|---|---|
| Runs fully offline | Yes | No | Yes |
| Images + Video + Time Series + Tabular | Yes | Partial | No |
| Integrated ML training (19 backends) | Yes | No | No |
| P2P collaboration (no server) | Yes | Server required | No |
| Free GPU training (Colab automation) | Yes | No | No |
| Export to 11 formats | Yes | Yes | Limited |
| Cross-platform native app | Yes | Browser | Partial |
Last updated: April 2026 — v2.4.4
| Feature | Status | Notes |
|---|---|---|
| Image annotation (7 tools) | ✅ Stable | BBox, OBB, Mask, Polygon, Keypoints, Landmarks, Pan |
| Video annotation | ✅ Stable | Tracks, keyframes, interpolation, bake |
| Time series annotation | ✅ Stable | 5 annotation types, Chart.js canvas |
| Tabular ML | ✅ Stable | scikit-learn integration, column selector |
| ONNX inference | ✅ Stable | Auto-detects YOLOv5-v12, DETR, SSD, classification |
| Export (11 formats) | ✅ Stable | YOLO, COCO, VOC, CSV, U-Net, TIX, etc. |
| Import (8 formats) | ✅ Stable | Auto-detection with confidence scoring |
| Local ML training (19 backends) | ✅ Stable | Isolated Python env, GPU auto-detection |
| Cloud training (7 providers) | ✅ Stable | Vertex AI, Kaggle, Lightning AI, HuggingFace, Saturn Cloud, Colab Enterprise |
| Browser automation (Colab free) | ✅ Stable | T4 GPU, real-time progress |
| Keyboard shortcuts | ✅ Stable | Fully customizable, conflict detection |
| i18n (10 languages) | ✅ Stable | Lazy loading, English fallback |
| P2P collaboration | 🚧 Beta | Works but no auto-reconnection on network drop; last-write-wins conflict resolution; video frames excluded from sync |
| Audio annotation | 🚧 In progress | Classification, speech recognition, sound event detection, TTS recording exist; waveform UI partially wired |
| Audio export | 🚧 In progress | HuggingFace ASR, LJSpeech, CSV formats implemented; import not yet available |
| Network sharing (serve) | 🚧 In development | HTTP server to share projects via browser; web annotation UI built; not yet released |
| LLM chat via browser | 🚧 Beta | Kimi, Qwen, DeepSeek, HuggingChat; generic runner works, provider-specific modules are stubs |
| macOS build | No CI for macOS; should build from source but untested |
✅ = production-ready · 🚧 = usable but incomplete ·
Pre-built binaries for the latest release:
| Platform | Download |
|---|---|
| Windows (x64) | .exe installer | .msi |
| Linux (x64) | .AppImage |
| macOS | Build from source (see Getting Started) |
All releases: github.com/Debaq/Annotix/releases
7 tools on a high-performance Konva canvas:
| Tool | Key | Description |
|---|---|---|
| BBox | B |
Rectangular bounding box with drag & resize |
| OBB | O |
Oriented bounding box with free rotation |
| Mask | M |
Freehand painting with configurable brush and eraser |
| Polygon | P |
Point-by-point polygon with auto-close |
| Keypoints | K |
Skeleton presets (COCO, face, hand, MediaPipe) |
| Landmarks | L |
Named reference points with labels |
| Pan | H |
Canvas navigation |
Plus: mouse wheel zoom, image rotation, label/grid toggles, quick class selection (1-0, Q-P for up to 20 classes), undo/redo with 100-step history.
- Images — Object detection, oriented detection, semantic/instance segmentation, keypoints, landmarks, single & multi-label classification
- Video — Frame extraction (FFmpeg), tracks with keyframes, linear interpolation, bake to per-frame annotations
- Time Series — Univariate & multivariate CSV, 5 annotation types (point, range, classification, event, anomaly)
- Tabular — Built-in editor with column selection and scikit-learn training
Train models directly from the app with real-time metrics charts.
Full backend list
| Backend | Models |
|---|---|
| YOLO (Ultralytics) | YOLOv8, v9, v10, v11, v12 |
| RT-DETR (Ultralytics) | RT-DETR-l, RT-DETR-x |
| RF-DETR (Roboflow) | RF-DETR-base, RF-DETR-large |
| MMDetection (OpenMMLab) | 30+ architectures (Faster R-CNN, DINO, Co-DETR, etc.) |
| Backend | Models |
|---|---|
| SMP | U-Net, DeepLabV3+, FPN, PSPNet, etc. |
| HuggingFace Segmentation | SegFormer, Mask2Former, etc. |
| MMSegmentation | Full OpenMMLab catalog |
| Backend | Models |
|---|---|
| Detectron2 (Meta) | Mask R-CNN, Cascade R-CNN, etc. |
| Backend | Models |
|---|---|
| MMPose | HRNet, ViTPose, RTMPose, etc. |
| Backend | Models |
|---|---|
| MMRotate | Oriented R-CNN, RoI Transformer, etc. |
| Backend | Models |
|---|---|
| timm | 700+ models (ResNet, EfficientNet, ViT, ConvNeXt, etc.) |
| HuggingFace Classification | ViT, BEiT, DeiT, Swin, etc. |
| Backend | Task |
|---|---|
| tsai | Classification, regression, forecasting |
| PyTorch Forecasting | TFT, N-BEATS, etc. |
| PyOD | Anomaly detection |
| tslearn | Temporal clustering |
| PyPOTS | Missing value imputation |
| STUMPY | Matrix Profile (motif/pattern discovery) |
| Backend | Task |
|---|---|
| scikit-learn | RandomForest, SVM, kNN, GradientBoosting, etc. |
4 execution modes:
| Mode | Description |
|---|---|
| Local | Isolated Python env via micromamba, GPU auto-detection (CUDA / MPS) |
| Download Package | ZIP with script + data for external execution |
| Cloud | Vertex AI, Kaggle, Lightning AI, HuggingFace, Saturn Cloud |
| Browser Automation | Free T4 GPU on Google Colab via CDP automation |
6 training presets: small_objects, industrial, traffic, edge_mobile, medical, aerial.
Model export: PyTorch .pt, ONNX, TorchScript, TFLite, CoreML, TensorRT.
Real-time collaborative annotation powered by Iroh (QUIC). No central server.
- Host or join with a session code
- Roles: LeadResearcher (full control) / Annotator / DataCurator (configurable permissions)
- Image locking with 3-min TTL, batch assignment, CRDT sync
- Peer list with online status
Train on Google Colab for free (T4 GPU) via Chrome DevTools Protocol:
- Auto-detects Chromium browsers, uploads dataset, runs training
- Real-time progress with pause / resume / cancel
Query LLMs without API keys through the user's browser: Kimi, Qwen, DeepSeek, HuggingChat.
11 export formats: YOLO Detection, YOLO Segmentation, COCO JSON, Pascal VOC, CSV (Detection/Classification/Keypoints/Landmarks), Folders by Class, U-Net Masks, TIX (native).
8 import formats with automatic detection: YOLO, COCO, Pascal VOC, CSV (4 variants), U-Net Masks, Folders by Class, TIX.
All shortcuts are fully customizable from Settings with per-context conflict detection.
Default shortcuts
| Shortcut | Action |
|---|---|
B |
Bounding Box |
O |
OBB |
M |
Mask |
P |
Polygon |
K |
Keypoints |
L |
Landmarks |
H |
Pan |
[ / ] |
Decrease / Increase brush size |
E |
Toggle eraser |
A / D |
Rotate image |
Enter |
Confirm |
Esc |
Cancel |
| Shortcut | Action |
|---|---|
Left / Right |
Previous / Next image |
Ctrl++ / Ctrl+- |
Zoom in / out |
Ctrl+0 |
Zoom to fit |
| Shortcut | Action |
|---|---|
Ctrl+S |
Save |
Ctrl+Z / Ctrl+Y |
Undo / Redo |
Del |
Delete selection |
| Keys | Classes |
|---|---|
1 - 0 |
Classes 1 to 10 |
Q - P |
Classes 11 to 20 |
| Shortcut | Action |
|---|---|
T |
New track |
Left / Right |
Previous / Next frame |
| Shortcut | Action |
|---|---|
V |
Select |
P |
Point |
R |
Range |
E |
Event |
A |
Anomaly |
10 languages with lazy loading and English fallback:
de Deutsch · en English · es Espanol · fr Francais · it Italiano · ja Japanese · ko Korean · pt Portugues · ru Russian · zh Chinese
+-----------------------------------------------------+
| Frontend |
| React 19 + TypeScript + Tailwind + shadcn/ui |
| Konva (canvas) . Chart.js (metrics) . i18next |
| Zustand (state) . React Router 7 |
+-----------------------------------------------------+
| Tauri 2 IPC |
| 137+ registered commands |
+-----------------------------------------------------+
| Backend (Rust) |
| +------------+ +-----------+ +-----------------+ |
| | Store | | Commands | | Export/Import | |
| | (JSON+RAM) | | (16 mod) | | (11+8 formats) | |
| +------------+ +-----------+ +-----------------+ |
| +------------+ +-----------+ +-----------------+ |
| | Training | | Browser | | P2P (Iroh) | |
| | (19 backs) | | Automat. | | QUIC mesh | |
| +------------+ +-----------+ +-----------------+ |
+-----------------------------------------------------+
| External Integrations |
| Python (micromamba) . FFmpeg . Chromium CDP |
| Cloud APIs . Iroh P2P network |
+-----------------------------------------------------+
All data stored as JSON + raw assets on disk. No database.
~/.local/share/annotix/config.json -> global configuration
{projects_dir}/{uuid}/project.json -> project (metadata + classes + annotations)
{projects_dir}/{uuid}/images/ -> original images
{projects_dir}/{uuid}/thumbnails/ -> generated thumbnails
{projects_dir}/{uuid}/videos/ -> video files
{projects_dir}/{uuid}/models/ -> trained models
In-memory cache with dirty-flag tracking, atomic writes (.tmp + rename).
Frontend
| Technology | Version | Purpose |
|---|---|---|
| React | 19 | UI framework |
| TypeScript | 5.7 | Static typing |
| Vite | 6 | Bundler and dev server |
| Tailwind CSS | 3.4 | Utility-first styling |
| shadcn/ui | — | Component library (Radix UI) |
| Zustand | 5 | Global state with persistence |
| React Router | 7 | SPA routing |
| Konva | 10 | 2D annotation canvas |
| Chart.js | 4 | Metrics visualization |
| i18next | 24 | Internationalization |
Backend (Rust)
| Crate | Version | Purpose |
|---|---|---|
| tauri | 2 | Desktop application framework |
| serde / serde_json | 1 | JSON serialization |
| image | 0.25 | Image processing |
| ffmpeg-the-third | 4 | Video frame extraction |
| zip | 2 | Export/import packaging |
| quick-xml | 0.37 | Pascal VOC XML |
| csv | 1.3 | CSV import/export |
| reqwest | 0.12 | HTTP client (cloud providers) |
| headless_chrome | 1.0 | Browser automation (CDP) |
| iroh | 0.96 | P2P networking (QUIC) |
| tokio | 1 | Async runtime |
| blake3 | 1 | Hashing |
Python (via micromamba)
| Package | Purpose |
|---|---|
| ultralytics | YOLO, RT-DETR |
| rfdetr | RF-DETR |
| mmdet, mmseg, mmpose, mmrotate | OpenMMLab suite |
| segmentation-models-pytorch | Semantic segmentation |
| timm | Classification (700+ models) |
| detectron2 | Instance segmentation |
| tsai, pytorch-forecasting | Time series deep learning |
| pyod, tslearn, pypots, stumpy | Time series classical ML |
| scikit-learn | Tabular ML |
- OS: Windows 10+, macOS 12+, Linux (glibc 2.31+)
- RAM: 4 GB minimum, 8 GB recommended
- Disk: ~500 MB for the app + space for datasets
- GPU (optional): NVIDIA with CUDA or Apple Silicon with MPS for accelerated training
- FFmpeg: required for video annotation (bundled in release builds)
- Chromium browser (optional): for browser automation (Chrome, Brave, Edge)
- Node.js >= 18
- Rust >= 1.89
- Tauri 2 prerequisites for your platform
git clone https://github.com/Debaq/Annotix.git
cd Annotix
npm install
npm run tauri:dev # development (hot-reload)
npm run tauri:build # production build| Script | Description |
|---|---|
npm run dev |
Frontend only (Vite dev server) |
npm run build |
Build frontend (TypeScript check + Vite) |
npm run tauri:dev |
Full dev (frontend + Rust backend) |
npm run tauri:build |
Production build with installers |
npm run lint |
ESLint with zero warnings policy |
annotix/
├── src/ # React frontend
│ ├── App.tsx # Router and providers
│ ├── lib/
│ │ ├── db.ts # Type definitions (mirrors Rust structs)
│ │ ├── tauriDb.ts # Centralized Tauri invoke bridge
│ │ └── i18n.ts # i18next configuration
│ ├── components/ui/ # shadcn/ui components
│ └── features/
│ ├── canvas/ # Annotation canvas (7 tools)
│ ├── video/ # Video annotation
│ ├── timeseries/ # Time series annotation
│ ├── tabular/ # Tabular data editor
│ ├── training/ # ML training panel
│ ├── export/ # 11 export formats
│ ├── import/ # 8 import formats
│ ├── inference/ # Model inference
│ ├── p2p/ # P2P collaboration
│ ├── browser-automation/ # Chrome automation
│ └── settings/ # App settings
├── src-tauri/ # Rust backend
│ └── src/
│ ├── lib.rs # 137+ Tauri command registrations
│ ├── store/ # Storage layer (state, IO, cache)
│ ├── commands/ # 16 command modules
│ ├── export/ # Export format modules
│ ├── import/ # Import + auto-detector
│ ├── training/ # Multi-backend ML pipeline
│ ├── browser_automation/ # Headless Chrome
│ ├── p2p/ # Iroh P2P networking
│ └── inference/ # ONNX inference
└── public/locales/ # 10 language files
If you use Annotix in your research, please cite:
@article{annotix2026,
title = {Annotix: An Open-Source Desktop Platform for Comprehensive Machine Learning Dataset Annotation},
year = {2026},
publisher = {Preprints.org},
url = {https://www.preprints.org/manuscript/202604.0919}
}Full paper: https://www.preprints.org/manuscript/202604.0919
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
MIT License — TecMedHub, Universidad Austral de Chile, Campus Puerto Montt.
