Skip to main content

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

  1. Client submits request to Ctrl API
  2. Controller validates and schedules operation
  3. Compute cluster executes operation
  4. State updates streamed back to client
  5. 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

MetricValue
Device Boot Time< 30s
API Response Time< 100ms (p95)
Max Concurrent Devices1000+ per customer
Device Uptime99.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

View Pricing Details →

Getting Started

Prerequisites

  • Null Autos account
  • API key or OAuth credentials
  • SDK installed (optional)

Quick Start

  1. Install the Ctrl CLI:

    npm install -g @null-autos/ctrl-cli
    ctrl login
  2. Launch your first device:

    ctrl devices create \
    --android-version 14 \
    --profile automotive \
    --name my-first-device
  3. 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