Getting started
A guided first project: detect → allow-list → open tab → run a DOM action.
Docs updated: 2026-03-24
Want the quickest setup?
Start with the RTO SDK Lite.
It is the simplest public starting point and already includes
RTO.min.js, quick start notes, and beginner-friendly examples.
What makes RTO practical
RTO can drive a real browser tab on another explicitly allow-listed domain through the browser extension model.
That gives you cross-domain orchestration on visible tabs, locally, without a server or proxy.
Setup checklist
- Choose one loading style: individual helpers, helper packs, or the all-in-one bundle (see Downloads).
- Serve your page from a normal web origin (
https://…orhttp://…). - Make sure the RTO extension is installed and enabled.
- Allow-list the host(s) you want to control, including any other domain you want to open or automate (Allow-list docs).
No secrets in logs
Avoid printing passwords, tokens, or personal data into the console or your page logs.
Two simple starting examples
Both examples below are aligned with 7.13.0 and avoid older singleton-style options such as singleton:true.
<!-- Example A: helper pack mode -->
<script src="../RTO_helper_packs/RTO.core.min.js"></script>
<script>
(function () {
var tabKey = "demo";
RTOconnectOnce(1500).then(function (connected) {
if (!connected || !window.RTOconnected) {
console.warn("RTO extension not detected");
return;
}
return RTOForm.openTab(
{ "tabKey": tabKey, "url": "https://example.com", "focus": true, "newTab": true },
{ "timeoutMs": 20000 }
).then(function () {
return RTOForm.focusTab({ "tabKey": tabKey }, { "timeoutMs": 5000 });
});
}).catch(function (err) {
console.warn("RTO error:", err && err.code, err && err.message);
});
})();
</script>
<!-- Example B: all-in-one bundle -->
<script src="../RTO_helpers.min/RTO.min.js"></script>
<script>
(function () {
var tabKey = "demo";
RTOconnectOnce(1500).then(function (connected) {
if (!connected || !window.RTOconnected) {
console.warn("RTO extension not detected");
return;
}
return RTOForm.openTab(
{ "tabKey": tabKey, "url": "https://example.com", "focus": true, "newTab": true },
{ "timeoutMs": 20000 }
);
}).then(function () {
return RTOForm.listTabs({}, { "timeoutMs": 8000 });
}).then(function (data) {
if (data) console.log("Controlled tabs:", data.items || (data.data && data.data.items) || data);
}).catch(function (err) {
console.warn("RTO error:", err && err.code, err && err.message);
});
})();
</script>
About
RTOconnectOnce()RTOconnectOnce() is the simple gate for helper-based pages.
It updates window.RTOconnected.
UI helpers use that flag to know when they can safely talk to the extension.
Run it
- Load one format only: individual helpers, packs, or
RTO.min.js. - Call
RTOconnectOnce(1500)before your first action. - If the target host is not allow-listed, ask for it through your page UI and let the user confirm on the master tab.
- Reuse the same
tabKeyfor the same workflow. In 7.13.0,openTabnow reuses that key cleanly instead of racing into duplicate tabs.