A phone per user
NoMac Platform gives every user of your product their own iOS Simulator. Your backend starts a phone for a user, shows it to them, and hears when it ends.
Start a phone for your user
import { NoMacSimulator } from "@nomac/simulator";
const nomac = new NoMacSimulator(); // NOMAC_API_KEY
const phone = await nomac.phones.start({ label: user.id, reuse: true });
await phone.waitUntilReady();
const { url } = await phone.viewLink({ control: true }); // for your userMake the API key at nomac.app/keys and keep it on your server: it starts and stops phones for the whole account. Your user gets a link or a token for their own phone only.
A label per user
label is your own name for the phone, such as your user's id: up to 64 letters, digits and . _ : @ -. Everything a phone keeps belongs to its label.
- Workspace
- The user's projects and their build cache, so their next build is incremental.
- Saved states
- A signed-in app to start their next phone from.
- Phones
reuse: trueanswers the user's running phone instead of starting another, andGET /sessions?label=lists theirs.
Phones with another label never reach these, and neither does a token for another user's phone. Billing records keep the label, so use your own user id, not an email.
The rest of the platform
- Show it to your users
- Watch and control links with no sign-in, the embed, and a token for one phone.
- Webhooks and billing
- Signed events when a phone is ready and when it ends, with the label and the cost.
- Your users' data
- Tokens that are never stored, and one call that deletes a user.
Your users' agents use the phone with the tools in Run your app and tests and Read and tap the screen.
Price and limits
The phones are NoMac Simulator's, at the same price: $0.80 an hour per phone, billed per minute from the account's prepaid credit, one minute at least. Every account runs 2 phones at once.