Repository navigation
Reference Capabilities
What MowDeck can do with the mowers of each provider, per model family. The page is generated from the adapters' code (ADR 0071): every provider declares a capability profile per model family, whose capabilities its own capability code computes for a representative mower, so the matrix changes with the code and is never edited by hand. A connected mower shows its exact capabilities on its own page; they can be narrower than its family's (an older firmware, a missing module, a link that is down).
| Mark | Meaning |
|---|---|
| yes | MowDeck supports it on every mower of the family. A detail after the colon shows the range or the choices of a representative model. |
| varies | Depends on the exact model, the firmware, an add-on module, a link or the setup in the vendor's app; see the family's notes. |
| not offered | The mower or its vendor's API does not offer it, so MowDeck cannot. |
| not yet | MowDeck does not support it yet for this family. |
Start, pause, resume, return to dock, emergency stop are part of every connection (ADR 0012); how a mower carries out an emergency stop differs, see the notes. Safety rules are the same for every provider: the controller refuses what a mower does not declare before the vendor is asked.
| Provider | Model families | Connection | Error lexicon | Tested on real hardware | On by default |
|---|---|---|---|---|---|
| Husqvarna Automower Connect | Automower and Gardena smart | Vendor cloud | 180 codes (de, en) | no | no |
| Mammotion | LUBA 1, LUBA 2 AWD, LUBA 2 AWD X, LUBA mini and LUBA 3, Yuka, Yuka mini | Vendor cloud, Bluetooth bridge | 663 codes (de, en), 19 unverified | yes (LUBA 2 AWD X) | yes |
| Worx Landroid, Kress, LandXcape | Landroid, Kress and LandXcape | Vendor cloud | 37 codes (de, en), 37 unverified | no | no |
Husqvarna Automower (and Gardena smart) mowers through the official Automower Connect API: state, battery, errors, GPS position on models with GPS; start for a duration or in a work area, pause, resume the schedule, park. No maps, patterns or manual driving.
- provider id
husqvarna - error lexicon: 180 codes (de, en)
- off by default (operators enable it)
- needs a developer account at the vendor
!!! note "Not tested on real hardware" Built and tested against recorded vendor data and a fake cloud only.
| Model family | Device models | Tested on real hardware |
|---|---|---|
| Automower and Gardena smart |
Husqvarna Automower (Automower Connect), Gardena smart SILENO
|
no |
| Automower and Gardena smart | |
|---|---|
| Start, pause, resume, return to dock, emergency stop | yes |
| Automower and Gardena smart | |
|---|---|
| Vendor cloud | yes |
| Bluetooth bridge | not yet |
| Local network | not offered |
| Automower and Gardena smart | |
|---|---|
| Mowing patterns on map areas | not offered |
| Job options of a start | not offered |
| Start plans (starts without map areas) | varies: now, zone, schedule |
| Return to dock and resume the job later | not yet |
| Blade height | not yet |
| Path spacing | not offered |
| Mowing speed | not offered |
| Mower follows custom paths | not offered |
| Automower and Gardena smart | |
|---|---|
| Manual driving (joystick) | not offered |
| Reverse driving | not offered |
| Blades while driving manually | not offered |
| Drive speed setting | not offered |
| Spot mowing and drive calibration | not offered |
| Leave the dock on command | not offered |
| Automower and Gardena smart | |
|---|---|
| Live camera | not offered |
| Light switch | not yet |
| RTK correction sources | not offered |
| Firmware updates | not offered |
| Base station firmware updates | not offered |
| Maintenance commands | not offered |
| Automower and Gardena smart | |
|---|---|
| Position | varies |
| Map with area geometry | not offered |
| Job progress | not yet |
| Current blade height | not yet |
| Satellites and RTK fix | not offered |
| Radio signal | not yet |
| Error codes | yes |
| Lift and tilt alarm | yes |
| Rain sensor | not yet |
| Battery cycle counter | yes |
| Firmware version | not yet |
| RTK base station state | not offered |
No family of this provider declares device settings.
- Positions only on models with GPS (the API's position capability).
- The emergency stop pauses the mower at once: the API has no hard stop.
LUBA and Yuka mowers through the Mammotion cloud (MQTT): state, maps, native jobs, camera and manual driving.
- provider id
mammotion - error lexicon: 663 codes (de, en), 19 unverified
- on by default
| Model family | Device models | Tested on real hardware |
|---|---|---|
| LUBA 1 | Luba |
no |
| LUBA 2 AWD | Luba-VS |
no |
| LUBA 2 AWD X | Luba-VP |
yes |
| LUBA mini and LUBA 3 |
Luba-MN, Luba-LD, Luba-VA, Luba-MD, Luba-LA, Luba-MB, Luba-HM, Luba-MH, Luba-ME, Luba-SP, Luba-TR, Luba-LS, Luba-MS
|
no |
| Yuka | Yuka- |
no |
| Yuka mini |
Yuka-MN, Yuka-YM, Yuka-VP, Yuka-MV, Yuka-ML, Ezy-VT, Yuka-CV, Ezy-LD, Yuka-HS
|
no |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Start, pause, resume, return to dock, emergency stop | yes | yes | yes | yes | yes | yes |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Vendor cloud | yes | yes | yes | yes | yes | yes |
| Bluetooth bridge | yes | yes | yes | yes | yes | yes |
| Local network | not offered | not offered | not offered | not offered | not offered | not offered |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Mowing patterns on map areas | yes: checkerboard, diagonal, edge_only, stripes | yes: checkerboard, diagonal, edge_only, random_angle, stripes | yes: checkerboard, diagonal, edge_only, random_angle, stripes | yes: checkerboard, diagonal, edge_only, random_angle, stripes | yes: checkerboard, diagonal, edge_only, random_angle, stripes | yes: checkerboard, diagonal, edge_only, random_angle, stripes |
| Job options of a start | varies: laps around no-go zones 0 to 4 | varies: obstacle detection (3 modes), laps around no-go zones 0 to 4, path order, start progress | varies: obstacle detection (3 modes), laps around no-go zones 0 to 4, path order, start progress | varies: laps around no-go zones 0 to 4 | varies: laps around no-go zones 0 to 4 | varies: laps around no-go zones 0 to 4 |
| Start plans (starts without map areas) | not yet | not yet | not yet | not yet | not yet | not yet |
| Return to dock and resume the job later | yes | yes | yes | yes | yes | yes |
| Blade height | varies: 30 to 70 mm | varies: 25 to 70 mm | varies: 25 to 70 mm | varies: 20 to 65 mm | varies: 55 mm | varies: 20 to 60 mm |
| Path spacing | varies: 200 to 350 mm | varies: 200 to 350 mm | varies: 200 to 350 mm | varies: 80 to 140 mm | varies: 150 to 300 mm | varies: 80 to 120 mm |
| Mowing speed | varies: 0.2 to 0.6 m/s | varies: 0.2 to 0.6 m/s | varies: 0.2 to 0.6 m/s | varies: 0.2 to 0.6 m/s | varies: 0.2 to 0.6 m/s | varies: 0.2 to 0.6 m/s |
| Mower follows custom paths | not offered | not offered | not offered | not offered | not offered | not offered |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Manual driving (joystick) | varies | varies | varies | varies | varies | varies |
| Reverse driving | varies | varies | varies | varies | varies | varies |
| Blades while driving manually | varies | varies | varies | varies | varies | varies |
| Drive speed setting | yes: 0.2 to 1.2 m/s | yes: 0.2 to 1.2 m/s | yes: 0.2 to 0.8 m/s | yes: 0.2 to 1.2 m/s | yes: 0.2 to 1.2 m/s | yes: 0.2 to 1.2 m/s |
| Spot mowing and drive calibration | varies | varies | varies | varies | varies | varies |
| Leave the dock on command | yes | yes | yes | yes | yes | yes |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Live camera | not offered | yes: over the cloud | yes: over the cloud | yes: over the cloud | yes: over the cloud | yes: over the cloud |
| Light switch | not offered | not offered | yes | yes | not offered | varies |
| RTK correction sources | yes: base station | yes: base station, network | yes: base station, network | yes: base station, network | yes: base station, network | yes: base station, network |
| Firmware updates | yes | yes | yes | yes | yes | yes |
| Base station firmware updates | varies | varies | varies | varies | varies | varies |
| Maintenance commands | yes: leave dock, relocate dock, resync rtk, sync map | yes: leave dock, relocate dock, restart mower, resync rtk, sync map | yes: leave dock, relocate dock, restart mower, resync rtk, sync map | yes: leave dock, relocate dock, restart mower, resync rtk, sync map | yes: leave dock, relocate dock, restart mower, resync rtk, sync map | yes: leave dock, relocate dock, restart mower, resync rtk, sync map |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Position | yes | yes | yes | yes | yes | yes |
| Map with area geometry | yes | yes | yes | yes | yes | yes |
| Job progress | yes | yes | yes | yes | yes | yes |
| Current blade height | yes | yes | yes | yes | yes | yes |
| Satellites and RTK fix | yes | yes | yes | yes | yes | yes |
| Radio signal | yes | yes | yes | yes | yes | yes |
| Error codes | yes | yes | yes | yes | yes | yes |
| Lift and tilt alarm | yes | yes | yes | yes | yes | yes |
| Rain sensor | not yet | varies | varies | varies | varies | varies |
| Battery cycle counter | yes | yes | yes | yes | yes | yes |
| Firmware version | yes | yes | yes | yes | yes | yes |
| RTK base station state | varies | varies | varies | varies | varies | varies |
| LUBA 1 | LUBA 2 AWD | LUBA 2 AWD X | LUBA mini and LUBA 3 | Yuka | Yuka mini | |
|---|---|---|---|---|---|---|
| Blade speed | not yet | not yet | yes | yes | not yet | yes |
| Night light | not yet | not yet | yes | yes | not yet | varies |
| Non work hours | not yet | yes | yes | yes | yes | yes |
| Rain detection | not yet | yes | yes | yes | yes | yes |
| Recharge level | not yet | varies | varies | varies | varies | varies |
| Resume level | not yet | varies | varies | varies | varies | varies |
| Side led | not yet | yes | yes | yes | yes | yes |
| Smart recharge level | not yet | varies | varies | varies | varies | varies |
| Smart resume level | not yet | varies | varies | varies | varies | varies |
| Traversal mode | not yet | yes | yes | yes | yes | yes |
| Turn style | not yet | yes | yes | yes | yes | yes |
| Voice enabled | not yet | yes | yes | yes | yes | yes |
| Voice gender | not yet | yes | yes | yes | yes | yes |
| Voice volume | not yet | yes | yes | yes | yes | yes |
| Wildlife safety | not yet | varies | varies | varies | varies | varies |
Settings no family of this provider has are not listed.
- Manual driving and spot runs need the Bluetooth bridge or the cloud drive option; reverse driving and blades while driving need the bridge.
- Blade height, speed and path spacing ranges differ per exact model; the values shown are those of one model of the family.
- Some settings and obstacle detection modes need a recent firmware.
Worx Landroid, Kress and LandXcape mowers through their shared cloud (unofficial API, push over MQTT): state, battery, errors with lift alarms, rain sensor, GPS position on models with a GPS module; start now, in a zone or along the edge, pause, send home; rain delay and cutting height where the mower has them. No maps, patterns or manual driving.
- provider id
worx - error lexicon: 37 codes (de, en), 37 unverified
- off by default (operators enable it)
!!! note "Not tested on real hardware" Built and tested against recorded vendor data and a fake cloud only.
!!! warning Unofficial API: MowDeck talks to the cloud the way the brand's app does. The vendor does not document or support this interface; it can change or stop working at any time.
!!! warning Account block risk: the vendor has temporarily blocked accounts that logged in or polled too often. MowDeck logs in once per account, lives on push updates and waits after a refused login, but cannot rule a block out. Prefer a second account the mower is shared with.
| Model family | Device models | Tested on real hardware |
|---|---|---|
| Landroid, Kress and LandXcape |
Worx Landroid, Kress, LandXcape
|
no |
| Landroid, Kress and LandXcape | |
|---|---|
| Start, pause, resume, return to dock, emergency stop | yes |
| Landroid, Kress and LandXcape | |
|---|---|
| Vendor cloud | yes |
| Bluetooth bridge | not yet |
| Local network | not yet |
| Landroid, Kress and LandXcape | |
|---|---|
| Mowing patterns on map areas | not offered |
| Job options of a start | not offered |
| Start plans (starts without map areas) | varies: now, zone (2), edge |
| Return to dock and resume the job later | not offered |
| Blade height | varies: 30 to 60 mm |
| Path spacing | not offered |
| Mowing speed | not offered |
| Mower follows custom paths | not offered |
| Landroid, Kress and LandXcape | |
|---|---|
| Manual driving (joystick) | not offered |
| Reverse driving | not offered |
| Blades while driving manually | not offered |
| Drive speed setting | not offered |
| Spot mowing and drive calibration | not offered |
| Leave the dock on command | not offered |
| Landroid, Kress and LandXcape | |
|---|---|
| Live camera | not offered |
| Light switch | not offered |
| RTK correction sources | not offered |
| Firmware updates | not offered |
| Base station firmware updates | not offered |
| Maintenance commands | not offered |
| Landroid, Kress and LandXcape | |
|---|---|
| Position | varies |
| Map with area geometry | not offered |
| Job progress | not yet |
| Current blade height | varies |
| Satellites and RTK fix | not offered |
| Radio signal | yes |
| Error codes | yes |
| Lift and tilt alarm | yes |
| Rain sensor | varies |
| Battery cycle counter | yes |
| Firmware version | yes |
| RTK base station state | not offered |
| Landroid, Kress and LandXcape | |
|---|---|
| Rain delay | varies |
Settings no family of this provider has are not listed.
- Start plans: now, the zones set up in the app (up to four) and the edge cut on mowers with the one-time schedule.
- Blade height only with the cutting height module, positions only with a GPS module, the rain delay only where the mower reports one.
- The emergency stop is an immediate pause.
A provider declares its profiles in ProviderSpec.capability_profiles (Cloud providers: adding a vendor); run uv run poe capability-matrix and commit the page. CI fails (uv run poe capability-matrix-check) when the page and the code disagree.
Mirrored from docs/reference/capabilities.md at commit 4c3787f99a906065181b05e960a83f0aca64bbe4. Edit the file in the repository, not this wiki page.
Mirrored from the docs/ directory at commit 4c3787f99a906065181b05e960a83f0aca64bbe4. Edit the files in the repository, not this wiki.
MowDeck documentation
- Home
- Phases
- Architecture
-
Decisions (ADR)
- Architecture decisions
- ADR 0001: OpenFGA instead of self-built authorization
- ADR 0002: Self-built Identity service in FastAPI instead of Keycloak or Zitadel
- ADR 0003: SvelteKit for the web app
- ADR 0004: Monorepo with a uv workspace
- ADR 0005: AGPL-3.0 for services and apps, Apache-2.0 for libraries
- ADR 0006: PostgreSQL for all persistence, no SQLite
- ADR 0007: NATS JetStream as event bus
- ADR 0008: Traefik as gateway
- ADR 0009: Command and event envelopes, subject naming and de-duplication
- ADR 0010: Python 3.13 for all services and libraries
- ADR 0011: Separate GPL-3.0 package for the PyMammotion adapter
- ADR 0012: Mower control interface and safety rules
- ADR 0013: Device-Gateway registry, sharding and per-mower concurrency
- ADR 0014: Authorization model, tuple ownership and the mowdeck-authz client
- ADR 0015: Tokens, sessions and key rotation
- ADR 0016: Fleet commands and authorization per command kind
- ADR 0017: Telemetry storage and retention
- ADR 0018: Realtime WebSocket protocol
- ADR 0019: Mammotion adapter transports, manual drive and secrets
- ADR 0020: Web app architecture
- ADR 0021: Browser authentication flow
- ADR 0022: Notifications: rules, recipients and delivery
- ADR 0023: Map rendering and projection
- ADR 0024: Scheduler: recurrence, rain pause and command issuing
- ADR 0025: Home Assistant integration as a pure API client
- ADR 0026: Manual drive channel over the Realtime WebSocket
- ADR 0027: Health history and theft alarm
- ADR 0028: Entitlements: plans as data and enforcement
- ADR 0029: Helm chart and release pipeline
- ADR 0030: Mowing patterns as plug-ins and the Planner
- ADR 0031: Billing with a Stripe adapter
- ADR 0032: Live camera over Agora, joined directly by the browser
- ADR 0033: Vision-assisted recovery with human approval
- ADR 0034: Linked cloud accounts and device discovery
- ADR 0035: Server-side camera frames and automatic AI analysis on errors
- ADR 0036: Native app shells with Capacitor, loading the web app from the server
- ADR 0037: Camera panorama calibration in the browser, with the AI supplying points only
- ADR 0038: Dual link per mower and firmware updates
- ADR 0039: Spot mowing by MowDeck-driven paths
- ADR 0040: Link heartbeat for online status
- ADR 0041: Spot runs from the dock: undock, transit and return
- ADR 0042: Drive calibration
- ADR 0043: Turn styles
- ADR 0044: Drive view with camera
- ADR 0045: Camera relay
- ADR 0046: Device settings as capabilities
- ADR 0047: The RTK base station as a Fleet device
- ADR 0048: Maintenance commands
- ADR 0049: Manual driving over the Mammotion cloud
- ADR 0050: Passkeys and the app login hand-off
- ADR 0051: Sign in with GitHub
- ADR 0052: Sign in with Apple
- ADR 0053: Retention and downsampling of the position track
- ADR 0054: Aerial photo under the mower map
- ADR 0055: Deploy maintenance window
- ADR 0056: Camera photo in push notifications for errors and theft alarms
- ADR 0057: Step-up re-authentication for critical actions
- ADR 0058: Theft tracking mode
- ADR 0059: iOS widgets and the mowing Live Activity
- ADR 0060: Apple Watch app
- ADR 0061: Mowing angle rotation
- ADR 0062: Setup tour for new users
- ADR 0063: Matter server (mowers in Apple Home and Google Home)
- ADR 0064: Personal access tokens and the public API documentation
- ADR 0065: Security center and new-login alerts
- ADR 0066: Cloud provider plugins and adapters for more vendors
- ADR 0067: Error code lexicon, provider independent
- ADR 0068: Public demo mode
- ADR 0069: Provider conformance kit and provider package template
- ADR 0070: Virtual zones for mowers without a vendor map
- ADR 0071: Capability matrix generated from the adapters
- ADR 0072: API explorer in the web app, for the public demo
-
Development
- Getting started
- Service template
- Shared libraries
- Cloud providers: adding a vendor
- Adding a provider: template and conformance kit
- Adding an error lexicon for a vendor
- Design: identity and authorization
- Design: fleet, telemetry, realtime
- Design: web app
- Web app
- Home Assistant integration
- Camera source bridge protocol
- Fuzzing and property-based tests
- GitHub wiki mirror
-
Operations
- Operating the Compose stack
- Operating MowDeck on Kubernetes (Helm)
- Building the Bluetooth bridge (ESPHome on a XIAO ESP32-S3)
- Releases
- Vendor library updates
- Billing operations
- Telemetry: retention and position downsampling
- iPhone and Android apps
- Passkeys
- Sign in with GitHub
- Aerial photo under the map
- Sign in with Apple
- Theft tracking mode
- Matter server
- Source code offer (AGPL-3.0 section 13)
- Public demo
- Spikes
-
Guides
- Guides
- ESP32 bridge: purchase and setup
- Signing in with a passkey
- Signing in with GitHub
- Error codes in plain words
- Aerial photo under the map
- Signing in with Apple
- Confirming critical actions
- Your security page
- iPhone widgets and the mowing Live Activity
- Apple Watch
- The setup tour
- Apple Home and Google Home (Matter)
- Worx Landroid, Kress and LandXcape mowers
- Scripting MowDeck
- Capability matrix
- API reference
- Original plan (German)