Skip to content
Ryno

Open a workspace

Point Ryno at a folder on disk, then get a phone or a simulator listed.

Two things sit between an installed app and a link on a phone: a folder Ryno can write to, and a device Ryno can see. This page covers both, in that order.

Start from a folder

A workspace is a folder you already own. The name of the project you have open sits in the top bar, next to a folder mark; click it and the menu offers to open one. O does the same from anywhere in the window, without the menu.

Any folder works, whether Ryno has ever seen it or not.

  • A folder Ryno does not know yet is set up on the spot. There is no question to answer and no step to run first: pick it, and it opens ready to use.
  • A folder you have opened before opens as it was. Setting it up is harmless to repeat, which is what lets a folder created by an older version quietly gain anything a newer one added.
  • A folder that has been moved, deleted or that you cannot read is an error, and Ryno names the folder it could not reach. That is the only way opening fails.

The last folder you opened comes back on its own the next time you launch Ryno.

Clone the project instead

If the project already exists somewhere, you do not have to fetch it yourself. Pick Clone from Git… and fill in three things: the Repository URL, a Destination folder, and a Branch (optional) if you want something other than the default one.

Ryno then clones it in front of you: the output scrolls as it goes, and you can stop it while it runs. Leave Open workspace after clone on and the result opens as your workspace as soon as the clone lands.

A repository that carries no workspace yet is not turned away. Ryno sets one up inside it and tells you it did, so cloning is also a fine way to start a project that has never been opened with Ryno.

What Ryno creates

Everything Ryno writes goes into one folder at the top of your project, named .ryno. Inside it:

Folder What it holds
collections/ One file per request, in whatever tree of folders suits you.
environments/ The named sets of values your requests read from.
flows/ Requests grouped to run one after another.
screenshots/ Screens captured during a run, written when a run captures one.

There is no database and no server behind any of it. Each request is a small file you can open, search, diff and review like the rest of your project, and the folder on disk is where Ryno reads it back from.

What your team gets, and what stays here

Commit .ryno and your team gets the same requests, environments and flows you have. Two things are kept out of that on your behalf, by a .gitignore Ryno writes inside .ryno and keeps up to date every time the workspace opens:

  • *.env.local.json — the environment values you mark as local. Tokens, personal accounts and anything else you would not paste into a review stay on your machine.
  • screenshots/ — what a run captured. These are throwaway evidence of one run on one device, not something the next person needs.

If you added your own lines to that file, they are left alone: Ryno only appends what is missing.

One window, one project

Each window holds one project. Open a second one with N and it starts on the welcome screen, waiting for you to say what belongs in it.

Asking for a project that is already open somewhere brings that window forward rather than opening it twice, so the same folder is never edited from two places at once.

Leave a project, and come back to one

That same menu in the top bar is how you move between them. It opens on the project you are in, with the full path underneath the name, so a window you come back to after lunch says which of two similarly named folders it is holding.

Under it sit the last few projects you worked in, up to four of them, each one click away. The rest of the menu is the ways in and the way out: open another folder, start a fresh project, clone one, or close the one you have.

Closing empties the window back to the welcome screen and touches nothing on disk. Everything you set up is in the folder, so a project you close is a project you reopen exactly as you left it — which is what makes opening the wrong folder a mistake with no cost.

Three modes in one window

A narrow rail of icons runs down the left of the window and switches between three modes: Requests, where you write and run one link at a time; Flows, where scenarios are built; and Reports, where the runs they produce are kept. The rail shows icons only, so hover one to read its name. They are also on 1, 2 and 3.

Switching modes changes the panel and nothing else. Your project stays open, your device stays selected, and your environment stays in force. Everything up to the end of the next page happens in the first of the three.

Connect an Android phone

Ryno carries its own copy of adb, so there is nothing to install for Android and no path to point anywhere. A phone appears in Devices the moment the cable is plugged in — Ryno listens to what adb reports rather than checking every few seconds, so there is nothing to refresh and no delay to wait out.

Two things are needed on the phone itself:

  1. Turn on USB debugging, under Settings → Developer options → USB debugging.
  2. Reconnect the cable and accept the Allow USB debugging? prompt when the phone shows it.

On a Mac that is all: no driver is involved. Windows is the exception — it ships no general-purpose driver for this, and Ryno walks you through installing the right one from Troubleshoot device… when you get there.

