crabpilot.dev
BlogPricing
Open Source

Cross-platform GCS
for ArduPilot, PX4, CrabPilot.

Cross-platform GCS for ArduPilot, PX4, and CrabPilot. Mission planning, real-time telemetry, firmware flashing, MAVLink inspector, offline maps. Native Tauri 2 on Windows, macOS, Linux.

CrabStation

Dashboard preview coming soon
Autopilot compatibility

Flies with your stack.

One GCS, three autopilots. ArduPilot, PX4, and CrabPilot share the same Vehicle abstraction — switch autopilots without switching apps.

ArduPilot

ArduPilot — 4.5+
Shipping

Copter, Plane, Rover, Sub, VTOL. ArduPilot 4.5+ tested in CI against every release.

Full parameter editor

Mission Planner-style waypoint UI

DataFlash log viewer

PX4

PX4 — 1.14+
Shipping

Copter, Plane, VTOL, Rover. PX4 1.14+ on the same Vehicle abstraction.

MAVLink v2 wire

Calibration wizards

Multi-vehicle ready

CrabPilot

Our Rust autopilot
Beta

Our Rust autopilot. Parameter metadata bundled, identifies on heartbeat.

Same plan files as ArduPilot

Native firmware flash

End-to-end Rust stack

Capabilities

Mission planning, telemetry, MAVLink inspector, offline maps, firmware flash, log viewer.

From pre-flight planning to post-flight analysis — all in a native Tauri 2 app with no cloud dependency.

Mission planning

Waypoints, surveys, corridor scans, polygon fences. Drag-and-drop reorder.

Real-time telemetry

20 Hz attitude and position, 4 Hz battery and sensors. Hardware-accelerated Mapbox.

MAVLink inspector

Every message, decoded, with rate and size statistics.

Offline maps

Download regions ahead of the flight. SQLite tile cache, local tile server.

Firmware flash

ArduPilot, PX4, CrabPilot binaries. USB and bootloader detection.

DataFlash log viewer

Open, plot, export. Works on .bin and .tlog.

Architecture

How it works

Typed IPC from React down to MAVLink wire. No hand-typed invoke strings — everything is generated from Rust.

Stack

1

React + MUI frontend

Mapbox + Zustand
2

tauri-specta typed IPC

commands + events generated from Rust
3

Rust backend

mavlink::connection_manager + crablink::Vehicle
4

MAVLink

Serial · TCP · UDP

Connect a vehicle

All commands and events are generated from Rust via tauri-specta. The TypeScript caller is fully typed — no magic strings.

import { commands, events } from './bindings';

// Connect to a vehicle over UDP
await commands.connectUdp({ port: 14550 });

// Listen for heartbeat events
const unlisten = await events.heartbeatEvent.listen((ev) => {
  console.log('System', ev.payload.systemId, 'alive');
});

// Arm and take off
await commands.armDisarm({ arm: true });
await commands.takeoff({ altitudeM: 10.0 });

// Cleanup
unlisten();
Use cases

Who flies with CrabStation

Hobby workshop

Connect a CubeOrange over USB, flash firmware, fly. No cloud account, no telemetry.

Field operations

Take offline maps to the site. Pre-build the mission, walk through the survey, hit start.

Research and teaching

Wire up a custom autopilot, inspect every MAVLink message, replay logs.

Open source

Open source. MIT licensed.

CrabStation is free to use, fork, and extend. The entire GCS stack — Rust backend, React frontend, and Tauri bridge — lives in the same public repo as the autopilot.

Native Tauri 2 app for Windows / macOS / Linux

Mobile in development (iOS, Android)

No telemetry, no account, no cloud

Full source on GitLab

Per-subsystem reference docs in the repo