- UploadError struct to distinguish fatal auth errors from network errors
- Clear buffer and throttle on 401/403 to save bandwidth
- Prevent dead-loop retry when token is invalid or expired
- Go main process: stream ingestor, infer client, event uploader,
heartbeat, config agent, OTA agent
- Python inference server rewritten to use CANN ACL (acl module)
replacing ultralytics/PyTorch; supports YOLOv8 raw and YOLOv10
NMS-free output formats via OUTPUT_FORMAT env var
- systemd services for edge-agent and edge-infer
- build/install/package scripts targeting arm64
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>