Argus is MulticomIOT's aerial plant & cannabis detection console. You fly a field with the DJI Matrice 4T, the imagery is analysed, and every finding - especially cannabis - is routed to a human for verification before it counts. The platform then tracks it on a map, alerts the right people, and produces compliance-grade reports.
Open the console URL, enter your operator name and passphrase. Sessions last 12 hours. If you fail the passphrase too many times the account is locked briefly - that is the brute-force protection, wait a few minutes.
Top-right sun/moon button cycles Auto → Light → Dark. Auto follows your device. Your choice is remembered.
What you can see and do depends on your role - see Roles below.
An admin assigns each person a role on the Team page. Higher roles include everything below them.
| Role | Can do |
|---|---|
| viewer | Read dashboards, the map, alerts and reports. |
| operator | + Log flights and manage field data. |
| reviewer | + Approve / reject review items; claim tasks. |
| manager | + Assign work, manage sites & devices, generate/schedule reports, see the team & audit log. |
| admin | + Full user management and settings. |
Every login, review decision, assignment and user change is written to the append-only Audit Log - the chain-of-custody a regulator expects.
End to end, a mission flows like this:
| # | Step | Where |
|---|---|---|
| 1 | Plan the survey grid (altitude/overlap for your target detail). | argus mission / your DJI app |
| 2 | Fly the field nadir (straight down) with the Matrice 4T. | Field |
| 3 | Media uploads to storage automatically as you capture. | Field uploader (RC Plus / laptop) |
| 4 | Your imagery is tiled, scanned, placed on the map and turned into a report. | Automatic / argus agent |
| 5 | Cannabis + low-confidence hits are routed to review. | Review Queue |
| 6 | A reviewer verifies each one (Approve / Reject). | Review Queue / My Tasks |
| 7 | Confirmed cannabis and change vs last flight raise alerts. | Alert Center |
| 8 | Findings appear on the map and in the trends. | Live Map / Trends |
| 9 | A compliance report is generated (or auto-scheduled). | Reports |
Your home: counts of runs, pending review, open and critical alerts, and the list of field runs. Click a run to open its detailed dashboard.
Georeferenced detections on satellite imagery, coloured by class (cannabis stands out). Pick a Field, switch View to Timeline to step through flights with the slider, and tick Compare vs previous to see what is new, removed or persistent between two flights.
The heart of the platform. Every cannabis call and every low-confidence detection lands here. Reviewers Approve or Reject. Managers assign items to people; reviewers can Claim an unassigned item. Filter tabs: All / Assigned to me / Unassigned.
Just the items assigned to you, with one-click Approve/Reject. Deciding an item clears it from your list.
Register the fields/blocks you monitor - client, region, crop type, licence number. Used for reports and to organise work.
Your Matrice 4T flight log, plus edge inference devices (Jetson) with live status, telemetry (GPU temp, disk, model version, detections) and their API keys. See Fleet & heartbeat below.
Detections by class across flights, the cannabis trend, and a per-field flight-to-flight change table (new / removed / persistent).
Every operational alert, severity-coded, with acknowledge. See Alerts below.
Generate compliance / per-field / period reports, and schedule recurring ones that auto-email and archive. See Reports below.
(Managers/Admins) Manage operators and roles; read the append-only audit trail.
Fly nadir at 25–40 m for fine detail, 80/70 overlap,
in even light. Full capture settings are in the Data Collection Protocol
(docs/DATA_COLLECTION_PROTOCOL.md).
Run the field uploader so photos/videos push to storage during the flight:
ingest/rc-plus-termux.md (Termux + rclone).argus ingest --source <album> --field F1 --watch.ingest/spaces-scoped-key.md) - never your master key.Register a device on Drones & Edge → Register edge device; it gets an API key (click show). Run the heartbeat agent on the Jetson so the console knows it is alive and healthy:
python -m argus.cli heartbeat --url https://your-console --key <KEY> --interval 30edge/.The console shows live status (online/offline), last-seen, and telemetry: GPU
temp, disk, memory, model version, and detections processed, with a GPU-temp
sparkline. If a device stops checking in it flips offline and raises an alert;
a hot GPU or full disk also alert. Tune the windows with EDGE_* env vars.
The bell (top bar) shows unread alerts. Open the Alert Center to acknowledge them. What fires:
| Alert | Severity | Meaning |
|---|---|---|
| Cannabis confirmed | critical | A reviewer approved a cannabis detection. |
| New cannabis (change) | critical | Cannabis appeared vs the previous flight - a possible new grow. |
| Cannabis candidate | warning | Cannabis is waiting in the review queue. |
| Review backlog high | warning | Too many items pending - assign reviewers. |
| Edge device offline / hot / disk full | warning | A field device needs attention. |
| Report ready | info | A scheduled report was generated/emailed/archived. |
| Backup failed | critical | The system of record was not backed up - fix immediately. |
Alerts always show in-app; set ALERT_CHANNELS + credentials to also push
to email / WhatsApp / Telegram / Slack.
On Reports (managers), generate three kinds:
Each opens in a new tab (print to PDF). Add a Schedule to auto-generate on a cadence - it emails recipients (SMTP) and archives a copy to your Spaces bucket. Run now fires one immediately.
When a field is flown again, the platform compares the two flights and labels each detection added (new), removed (gone), or persistent (still there). New cannabis triggers a critical alert. See it visually on the Live Map (Compare vs previous) and summarised on Trends & Change. This is how you spot a new grow between surveys and how you confirm a cleared site stayed cleared.
Detection accuracy is earned with data, not assumed. The honest state: until a model is trained on real, labelled Ghanaian field imagery and validated, cannabis detection is unproven - which is exactly why human review is mandatory.
The path, once you have imagery:
| Step | How |
|---|---|
| Collect | Fly per docs/DATA_COLLECTION_PROTOCOL.md (stages, sites, oversample cannabis). |
| Label | Auto-label then human-verify per docs/LABELING_PROTOCOL.md; agronomist signs off cannabis. |
| Split | Leakage-free spatial split (hold out whole fields). |
| Train | argus train --data dataset.yaml (GPU droplet). |
| Validate | argus evaluate --preds preds.json --gt gt.json → report + model card. |
| Sign off | Model passes acceptance gates; card + human sign-off recorded (docs/MODEL_VALIDATION_PLAN.md). |
(Admins) The platform runs from Docker on a droplet behind Caddy. Key
.env settings and the full runbook are in deploy/README.md.
The essentials:
PORTAL_USER/PORTAL_PASSWORD; add the team on the Team page.SITE_ADDRESS, then PORTAL_SECURE_COOKIE=1 and PORTAL_FORCE_HTTPS=1.SPACES_* so the DB + review queue snapshot off-site automatically. Do not skip this./healthz, and set HEALTHCHECK_PING_URL so downtime is noticed.MAPBOX_TOKEN for the satellite basemap.| Symptom | Fix |
|---|---|
| Locked out at login | Too many wrong tries - wait ~5 minutes, then use the correct passphrase. An admin can reset it on the Team page. |
| Map is blank / 'add token' | The console has no MAPBOX_TOKEN set, or there are no georeferenced detections yet. Add the token; fly a mapped (nadir+GPS) mission. |
| No detections on the map | The run had no GPS/georeferencing, or it hasn't finished processing. Confirm the mission was nadir with GPS. |
| Alerts not arriving by email/WhatsApp | In-app always works; external channels need ALERT_CHANNELS + the channel credentials in .env. Check the Alert Center's channel line. |
| Device shows offline | The heartbeat agent isn't running or lost network. Restart it (systemd) and check the device key matches. |
| 'Backup OFF' warning | Set the SPACES_* keys so the system of record is protected off-site. |
| Report email didn't send | SMTP not configured, or recipients empty. Fill the SMTP_* block; 'Run now' to test. |
| Cross-origin request blocked | A security protection - use the console directly, not embedded in another site. |
| Term | Meaning |
|---|---|
| Nadir | Camera pointing straight down (−90°) - the angle used for mapping. |
| GSD | Ground sample distance - cm per pixel. Lower = more detail. |
| Orthomosaic | A single stitched, geometrically-corrected map image from many photos. |
| Georeferenced | Each detection has a real-world lon/lat. |
| RTK / PPK | Centimetre-accurate GPS correction - needed for enforcement-grade coordinates. |
| Precision | Of the things flagged cannabis, how many really were (few false accusations). |
| Recall | Of the real cannabis, how much was found (few misses). |
| mAP@0.5 | Mean average precision - overall detection quality across classes. |
| Chain-of-custody | The audit record of who verified what and when. |
| Edge device | A field computer (Jetson) that can run detection near the drone. |
Still stuck? Contact MulticomIOT support:
deploy/README.md (ops), ingest/,
edge/README.md, and the docs/ protocols (collection, labeling, validation)./healthz and /health show system status.When reporting an issue, include what page you were on, what you clicked,
what you expected, and anything from the Alert Center or /health.
Developed by MulticomIOT.