An integrated workspace for multi-modal datasets, annotation, training, deployment, and AI-assisted production. In addition to the regular annotation flow, the platform now includes a full batch annotation pipeline: script ZIP upload, task orchestration, live run detail, failed-item retry, incremental execution, and result preview.
- Dataset management for images, text, and multimodal conversation data
- Annotation workbenches for detection, classification, segmentation, pose, LLM / MLLM, and DPO workflows
- Training services, currently focused on YOLO detection and classification
- Deployment services, currently focused on ONNX deployment and online inference
- AI Pipeline for resource binding, template management, and capability orchestration
- Batch annotation with tool ZIP upload, run detail, retry, incremental execution, and result preview
flowchart LR
browser[Browser] --> frontend[frontend_v2\nReact + Vite]
frontend -->|/api| server[automl_server\nFastAPI]
server --> mysql[(MySQL)]
server --> minio[(MinIO)]
server --> nacos[(Nacos)]
server <--> rabbit[(RabbitMQ)]
server -->|MQ train submit| rabbit
rabbit -->|consume| trainer[model_trainer]
trainer -->|MQ status log register| rabbit
server -->|HTTP health cancel| trainer
server -->|HTTP deploy infer| deploy[model_deploy]
deploy -->|MQ deploy status| rabbit
server -->|MQ RPC assist| rabbit
rabbit -->|RPC worker| runtime[ai_pipeline_runtime]
server -->|MQ batch execute| rabbit
rabbit -->|consume| sandbox[ai_pipeline_sandbox]
sandbox -->|MQ batch result| rabbit
| Service | Role | Docs |
|---|---|---|
frontend_v2 |
Frontend workspace for datasets, annotation, training, deployment, AI Pipeline, and batch annotation pages | README |
automl_server |
Main API and orchestration service for data, tasks, streams, and batch annotation persistence | README / ARCHITECTURE |
model_trainer |
Training service that consumes training jobs and sends status updates back | README |
model_deploy |
Deployment and inference service that manages runtime instances | README |
ai_pipeline_runtime |
AI capability runtime for image understanding, draft annotation, and white-overlay related flows | README |
ai_pipeline_sandbox |
Batch annotation script sandbox for ZIP execution, dependency install, and result callbacks | README |
model_training_runtime |
Experimental model training runtime; executes registered packages in one service with contract, data materialization, event, and result validation, and does not replace model_trainer yet |
README |
Additional example:
| Flow | Main channel | Notes |
|---|---|---|
automl_server -> model_trainer |
MQ |
Training jobs are published to trainer.task.queue |
model_trainer -> automl_server |
MQ |
Task status, task logs, and model registration are sent back over MQ |
automl_server <-> model_trainer |
HTTP |
Used only for /health probing and /tasks/{task_id}/cancel |
automl_server -> model_deploy |
HTTP |
Deploy, undeploy, deployment listing, deployment health, and inference are all direct HTTP calls |
model_deploy -> automl_server |
MQ |
Successful deploy / undeploy is synced back through model.deployed and model.undeployed |
automl_server <-> ai_pipeline_runtime |
MQ RPC |
Assist annotation and pipeline execution currently use RabbitMQ RPC rather than direct HTTP |
automl_server -> ai_pipeline_sandbox |
MQ |
Batch chunks are published through pipeline.batch.execute |
ai_pipeline_sandbox -> automl_server |
MQ |
Batch progress and results are returned through pipeline.batch.progress and pipeline.batch.result |
The codebase still defines service.heartbeat as a message type, but trainer and deploy do not actively use a standalone MQ heartbeat right now. The status shown in the UI is currently based on on-demand /health checks from automl_server.
- Tool layer: built-in scripts and uploaded ZIP script packages, with required root
batch_script.jsonand optional rootREADME.md - Management layer: tool list supports enable, disable, delete, and a detail drawer for editing name, description, and
README.md - Run layer: run detail page supports SSE live progress, event timeline, paged results, original image preview, and YOLO overlay preview
- Resume layer: continue queued runs, retry failed items only, and create incremental runs for newly added samples under the same configuration
- Execution layer:
ai_pipeline_sandboxcreates isolated work directories, virtual environments, dependency caches, and structured error logs
auto_ml/
├── frontend_v2/
├── automl_server/
├── model_trainer/
├── model_deploy/
├── ai_pipeline_runtime/
├── ai_pipeline_sandbox/
├── model_training_runtime/ # Experimental; direct in-service execution, does not replace model_trainer yet
├── mysql/
├── nacos/
├── readme/
├── docker-compose.yml
├── docker-compose.dev.yml
└── .env.example
- Docker 20.10+
- Docker Compose v2
- Node.js
^20.19.0 || >=22.12.0 - Python 3.10+
- pnpm
>=10
cp .env.example .env
docker compose up -dDefault endpoints:
- Frontend:
http://localhost:3000 - Main API:
http://localhost:45678 - Swagger UI:
http://localhost:45678/swagger-ui - Trainer:
http://localhost:8081 - Deploy:
http://localhost:8082 - AI Runtime:
http://localhost:8010 - RabbitMQ console:
http://localhost:15672 - MinIO console:
http://localhost:9010 - Nacos:
http://localhost:8848
Notes:
ai_pipeline_sandboxexposes its health endpoint on internal port8011and is not mapped to the host by default- The frontend container proxies
/apitoautoml_server
Start the core dependencies and the batch annotation sandbox first:
docker compose -f docker-compose.dev.yml up -d mysql rabbitmq minio minio-init nacos nacos-init ai-pipeline-sandboxFrontend:
cd frontend_v2
pnpm install
pnpm devMain service:
cd automl_server
pip install -r requirements.txt
python run.pyStart the other services on demand as described in their own READMEs.
- Runtime configuration is primarily driven by Nacos
AUTO_ML_CONFIG, with nacos/automl-config.yaml as the source file - Root .env.example is mainly for
docker-compose.ymlbootstrap values automl_server/.env.exampleis for standalone backend runsfrontend_v2/.env.exampleis for frontend development and builds- Batch annotation highlights:
ai-pipeline-batch.secret_key: required to encrypt and decrypt scriptsecretparametersai-pipeline-sandbox: controls timeout, memory, process count, venv paths, pip cache, and pip indexesrabbitmq: includespipeline_batch_execute,pipeline_batch_progress, andpipeline_batch_resultqueues and routing keys
- Initial schema:
mysql/init/01_init_automl.sql - Incremental migrations:
mysql/migrations/*.sql
Recent batch annotation related migrations include:
20260728_create_ai_pipeline_batch_annotation.sql20260728_add_user_batch_scripts.sql20260729_add_batch_annotation_incremental_runs.sql20260730_add_batch_script_readme.sql
This project is built on top of the following open-source projects: