Skip to main content

Personalized biorxiv preprint triage and ideation engine

Project description

labrats

labrats

🐀🧑🏾‍🔬   triage preprints with a team of personalized labrats

Python 3.11+ Vibe Coded percent

AboutYour LabratsQuick StartHow It WorksConfiguration


What is labrats?

The number of new preprints is overwhelming. Managing which works to dive into is exceedingly difficult.

labrats is a small, local tool that helps you triage preprints that might be worth diving into.

You provide a list of filtering criteria - keywords, categories, your own research context. labrats then pulls all the new preprints and a team of LLM-powered "labrats" (each playing a distinct persona) reads each abstract, scores it, and writes their thoughts. You can peruse the results in a clean webpage, and then pick those papers that you want to spend time reading in-depth.

labrats screenshot
The digest view. Each card shows the team's headline score, a disagreement flag, and one button per labrat.

The code is open-source, it runs on your machine, and works with whatever LLM you want — OpenAI, Anthropic, Gemini, or locally installed models.

📝 My substack post has more details if you're interested.


Meet your labrats

Each labrat reads the same abstract but cares about and prioritizes different things. Here are the defaults bundled with labrats:

Labrat What they care about
🎓 Excited Grad Student Novelty, curiosity, cross-field connections
💼 Hype-Chasing PI Fundability, citations, who's behind it
🔬 Postdoc Savant Technical depth, methodological elegance
🦅 Reviewer 2 Missing controls, alternative explanations, every flaw
🧐 Skeptical Senior Scientist Released code, data, weights, statistical rigor

You can edit any of these, disable them, or write your own — each labrat is just a YAML file. These are just the defaults I've encoded after spending time in the sciences.


Quick start

👋 If you don't know what the command line is

The Getting Started guide on the wiki walks you through everything — installing Python, installing labrats, and setting up a free local LLM so you don't have to worry about API keys.

👋 If you're comfortable with the command line

# install
pipx install labrats           # or: uv tool install labrats

# first-time setup (creates ~/.config/labrats with example defaults)
labrats init

# add an API key in ~/.config/labrats/settings.yaml
# (or set OPENAI_API_KEY / ANTHROPIC_API_KEY / etc. in your shell)
# — or skip API keys entirely with a local model: see the wiki

# launch the web UI
labrats serve

The UI opens in your browser. You can go to the Settings tab to set up a personal profiles (on your topics of interest), click Run, and your labrats will get to work.

If you prefer the command line: labrats run does the same thing headless. I use this for automated runs via cron jobs.

See Set up a free local LLM on the wiki.


How it works

  1. Scrape — fetch all new preprints from bioRxiv and arXiv matching the filters specified in your profile.
  2. Read — each labrat then scores each abstract on rigor, novelty, and relevance. They then give a short written take.
  3. Synthesize — averages scores into a headline number; categories with significant disagreements get flagged.
  4. Triage — you can then skim the abstracts, see each labrat's perspective, and flag those papers that you find most interesting.

Nothing leaves your machine except the API calls to whichever LLM provider you've configured.


Configuration

Everything lives in ~/.config/labrats/:

File What's in it
settings.yaml API keys, default model, auto-run interval
profiles.yaml Your topics: keywords, categories, which labrats to use
personas/*.yaml One file per labrat — edit freely

The web UI has a Settings tab that edits all of this for you, but the files are plain YAML if you'd rather hand-edit.

API keys & security

API keys are stored in ~/.config/labrats/settings.yaml, which is automatically chmod'd to 0600 (readable only by your user). This matches what tools like aws, gh, and kubectl do.

If you'd rather not store keys on disk at all, set them as environment variables instead — labrats falls back to OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, etc.

Don't commit settings.yaml to a repo.

Adding your own labrat

Drop a YAML file into ~/.config/labrats/personas/:

name: The Translator
role: >
  A working clinician who reads every paper asking
  "could this change medical practice in the next five years?"
  You are unimpressed by elegant methods that don't
  connect to a real patient or decision.
scored_fields:
  - methodological_rigor
  - novelty
  - relevance

Restart the UI by quitting and rerunning labrats serve and your new labrat joins the team.

Optional — give your labrat a face. Drop a PNG next to the YAML named after the file, e.g. ~/.config/labrats/personas/the_translator.png. It'll show up in the persona panel automatically. (You can also override the bundled images this way.)

Auto-run on open

In the Models tab, set "Auto-run after N hours." When you open labrats, if the last run finished longer ago than that threshold, a fresh run kicks off automatically. Set to 0 to disable.

For true background runs while your machine is closed, schedule labrats run via cron / launchd / Task Scheduler.


License

Released under version 5 of the ETHICAL LICENSE.

made by Arya w/ ❤️ · 🐀

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

labrats-0.2.0.tar.gz (3.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

labrats-0.2.0-py3-none-any.whl (875.0 kB view details)

Uploaded Python 3

File details

Details for the file labrats-0.2.0.tar.gz.

File metadata

  • Download URL: labrats-0.2.0.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for labrats-0.2.0.tar.gz
Algorithm Hash digest
SHA256 869ea53e86ac8f1fb7b6e59f37f014a993e809b1dc7fcf43837f7f0cb4e676ac
MD5 8bcfc50e855e6f259c3b7027c8a1943a
BLAKE2b-256 c2865281e88ac379d689cd08988d6d215607f91a7a8ab4dc882ccc4461ca288c

See more details on using hashes here.

File details

Details for the file labrats-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: labrats-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 875.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for labrats-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cbd0a8b34b3b789c16aa92674b41ebe7c28bc896e9cc04abdac8dc1ea285fea0
MD5 c3251d6c331ffd8b267bec9315ff3971
BLAKE2b-256 31958b09a3b6d3680e2e867d038b5affd1ed589d512de3223b138c743d9c6342

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page