Skip to content
Remote control for live apps

Operate your live app without waiting for another release.

One console to kill a broken feature, force a minimum version, target an in-app message, and swap remote UI — across Web, Flutter, iOS and Android. The SDK keeps enforcing its last known state offline and picks up new decisions on the next successful sync.

Create accountWatch the 60-second filmRead the docs →
Simulation · not live data
An operator toggles checkout_v2 off. Each device applies the change on its next successful sync.
Online device
checkout_v2 = ON
Offline device
checkout_v2 = ON (cached)
See CtrlApp in action

The 60-second control room

1080p · 60 sec · English narration
Video summary / transcript summary

An operator opens the CtrlApp dashboard, kills a broken checkout control, forces a minimum app version, targets an in-app message to a segment, and reviews the audit trail — all from one console, without shipping a new build.

The change reaches each device on its next successful sync. Devices already offline keep enforcing their last cached state and pick up the new decision as soon as they reconnect.

Four pillars

Everything you need to operate a live app

From incident response to engagement, CtrlApp gives your team the same day-two control surface a mature ops team would build in-house.

Incident workflow

Detect. Decide. Act. Verify. Recover.

A clear runbook for the moments that matter. No fake countdowns — real delivery is bounded by network and app foreground state.

  1. 01
    Detect

    Analytics, health signals, or a webhook surfaces a broken feature.

  2. 02
    Decide

    Pick the right lever: kill the control, block the session, or force an update.

  3. 03
    Act

    Operator toggles the change with a required audit note. Reason and diff are logged.

  4. 04
    Verify

    Devices apply the new decision on next sync. Offline devices keep enforcing the cached state and update on reconnect.

  5. 05
    Recover

    Roll back from the audit history. Previous state and reason are one click away.

See the full playbook Supported state changes are auditable and reversible from history
Engage

Reach the right users on the right device

Compose a campaign, target it by segment, locale, app version or geo, schedule it, and measure it — from the same dashboard your incident tools live in.

Campaign composer
Dashboard-managed
Type
In-app message + push fallback
Segment
app_version ≥ 3.2 · locale = ckb · country IN (IQ, TR)
Schedule
Scheduled · 14:00 UTC
Action
Open deep link: /promo/eid
TargetingSafe actionAnalytics
9:41••• 5G
YourApp
now
جەژنی پیرۆز
Tap to open the Eid promo
Inbox
2 new messages · last read 3h ago
SDKs

Drop in the SDK. Read one flag.

Sources live in this repo today — vendor via a local path or module. Public registry releases (npm, pub.dev, Maven, SPM, NuGet) are on the roadmap.

import { Ctrl } from "@ctrlapp/sdk";

const ctrl = Ctrl.init({
  apiKey: "ck_sdk_...",
  deviceId: getOrCreateDeviceId(),
});

await ctrl.register();
await ctrl.load();
ctrl.startPolling();

if (ctrl.flag("checkout_v2").isOn) {
  showNewCheckout();
} else {
  showClassicCheckout();
}
ctrl.track("checkout_v2", "impression");
Web controls docsAll SDKs & availabilityFull docs Public REST endpoints back /register, /session, /sync, /controls
Screen protection

Honest capture protection, per platform

Only OS-level primitives can actually block screenshots. Web is best-effort masking — we say so, in the product and in the docs.

PlatformWhat CtrlApp doesCoverage
AndroidFLAG_SECURE blocks OS screenshots and recent-apps thumbnails.Native only
iOSCapture masking + background snapshot overlay while the app is inactive.Native only
WebBest-effort CSS mask. Browsers cannot block OS screenshots.Web · best-effort
Pricing

Real plans, real limits

The four active plans in the platform today. Private beta — the catalog may evolve before GA, but these are the numbers the product uses right now.

Free
$0/ mo
Kill switch + flags + force update
  • 1,000 devices
  • 5,000 pushes / mo
Starter
$19/ mo
Adds allowlists and % rollouts
  • 10,000 devices
  • 50,000 pushes / mo
Pro
$49/ mo
Segments, geo, experiments, team seats
  • 10,000 devices
  • 500,000 pushes / mo
Business
$199/ mo
Ads, inbox at volume, SLA + webhooks, SSO
  • 100,000 devices
  • 5,000,000 pushes / mo
FAQ

Answers, not marketing

Operate your app like an incident room, not a release train.

CtrlApp is in private beta. Create an account and connect an SDK today.