Skip to main content
DRIFTSTACK

Pick a profile. Start a session. Drive it your way.

The whole product in three steps — and not a line of code anywhere on this page. Five minutes here and the rest of the site reads itself.

Learn three words and everything else makes sense.

Profile

A saved iPhone identity that keeps its logins and history. Close it tonight, open it tomorrow — to a website it's the same phone coming back, not a stranger.

Session

A profile, running live — a real iPhone browser in the cloud with that identity loaded. Concurrent means sessions running at the same time — think browser tabs — and it's the one number plans are priced on.

Proxy

Your session's own internet exit. Attach one per profile and that phone browses from its own corner of the world — Amsterdam, New York, Tokyo — instead of from a data center.

Every other term on this site is one honest paragraph away in the glossary.

From nothing to a live iPhone, in minutes.

Pick an iPhone profile

Start with the default iPhone, or create your own. Make one per account, per client, or per job. Each profile remembers its logins, cookies, and history across every run — set it up once, and it stays set up.

Start a session

One click in the desktop app and a real iPhone browser opens in the cloud, ready in seconds. No hardware to buy, nothing to install, no setup wizard — the phone appears in its own window, already being the profile you picked.

Drive it your way

Tap, scroll, and type yourself, like any phone. When a task is repetitive, describe it in plain English and the built-in AI agent drives while you watch. And if your team writes code, the same sessions can be driven from it — that story lives on the QA page.

It plans in a fixed vocabulary, and you can read every step.

Describe the job in plain English and the agent turns it into a short list of actions, then runs them on the phone. The list is not free-form: the agent picks from a closed set of verbs and cannot invent new ones, so what it is about to do is always something you can read before it happens — and afterwards, in the session history.

shop.example/cart

Intents on the wire · plan-executed

  1. { "kind": "navigate", "url": "https://shop.example/cart" } Opening
  2. { "kind": "wait", "condition": "idle" } Settling
  3. { "kind": "behavioral_pause", "reading_word_count": 38 } Reading — 38 words, at this persona’s pace
  4. { "kind": "interact", "action": "tap", "selector": "#promo" } Tapping
  5. { "kind": "interact", "action": "type", "value": "SPRING", "sensitive": false } Typing
  6. { "kind": "scroll", "direction": "down", "amount_px": 600 } Scrolling
  7. { "kind": "capture", "capture": "screenshot" } Captured
Every verb above is a member of the API’s closed intent union — the agent cannot invent new ones.

The third step is the one that has no equivalent in a normal automation tool. Pausing is an action. The agent waits the way a person reading that much text would wait, at the pace set by the profile it is running as — because a real browser on a real device is only convincing if it also spends time like one.

A real profile, matched axis by axis.

A site does not ask what browser you are. It measures a dozen things and compares them. Driftstack matches those axes to a real device profile rather than randomising them, which is why the answers agree with each other — a randomised fingerprint is inconsistent in exactly the ways a detector looks for.

Device profile

iPhone 17 / iOS 18.7 / Safari 26.4

  • User agent resolving… matched
  • Canvas hash resolving… matched
  • WebGL vendor resolving… matched
  • Font stack resolving… matched
  • Time zone resolving… matched
  • Screen metrics resolving… matched
Each axis is matched to a real device profile. That is a claim about what the device is, not a promise about any particular site.

The device row above is read from the live archetype registry when this page is built, so it cannot quote a version the product stopped shipping.

A proxy that stops working says so.

Every proxy is probed and the result is kept with the time it was taken. A failure carries its reason, and a result that has aged past its window is shown as stale rather than quietly presented as current — the difference between knowing your egress works and assuming it.

Egress health4 proxies
Proxy Exit Result Last test
residential-nl-01 NL ok · 62ms just now
residential-de-04 DE ok · 88ms just now
datacenter-us-11 US ok · 141ms · stale 6h ago
residential-fr-02 FR connection refused just now
A failing proxy says why, and a result that has aged past its window says so rather than pretending to be current. Latencies shown are an example.

One window for the whole fleet.

The desktop app keeps every iPhone one click away. Here's the shape of it — each profile is a little phone card that tells you at a glance whether it's live, and where in the world it exits.

amsterdam-shopper Live
🇳🇱 NL
us-retail-qa Live
🇺🇸 US
jp-market Idle
🇯🇵 JP

Profiles live in folders — by client, by region, by job — with tags for anything folders don't cover. A green Live dot means that phone is running right now; the flag says where it exits. Click a card and the session pops out into its own floating device window, so two accounts sit side by side without sharing anything.

When a task is repetitive — check these listings, fill this form, collect these screenshots — type what you want in plain English and the built-in AI agent drives while you watch. You can take over any time, mid-task, with a click.

Try the whole loop in five minutes.

The free tier is the tour: one profile, 20-minute sessions, no card required. Pick a profile, start a session, drive it — and decide on your own terms.