अवधारणा और विकासमानवरहित खेल · #bezpiLOTa · KAIROS DRONE AGENTदस्तावेज़
#bezpiLOTa→Drone Agent→API & SDK
KairOS / DRONE AGENT / 03

Integration के लिए REST, real-time data के लिए raw MAVLink WebSocket, remote relay के लिए versioned MQTT topics और drivers तथा extensions के लिए Python SDK। यहाँ KairOS के अपने interface के लक्षित ports, endpoints, permissions और examples तय किए गए हैं।

नियोजित

API और SDK KairOS के लक्षित contract के रूप में वर्णित हैं; stable version और compatibility अभी release नहीं हुए हैं।

KairOS repository ↗
08मुख्य REST endpoints
JSONREST responses
WSRaw MAVLink
KEYPermission authentication
01
REST API / :8080

आठ मुख्य endpoints

Control interface port 8080 पर सुनता है और JSON लौटाता है। अधिकतर requests में X-KairOS-Key header चाहिए। हर key का permission level होता है, इसलिए telemetry reading को flight commands, mission upload और administrative operations से अलग किया जा सकता है।

MethodEndpointData या action
GET/api/statusHealth, uptime, FC connection, भूमिका, agent version
GET/api/telemetryAttitude, GPS, battery, RC channels और flight mode
GET/api/paramsPrefix filter के साथ FC parameter cache
POST/api/commandsTakeoff, land, goto, RTL, arm और disarm
GET/api/configJSON के रूप में agent का मौजूदा configuration
PUT/api/configKeys बदलना और प्रभावित services का hot reload
GET/api/servicesनियंत्रित services के लिए running, stopped या failed
GET/api/logsService और level filters के साथ structured events
bashREST द्वारा telemetry
curl -s http://<board-ip>:8080/api/telemetry \
  -H "X-KairOS-Key: <your-key>" | jq
KairOS का लक्षित interface: संबंधित component के release के बाद ही command चलाने योग्य होगी।
jsonJSON response का उदाहरण
{
  "armed": true,
  "mode": "GUIDED",
  "battery": { "voltage": 22.4, "pct": 78 },
  "gps": { "fix": 3, "satellites": 14, "alt": 50.2 },
  "attitude": { "roll": 0.02, "pitch": -0.01, "yaw": 182.5 }
}
02
Client उदाहरण

Python से telemetry पढ़ना और command भेजना

pythonलक्षित KairOS client — flight validation तक केवल simulator के लिए
import httpx

BASE = "http://<board-ip>:8080"
headers = {"X-KairOS-Key": "<your-key>"}

telem = httpx.get(f"{BASE}/api/telemetry", headers=headers).json()
print(telem["battery"]["pct"], telem["gps"]["satellites"])

httpx.post(
    f"{BASE}/api/commands",
    headers=headers,
    json={"command": "takeoff", "params": {"alt": 10}},
)
KairOS का लक्षित interface: संबंधित component के release के बाद ही command चलाने योग्य होगी।
03
Ports और topics

एक MAVLink stream, अनेक transports

InterfacePort या topicउद्देश्य
REST:8080Status, telemetry, config, services, commands
MAVLink WebSocket:8765दोनों दिशाओं में binary MAVLink v2
WebRTC WHEP:8889स्थानीय वीडियो
स्थितिkairos/v1/agents/{agent_id}/statusRetained health और agent availability
टेलीमेट्रीkairos/v1/agents/{agent_id}/telemetryवाहन की स्थिति की stream
घटनाएँkairos/v1/agents/{agent_id}/eventsदिखने वाले events और warnings
कमांडkairos/v1/agents/{agent_id}/commandsQoS 1 के साथ agent को commands
ACKkairos/v1/agents/{agent_id}/acks/{command_id}विशिष्ट command का परिणाम
WebRTC signaling प्रक्रियाkairos/v1/agents/{agent_id}/video/webrtc/offerP2P वीडियो के लिए SDP offer

Router FC की एक stream को एक साथ अनेक consumers तक पहुँचाता है: WebSocket 8765 द्वारा browser GCS, TCP 5760 द्वारा SITL/engineering client और UDP 14550 द्वारा legacy tools। WebSocket में JSON wrapper नहीं है: wire-compatible binary MAVLink v2 frames भेजे जाते हैं।

javascriptलक्षित KairOS Browser WebSocket
const ws = new WebSocket("ws://<board-ip>:8765");
ws.binaryType = "arraybuffer";

ws.onmessage = (event) => {
  decodeMavlink(new Uint8Array(event.data));
};

ws.send(encodeCommandLong(sysid, compid, cmd, params));
KairOS का लक्षित interface: संबंधित component के release के बाद ही command चलाने योग्य होगी।
04
PYTHON SDK

Drivers और वाहन पर logic के contracts

Classउद्देश्य
CameraDriverCSI, USB UVC, IP और vendor SDK cameras
GimbalDriverPan, tilt, roll और gimbal telemetry
LidarDriverLiDAR और rangefinder devices
GpsDriverGPS/GNSS receivers
EscDriverESC drivers और return telemetry
VisionClientवाहन के vision bus से frames और detections
05
सुरक्षा

API key की permissions उसका दायरा सीमित करती हैं

स्तरक्या अनुमत है
readस्थिति बदले बिना telemetry, status, config, logs, params
commandFlight commands; read शामिल है
missionMission files का upload और execution; command शामिल है
configAgent और FC configuration बदलना; read शामिल है
adminUpdates, service restart, key management और पूर्ण access

Key को secret के रूप में रखें और public logs, screenshots या client bundle में न डालें। Browser integration में permanent admin key के बजाय short-lived scoped credential सुझाया जाता है।

MCP AI assistant interface: संवाद में mission analysis, map, telemetry, tool calls, event log और permissions।
INTERFACE / दृश्य उदाहरणCommands, access और audit का संदर्भ

Permission panel और tool-call log mission के साथ दिखते हैं। चित्र permissions को operator context से जोड़ता है; KairOS API contracts पृष्ठ के text में हैं।

06
Message integrity

Agent पर key रखे बिना MAVLink v2 signing

Ground station 32-byte key बनाकर उसे ब्राउज़र में non-extractable Web Crypto key के रूप में रखता है। Capability endpoint firmware और signing parameters की उपलब्धता जाँचता है। एक बार enrollment के बाद flight controller प्रत्येक outbound frame का HMAC-SHA256 tag जाँचता है। Agent पारदर्शी pipe रहता है और signing key नहीं रखता।

httpCapability जाँच
GET /api/mavlink/signing/capability
X-KairOS-Key: <your-key>

{
  "supported": true,
  "reason": "ok",
  "firmware_name": "ArduPilot",
  "firmware_version": "4.5.0",
  "signing_params_present": true
}
KairOS का लक्षित interface: संबंधित component के release के बाद ही command चलाने योग्य होगी।