Self-hosted image annotation with SAM3-assisted segmentation and BYOM inference.
AnnotateANU pairs a React/Konva canvas with a FastAPI core for projects, tasks, and exports. The supported setup is the Docker dev stack (web + API Core + SAM3 + worker + Postgres + Redis).
Get Started · Docs · API Docs · Report Bug
AnnotateANU is a full-stack image annotation platform for computer vision datasets. It includes a SAM3 inference service, a core API for workflow and data management, and a React/Konva UI for annotation, exploration, and exports.
- Annotation canvas with rectangle, polygon, and point tools, selection, vertex editing, zoom/pan, undo/redo, and shortcuts.
- SAM3 text and bbox prompts with single, auto-apply, and batch modes plus auto-detect helpers.
- Projects, tasks, and jobs with assignment, status tracking, approvals, and train/val/test splits.
- File share browser with uploads, shared image registry, project image pools, and tag/category metadata.
- Explore view with a virtualized gallery, filters, bulk tagging, and analytics panels.
- Analytics panels: Dataset statistics, annotation analysis, spatial heatmaps, and image quality metrics with multi-select filtering.
- Image quality metrics: Background processing for sharpness, brightness, contrast, uniqueness with real-time progress tracking.
- Exports: server-side datasets (COCO JSON, manifest CSV, image folders) plus local COCO/YOLO export from the annotation app.
- BYOM registry with inference proxy, plus admin user management and role-based auth.
| Demo | GIF | Description |
|---|---|---|
| Landing | ![]() |
Marketing landing and onboarding |
| Annotation workflow | ![]() |
Prompt, mask, edit, and export in the canvas |
Note: Replace placeholder GIFs above with actual recordings. See GIF Recording Guide for details.
| Feature | AnnotateANU | CVAT | FiftyOne | Encord | Roboflow |
|---|---|---|---|---|---|
| Self-Hosted | ✅ | ✅ | ✅ | ❌ | |
| SAM3 Integration | ✅ Native | ✅ | ❌ | ✅ | ✅ |
| Text Prompts | ✅ | ❌ | ❌ | ✅ | ✅ |
| BYOM Support | ✅ | ❌ | ❌ | ||
| Tri-State Tag Filters | ✅ | ❌ | ❌ | ||
| Histogram Filtering | ✅ | ❌ | ✅* | ✅ | |
| Quality Metrics | ✅ | ❌ | ✅ | ❌ | |
| Model Source Tracking | ✅ | ❌ | ✅ | ❌ | |
| Polygon Simplification | ✅ | ❌ | ❌ | ❌ | ❌ |
*Requires Python code
- 🎯 Tri-State Tag Filtering: Include, exclude, or ignore tags with AND/OR logic—unique to AnnotateANU
- 📊 Integrated Analytics: Built-in histograms, heatmaps, and quality metrics without code
- 🤖 BYOM Registry: Register and use your own inference endpoints alongside SAM3
- ⚡ Real-time Confidence Filtering: Slider-based annotation filtering by confidence score
- 🔧 Polygon Simplification: Reduce polygon complexity for better performance
flowchart LR
user["Annotator"] --> web["Web UI (React + Vite)"]
web --> core["API Core (FastAPI)"]
core --> db[(PostgreSQL)]
core --> redis[(Redis)]
core --> share["File Share /data/share"]
core --> exports["Export Storage /data/exports"]
core --> worker["API Core Worker (Celery)"]
worker --> exports
core --> proxy["Inference Proxy"]
proxy --> sam3["SAM3 Inference API"]
sam3 --> model["SAM3 Model (HF Transformers)"]
proxy -.-> byom["BYOM Endpoints"]
Diagram source: docs/architecture/system-overview.mmd.
| Service | Responsibility | Port |
|---|---|---|
| Web app | Annotation UI, dashboards, explore, exports | 5173 |
| API Core | Auth, projects, tasks, jobs, model registry, exports | 8001 |
| SAM3 Inference API | Text, bbox, batch segmentation | 8000 |
| API Core Worker | Export jobs and background tasks | - |
| PostgreSQL | Core data store | 5432 |
| Redis | Cache and task queue | - |
- Docker + Docker Compose
- HuggingFace token for
facebook/sam3(model access is gated)
cp apps/api-inference/.env.example apps/api-inference/.env
cp apps/api-core/.env.example apps/api-core/.env
cp apps/web/.env.example apps/web/.envAdd your HuggingFace token in apps/api-inference/.env:
HF_TOKEN=hf_your_token_heremake docker-upServices:
- Web: http://localhost:5173
- SAM3 API docs: http://localhost:8000/docs
- API Core docs: http://localhost:8001/docs
# SAM3 inference
make backend-install
make backend-run
# API core
make core-install
make core-run
# Web app
make frontend-install
make frontend-devapps/api-inference/.envHF_TOKEN(required)SAM3_MODEL_NAME,SAM3_DEVICE(auto,cpu,cuda)MAX_IMAGE_SIZE_MB,MAX_BATCH_SIZE,MAX_IMAGE_DIMENSION
apps/api-core/.envDATABASE_URL,DATABASE_URL_SYNCREDIS_URLSAM3_API_URLJWT_SECRET_KEY
apps/web/.envVITE_SAM3_API_URLVITE_CORE_API_URLVITE_ENV
- SAM3 Inference API: http://localhost:8000/docs
- API Core: http://localhost:8001/docs










