Connecting Frank
Frank is Andy's companion that runs on your own computer. When you pick paywalled papers on your dashboard, Frank opens a browser window right there on your machine and fetches the PDFs through your own university library login — your password never leaves your computer, and you can watch him work. Setup takes about 5 minutes, once.
You'll need
- A Mac where you can install software
- Your university library login (the one that gets you journals off-campus)
- The Frank zip — the green button above
- Your Andy account, signed in at researchandy.com
One-time setup
Install Node.js
Go to nodejs.org, download the LTS version for macOS, and run the installer like any other app. This is the engine Frank runs on — you'll never open it directly.
Unzip Frank, then open Terminal
Move frank.zip into your Downloads folder and double-click it — it becomes a folder called frank at Downloads/frank. Don't rename or move it.
Press ⌘ + Space, type Terminal, press Enter. Copy-paste each line below, pressing Enter after each. The second and third lines download Frank's parts — they take a few minutes and print a lot of text. That's normal.
$ cd ~/Downloads/frank$ npm install$ npx playwright install chromium
Every new Terminal window starts outside the frank folder — if a command ever fails with “Could not read package.json”, run the cd line again first.
Pair Frank with your Andy account
In your browser: researchandy.com → Dashboard → the Frank card → Connect Frank. You'll get a short code, valid for 10 minutes. Back in Terminal (replace YOURCODE):
$ npm run frank -- pair YOURCODE
You should see Paired ✅. This links this computer to your account — you never do it again.
Tell Andy about your library
No terminal for this one. On Dashboard → Connections → University library, paste your library's proxy address and press Save. Your library usually calls this the “EZproxy” or “off-campus access” link — for NUS, for example, it's https://libproxy1.nus.edu.sg/login?url=.
This is just a public web address — never your password. Andy passes it to Frank with each batch, so Frank knocks on the library's front door, where you sign in yourself.
Every time you use Frank
Start him
$ cd ~/Downloads/frank$ npm run frank
Terminal says Frank is up 🤝 and a browser window opens. Leave both open — that window is Frank's workbench. The first time a library page appears in it, sign in as you normally would (2FA and all); Frank remembers the session afterwards.
Two clicks make future sign-ins painless: when the browser offers to save your password, accept — it's stored on your computer only, like in any browser. And when the university asks “Stay signed in?”, say yes — your session then lasts days instead of hours.
Frank keeps your Mac awake while he's running, but closing the laptop lid still puts him to sleep — keep it open until a batch finishes. If a batch does get interrupted, don't re-send it: just start Frank again and he resumes it on his own within a few minutes.
Send him papers from your dashboard
On Dashboard → History, press Get PDFs on any search and tick the papers you want. Papers with a free copy download instantly as a zip; for the paywalled rest, press Send to Frank.
Frank works through them one at a time, at a polite human pace — a big batch takes a while, on purpose. Finished PDFs land in Downloads → Frank PDFs, one folder per batch, with a Frank - missed.txt note listing anything he couldn't get. Andy messages you on Telegram when he's done.
Updating Frank
Frank improves as testers hit problems, and the download button at the top of this page is always the current build — so updating is just downloading it again. No need to wait for us to send anything.
Your pairing and library settings survive. They live in a separate place on your Mac, not inside the folder, so you never re-pair and never re-enter your library address.
Stop Frank first (click his Terminal window, press Ctrl + C). Drag the old Downloads/frank folder to the Trash — it matters that the old one is gone, or the new zip unpacks alongside it as frank 2 and you carry on running the old copy. Then unzip the new download and:
$ cd ~/Downloads/frank$ npm install$ npm run frank
His first line prints the version, like Frank v1.1.0 is up. If we asked you to update and that number hasn't changed, the old folder is still the one you're running.
Stopping and restarting
To stop Frank: click the Terminal window and press Ctrl + C (or close the window). To start again another day, repeat step 5 — nothing else.
Keep your computer awake
A sleeping computer pauses Frank mid-batch — the most common reason a batch doesn't finish. Three rules:
- Frank handles idle sleep for you. While he's running, your Mac won't doze off on its own (his terminal says so when he starts). The screen may still dim — that's fine, downloads continue.
- Keep the laptop lid open. Closing the lid forces sleep no matter what. If you must close it, plug into power and an external display first.
- Plug in for big batches. Dozens of papers take a while at Frank's careful pace — don't let the battery decide when he stops.
And if a batch does get interrupted, don't re-send it: start Frank again (step 5) and he picks the same batch back up by himself within a few minutes.
If something looks wrong
- “command not found: npm”
- Node.js isn't installed yet, or Terminal was open before you installed it. Do step 1, then quit and reopen Terminal.
- “No such file or directory” after the cd line
- The frank folder isn't at Downloads/frank. Find where you unzipped it and drag that folder onto the Terminal window right after typing cd — it fills in the correct path. (Early testers were set up in Downloads/andy — that keeps working too.)
- A box saying “Please run npx playwright install”
- Frank's browser hasn't been downloaded — run step 2's last line, then npm run frank again.
- “That code is invalid or expired”
- Pairing codes last 10 minutes and work once. Generate a fresh one on the dashboard's Frank card and run the pair line again.
- Frank opens pages but the missed list is long
- Usually the library session lapsed — look at Frank's browser window, sign in to your library again, and re-send the papers. If it keeps happening, send us the missed.txt: different publishers hide their PDFs in different places, and Frank learns them one by one.
Why “Frank”? He's named for the prudent and bold one — the one that detects all threats and keeps the blood flowing. Andy pushes forward; Frank delivers. 🚴🚴