Skip to content

What Sim2Bot counts

Sim2Bot has separate usage channels, and this page lists their fields. The anonymous aggregate receiver is separately prepared; optional dashboard measurement is enabled only in explicitly configured deployments. If something is not on this page, Sim2Bot does not send it.

1. Anonymous counts

Sent once when you close the tab, so we can see what is slow or breaking. There is no identifier of any kind — no account, no visitor id, no session id — and nothing is stored on your device to produce it. Two sessions from the same person cannot be told apart, and neither can two people.

Field What it is Possible values
app_opened the app started a count
robot_loaded a robot was loaded a count
first_command_sent a robot was commanded for the first time in the session a count
bridge_connected the Python bridge connected a count
scene_saved a scene was saved a count
operation_failed something failed a count
errors which kinds of failure invalid_input, compile_failed, network_unavailable, permission_denied, quota_exceeded, timeout, unknown
first_robot_visible how long the first robot took to appear 0-999, 1000-1999, 2000-3999, 4000-7999, 8000+ milliseconds
browser_family which browser Chrome, Edge, Firefox, Safari, Other
os_family which system Windows, macOS, Linux, Android, iOS, Other
app_version, build which Sim2Bot build you ran the version string

A complete example — this is the whole message:

{
  "app_version": "1.4.0",
  "build": "9f2c1ab · 2026-09-16T08:12:04Z",
  "browser_family": "Chrome",
  "os_family": "macOS",
  "events": { "app_opened": 1, "robot_loaded": 2, "scene_saved": 1 },
  "errors": { "compile_failed": 1 },
  "first_robot_visible": "1000-1999"
}

Never included: anything from your scene (names, objects, positions, files), your account, your IP address in anything that is stored, page addresses, share links, precise timings, or free text of any kind. The server adds the date and adds your counts to a daily total, so no record of a single visit exists.

2. Optional product analytics

Off until you choose Allow analytics, and you can withdraw that at any time in Privacy settings inside the app. It records the same kinds of activity in more detail — for example that a loaded robot was an arm with seven joints, or that a save went to the cloud rather than to a file — so we can see which features are used together. It never records what you build: no scene contents, file names, uploaded robots or account details.

Recipient: PostHog (EU region). IP-based location and persistent profiles are switched off.

Turning things off

  • Optional analytics: Privacy settings in the app.
  • Anonymous counts: they carry nothing that can be traced to you, so there is nothing to withdraw. If you object to them anyway, write to info@source-robotics.com and say so.
  • Blocking everything: an ordinary content blocker stops both, and Sim2Bot works exactly the same.

3. Optional first-party usage dashboard

Where enabled, Allow analytics permits the following additional measurement. The app asks again if an older consent covered only personless PostHog events. Necessary only leaves the simulator usable.

Field Meaning
Random browser ID Remembered for up to 90 days after consent; a guest estimate, not a verified person
Session ID and sequence Deduplicate periodic counter reports; rotate on account changes and idle expiry
Verified account pseudonym The collector verifies the Supabase session and applies a keyed hash to its account ID; the metrics store receives no email or token
Engaged seconds Visible browser with recent interaction, sampled locally
Simulation seconds Wall-clock time while the simulation is observed advancing; measured separately from interaction
Feature flags App opened, robot ready/added, first command, save, ZIP import/export, bridge connection and episode recording
Country Approximate country supplied by Cloudflare for the request, not GPS or residence
Browser and OS Coarse families, without full user-agent strings
Internal/test flag Verified configured internal accounts, administrator-marked accounts or an explicit internal-browser preference

The collector runs on Cloudflare. Usage records expire after at most 90 days, including when no new visits arrive. It stores bounded session summaries and daily counters, not scene contents, code, filenames, camera frames, robot state, raw IP addresses or recordings. The private dashboard receives aggregates only. PostHog's existing personless transport remains separate and keeps geolocation and persistent person profiles disabled.

Withdraw in Help → Privacy settings: new reports stop, pending requests are cancelled and the browser analytics ID is removed. Previously recorded usage is retained until expiry; contact us about deletion requests. A shared browser's Internal / test browser preference marks future usage for the internal filter without enabling analytics. Browser IDs reset on account changes. Declined consent, blockers, offline/sleep intervals, concurrent tabs and VPNs limit interpretation.