MUXI Dart SDK
Official Dart SDK for MUXI — infrastructure for AI agents.
Highlights
- Async/await with
httppackage transport - Built-in retries, idempotency, and typed errors
- Streaming with Dart Streams for chat/audio and deploy/log tails
Need deeper usage notes? See the User Guide for streaming, retries, and auth details.
Requirements
- Dart SDK 3.0+
Installation
Add to your pubspec.yaml:
dependencies:
muxi: ^0.20260129.0
Then run:
dart pub get
Quick Start
Server Management (Control Plane)
import 'dart:io';
import 'package:muxi/muxi.dart';
void main() async {
final server = ServerClient(ServerConfig(
url: Platform.environment['MUXI_SERVER_URL']!,
keyId: Platform.environment['MUXI_KEY_ID']!,
secretKey: Platform.environment['MUXI_SECRET_KEY']!,
));
// List formations
final formations = await server.listFormations();
print(formations);
// Get server status
final status = await server.status();
print('Uptime: ${status?['uptime']}s');
server.close();
}
Formation Usage (Runtime API)
import 'dart:io';
import 'package:muxi/muxi.dart';
void main() async {
final client = FormationClient(FormationConfig(
formationId: 'my-bot',
serverUrl: Platform.environment['MUXI_SERVER_URL'],
adminKey: Platform.environment['MUXI_ADMIN_KEY'],
clientKey: Platform.environment['MUXI_CLIENT_KEY'],
));
// Chat (non-streaming)
final response = await client.chat({'message': 'Hello!'}, userId: 'user123');
print(response?['message']);
// Chat (streaming)
await for (final event in client.chatStream({'message': 'Tell me a story'}, userId: 'user123')) {
stdout.write(event.data);
}
// Health check
final health = await client.health();
print('Status: ${health?['status']}');
client.close();
}
Webhook Verification
import 'package:muxi/muxi.dart';
void handleWebhook(String payload, String? signature) {
final secret = Platform.environment['WEBHOOK_SECRET']!;
if (!Webhook.verifySignature(payload, signature, secret)) {
throw Exception('Invalid signature');
}
final event = Webhook.parse(payload);
switch (event.status) {
case 'completed':
for (final item in event.content.where((c) => c.type == 'text')) {
print(item.text);
}
break;
case 'failed':
print('Error: ${event.error?.message}');
break;
case 'awaiting_clarification':
print('Question: ${event.clarification?.question}');
break;
}
}
Error Handling
import 'package:muxi/muxi.dart';
try {
await server.getFormation('nonexistent');
} on NotFoundException catch (e) {
print('Not found: ${e.message}');
} on AuthenticationException catch (e) {
print('Auth failed: ${e.message}');
} on RateLimitException catch (e) {
print('Rate limited. Retry after: ${e.retryAfter}s');
} on MuxiException catch (e) {
print('Error: ${e.message} (${e.statusCode})');
}
License
MIT
Libraries
- muxi
- MUXI Dart SDK