Pair a phone over Wi-Fi

A phone can also join without a cable, which is the shortest path when the cable is the thing giving you trouble. Pick Pair over Wi-Fi… and keep the phone in front of you: every value you are asked for is read off its screen.

  1. On the phone, open Developer options ▸ Wireless debugging ▸ Pair device with pairing code. It shows an address and a short numeric code.
  2. Copy that address into Pairing address (IP:port) and the code into Pairing code.
  3. Go back to the main Wireless debugging screen. The address at the top of it is a different one, and it is the one that goes into Device address (IP:port).
  4. Pick Pair device.

Once paired, the phone arrives in Devices the same way a plugged-in one does. If the pairing is refused, nothing is added and the reason is shown in the dialog rather than left in a log.

Boot an iOS simulator

Ryno cannot carry Xcode the way it carries adb, so the iOS side leans on the tools Apple ships. Until they are installed and a simulator is running, the iOS part of Devices has nothing to list.

  1. Install the Xcode command line tools with xcode-select --install, and accept the system prompt. Xcode itself is not required for simulators you already have.
  2. If several Xcodes are installed, or one has moved, point at the one to use with sudo xcode-select -s /Applications/Xcode.app. Check it with xcrun --find simctl, which must print a path.
  3. Boot a simulator. Open Xcode → Open Developer Tool → Simulator, or pick one straight from the device menu in Ryno and hit Boot — simulators that are shut down are listed there too.

Ryno tells you where it got to: the step that installs the tools carries a Detected or Not found tag, read live, so you can see the answer change without leaving the guide.

Why iOS has a refresh button and Android does not

The two families are followed in different ways, and the difference is worth knowing before it surprises you. Android is pushed: a cable that moves is reported straight away. Simulators are not — there is no such channel for them, so Ryno looks again on a cadence.

Out of the box it looks every 5 seconds while the Mac is plugged in, and every 15 seconds while it runs on battery. The menu states the cadence in force underneath the actions, and you can change both numbers, or switch the looking off entirely, in Settings → Devices → Device polling.

That is what Refresh iOS devices is for, and it is not decoration: it takes a fresh look right now, whatever the cadence is and even when polling is off. It is also on R from anywhere in the window.

Plug in an iPhone

A physical iPhone or iPad works, with one limit that is better read here than met later.

Ryno can send a link to it. Ryno cannot tell you what happened next. Apple’s tooling hands the link to the app you named and reports that it did so, without ever saying whether the link was understood, or whether any app claims it at all. A link nothing on the phone wants comes back looking exactly like one that worked.

So Ryno does not call it a success. A run on a physical device ends on its own word — Link sent — RYNO can’t tell what the app did with it. — in muted ink rather than the green of a verdict, and the run is filed under that same sentence. Nothing failed, nothing is confirmed, and the answer is on the phone’s screen. Simulators and Android phones are not affected: there, a link no app claims fails loudly, and a green result means what it says.

Three things the phone asks of you before any of that. Ryno names the one that is in the way, on the row of the device itself:

  • Developer Mode, under Settings › Privacy & Security › Developer Mode on the phone.
  • An unlocked screen. iOS keeps Xcode’s developer tools unmounted while the screen is locked, and there is no way around it.
  • Trust. Tap Trust this computer on the phone the first time it meets this Mac.

There is no in-app walkthrough for a physical iPhone yet, the way there is for Android over USB and for simulators. This section is it.

When nothing shows up

Work down the list for the family you are missing.

An Android phone that is not listed. Check USB debugging is on and the Allow USB debugging? prompt was accepted. Then pick Restart adb server, followed by Recheck devices. Still empty? Try another USB port or another cable, then recheck. Pairing over Wi-Fi is the other way out, and it needs no cable at all.

No simulators listed. Pick Troubleshoot simulators… and run its three steps in order: the tools, the xcrun check, then booting one. Then pick Refresh iOS devices to look again without waiting for the next tick. If it is still empty, check Xcode is not part way through downloading that simulator runtime — it appears only once the download finishes.

An iPhone that is listed but dimmed. A device Ryno cannot drive stays visible and cannot be picked, and the row says what is in the way. A locked screen is the one exception: it cannot be seen from the outside, so Ryno only names it after a run has been refused for it. Fix what the row names, then reopen the menu.