Ctrl Platform
The Ctrl platform is Null Autos' orchestration and management layer for virtual Android devices. It provides the control plane for launching, managing, and automating device operations at scale.
What is Ctrl?
Ctrl is a cloud-native platform that:
- Orchestrates virtual device lifecycle
- Schedules resources across compute clusters
- Monitors device health and performance
- Provides APIs for automation and integration
- Manages multi-tenant isolation and security
Key Features
Device Lifecycle Management
- Instant Provisioning: Launch devices in under 30 seconds
- State Management: Persistent device states and snapshots
- Auto-scaling: Dynamically scale based on demand
- Health Checks: Automatic monitoring and recovery
API-First Design
Complete programmatic control via REST and WebSocket APIs:
// Launch a device
const device = await ctrl.devices.create({
androidVersion: '14.0',
deviceType: 'automotive',
profile: 'ivi-1080p',
});
// Interact with device
await device.execute('adb shell input tap 500 500');
// Clean up
await device.delete();
Resource Management
- Intelligent Scheduling: Optimal device placement
- Resource Quotas: Per-user and per-organization limits
- Cost Optimization: Automatic resource cleanup
- Performance Tuning: Dynamic resource allocation
Multi-Tenancy
- Isolated Environments: Complete customer isolation
- RBAC: Fine-grained access control
- Usage Tracking: Per-device and per-user metrics
- Billing Integration: Usage-based billing support
Architecture
Components
┌─────────────────────────────────────┐
│ Ctrl API Gateway │
│ REST API │ WebSocket │ gRPC │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Ctrl Controller │
│ Scheduler │ State Manager │ Events │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Compute Clusters │
│ Device Runners │ Storage │ Network │
└──────────────────────────────────────┘
Data Flow
- Client submits request to Ctrl API
- Controller validates and schedules operation
- Compute cluster executes operation
- State updates streamed back to client
- Metrics and logs collected for monitoring
Use Cases
Automated Testing
Run automated test suites on virtual devices:
import ctrl
# Create test environment
devices = []
for config in test_configs:
device = ctrl.create_device(config)
devices.append(device)
# Run tests in parallel
results = await run_tests_parallel(devices)
# Cleanup
for device in devices:
await device.terminate()
CI/CD Integration
Integrate Ctrl into your CI/CD pipeline:
# .gitlab-ci.yml
test:
script:
- ctrl devices create --config automotive.json
- ./run-tests.sh
- ctrl devices delete --all
Device Farms
Build custom device farms with Ctrl:
- Multi-device test orchestration
- Parallel test execution
- Device pooling and reuse
- Custom device profiles
Performance
| Metric | Value |
|---|---|
| Device Boot Time | < 30s |
| API Response Time | < 100ms (p95) |
| Max Concurrent Devices | 1000+ per customer |
| Device Uptime | 99.9% SLA |
| State Snapshot Time | < 5s |
Security
- Encrypted Communication: TLS 1.3 for all API calls
- API Authentication: OAuth 2.0 and API keys
- Network Isolation: Per-customer VPCs
- Audit Logging: Complete audit trail
Pricing
Ctrl pricing is based on:
- Device Hours: Pay only for active devices
- Storage: Persistent device storage
- Data Transfer: Network egress
- API Calls: High-volume API usage
Getting Started
Prerequisites
- Null Autos account
- API key or OAuth credentials
- SDK installed (optional)
Quick Start
-
Install the Ctrl CLI:
npm install -g @null-autos/ctrl-cli
ctrl login -
Launch your first device:
ctrl devices create \
--android-version 14 \
--profile automotive \
--name my-first-device -
Connect and interact:
ctrl devices connect my-first-device
adb shell input text "Hello World"
SDK Support
JavaScript/TypeScript
npm install @null-autos/ctrl-sdk
import { CtrlClient } from '@null-autos/ctrl-sdk';
const ctrl = new CtrlClient({
apiKey: process.env.CTRL_API_KEY,
});
const device = await ctrl.devices.create({
androidVersion: '14.0',
deviceType: 'automotive',
});
Python
pip install null-autos-ctrl
from null_autos import CtrlClient
ctrl = CtrlClient(api_key=os.environ['CTRL_API_KEY'])
device = ctrl.devices.create(
android_version='14.0',
device_type='automotive'
)
API Reference
Complete API documentation:
Support
- Documentation: docs.null.autos
- Status Page: status.null.autos
- Support Email: support@null.autos
- Community Forum: community.null.autos