* Add bioRxiv and OpenAlex sources to orx lit / orx paper `orx lit` and `orx paper` covered only alphaXiv (arXiv corpus, not biomed). Add OpenAlex (general scholarly graph) and bioRxiv (biology preprints) so lit reviews reach beyond arXiv. - `orx lit --source alphaxiv|openalex|biorxiv` (default alphaxiv, so existing behavior is unchanged). bioRxiv has no search API, so `--source biorxiv` searches OpenAlex filtered to bioRxiv's corpus (S4306402567). - `orx paper <id>` auto-detects the source from the id (override with `--source`): arXiv id -> alphaXiv report/--full; 10.1101/... DOI -> bioRxiv; any other DOI or a W... id -> OpenAlex. A DOI is recognized only when it carries the mandatory '/', so October arXiv ids (e.g. 1810.04805) are not mistaken for DOIs. - `orx lit --json` now emits a uniform LitHit shape across all sources (adds `source`/`citations`, preserves alphaXiv `votes`/`snippets`). - OpenAlex/bioRxiv print a title/authors/date/citations + abstract card with DOI and PDF links; they have no extracted full text, so `--full` points at the PDF. All three sources are public (no login). New config hosts: OPENALEX_API_URL, BIORXIV_API_URL, OPENALEX_MAILTO. Docs (orx-lit skill, SKILL/SYSTEM_PROMPT/README, lit-review template) updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Add Settings toggles to enable/disable literature sources Adds a "Literature sources" section to the dashboard Settings with on/off toggles for alphaXiv, OpenAlex, and bioRxiv. The choice is hard-enforced: `orx lit` and `orx paper` refuse a disabled source. - Persisted in settings.json as `disabledLitSources` (empty = all enabled, so a source added later defaults on). New `telemetry` getter/setter via the locked `mutate_settings` RMW; `config::disabled_lit_sources` re-export. - `GET`/`POST /api/settings/lit-sources` returns/accepts `{alphaxiv, openalex, biorxiv}` booleans, mirroring the profile settings handlers. - UI `LiteratureSourcesTab` (built from the ProjectDefaultsTab template) in the Settings stack; `getLitSources`/`setLitSources` in api.ts. Rebuilt ui/dist. - Enforcement: `orx lit --source <disabled>` errors; bare `orx lit` falls back to the first enabled source (noting the swap on stderr) and errors if all are off; `orx paper <id>` on a disabled source errors (no fallback — the id is fixed). `LitArgs.source` is now `Option<LitSource>` to distinguish an explicit choice from the default. `LitSource::as_str` centralizes the wire name. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Render orx lit / orx paper chat rows as a real search In chat, a literature search rendered as a generic "Ran orx lit …" shell line. Now `orx lit` / `orx paper` tool calls read as a real search — the source's official logo plus natural language ("Searching OpenAlex for "…"", "Reading 2401.12345 on bioRxiv") — so a lit review feels first-class. - New `LitSourceLogo.tsx`: the three official brand SVGs (inlined at build via `?raw`, shown in a small white tile so the solid-black OpenAlex/bioRxiv marks stay visible in dark mode) plus `parseOrxLit`, which recognizes an `orx lit`/`orx paper` command and pulls out the source + query/id. `detectPaperSource` mirrors the Rust `detect_source` so a bare `orx paper <id>` shows the right source. - `ChatPanel` gains `toolSummary`: Bash rows matching an orx literature command render the logo + sentence; everything else falls back to the plain `toolLine`. The row still expands to the exact command + output — nothing is hidden. - The text ellipsizes like other tool rows; the logo is aria-hidden (the source name is in the adjacent text). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Make orx paper chat rows link to the paper's source page Clicking a fetched paper in chat now opens it on its own source: an arXiv id → alphaXiv (alphaxiv.org/abs/<id>), a bioRxiv DOI → doi.org (resolves to bioRxiv), and OpenAlex → the DOI or the OpenAlex work page. A small external-link arrow marks the row as clickable; the row still expands to the raw command + output. - `paperUrl(source, id)` in LitSourceLogo builds the per-source URL; `doiFrom` extracts a bare DOI from an id or URL and strips a bioRxiv content-URL version suffix (`v1.full`) so doi.org resolves it. - `toolSummary` renders `orx paper` rows (with an id) as an `<a target=_blank rel=noopener>`; search rows stay plain text. The href scheme/origin are fixed literals, so the agent-supplied id can only ever be a path segment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Polish lit-review UI: drop redundant source name, logo the settings toggles - Chat: `orx lit`/`orx paper` rows now read "Searching for "…"" / "Reading <id>" — the logo already names the source, so the text no longer repeats it. The logo carries the source name for screen readers (aria-label) when no adjacent text does; a new `decorative` prop keeps it aria-hidden where text names it. - Settings → Literature sources: each toggle row now shows the source's official logo next to its name. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Move literature-source toggles from Settings to the composer The source on/off toggles were tucked away in Settings. Surface them where a lit review happens: a switch icon at the bottom-left of the chat composer opens a small popover to toggle alphaXiv / OpenAlex / bioRxiv. State still lives in settings.json via /api/settings/lit-sources, so `orx lit`/`orx paper` enforcement is unchanged. - New `LitSourcesPicker` mirrors the composer's OptionPicker pattern (usePopover + option-menu); rows are `role="switch"` with the source logo + name. - Remove the Literature sources section (and its dead styles) from SettingsPage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Drop redundant per-row status dots inside tool groups Rows expanded under "Used N tools" already sit inside the group's status dot and indent rule, so the leading per-row dot was just noise. Hide it for grouped rows only; the group summary dot and single-row dots are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
10 KiB
name, description
| name | description |
|---|---|
| openresearch-cli | Use the `orx` CLI to drive OpenResearch projects from a terminal — browse the experiment tree, runs, logs, artifacts, and the evidence DB; create experiments; launch, wait on, and cancel runs on GPU compute; and chart W&B metrics. Each experiment is a git branch in a local cache-dir clone — reading, diffing, and editing code all happen there with plain git. Read this before driving `orx` programmatically. |
OpenResearch CLI (orx)
orx is a command-line client over the OpenResearch API. It authenticates with a
personal access token and exposes both read views of a project (experiment
tree, runs, logs, artifacts, evidence database) and write actions
(create experiments, launch/cancel runs on GPU compute). Code is the one thing
orx does not serve: every experiment is a git branch on the project's GitHub
repo, and the local clone in ~/.cache/openresearch/repos/<owner>/<repo> is
the standard way to read, diff, and edit it (see the orx-git module). Use
orx when you need to inspect or drive project state from a shell instead of the
web UI.
This overview is deliberately short: it carries the cardinal rules and a command
quick-reference, then points at focused modules for everything else. Load a
module with orx skill <name> (the live index is printed at the end of orx skill output).
Cardinal rules — read before doing anything else
These four govern everything below. Breaking any one silently invalidates your
results — they are not style preferences. The orx-experiment-tree module
expands on the why; these are the non-negotiables.
- Never edit a node once a run has answered it. A node freezes the moment
a run establishes its baseline or tests its hypothesis — that includes the
root — and freezing is permanent: a disappointing result is still a result.
Until then it is provisional: seeding it, fixing its deps, and making it
run all happen on its own branch (
orx-experiment-tree). To try an idea, branch a child and edit the child. - The run command and the environment are a fixed contract — identical on
every node. A child inherits its parent's run command verbatim; leave it
alone. Do not give nodes different start commands, and do not vary
behavior through environment variables or env-prefixed commands
(
LR=3e-4 python …). The only thing that may differ between nodes is the committed code/config on the node's git branch.orx exp cmd --setis legitimate exactly once: to set the baseline's command when it has none. - Vary code, not knobs-in-the-command. Encode hyperparameters in the
code/config files and branch a child per variant — never sweep them by editing
the run command or passing env vars. Every node runs the same command over
different code, so their
EVAL.mdoutputs stay comparable. - Grow the tree downward, not sideways. Fan a little within a round (the
options of one decision), then descend onto that round's winner for the
next round. A root with a long row of direct children and no grandchildren is
the failure mode. See "Shape the tree" in the
orx-experiment-treemodule.
If you're ever tempted to change the command, pass an env var, or pile another node onto the root instead of branching a child, editing its branch, and descending — stop. That's the anti-pattern, not a shortcut.
Setup
orx login # opens a browser, stores a token at ~/.config/openresearch/credentials.json
orx logout # remove the stored token
- The API base URL resolves from
--api-url→OPENRESEARCH_API_URL→ a built-in default. SetOPENRESEARCH_API_URLfor non-local use. - Every command except
login,lit, andpaperneeds a token; if you seeNot logged in, runorx login. (litandpaperhit public alphaXiv / OpenAlex / bioRxiv hosts and work without one.)
Command quick-reference
Project-scoped commands take a project id; experiment-scoped commands take an
experiment id; run-scoped commands take a run id. Don't mix them — get
ids from orx projects, orx experiments, and orx runs respectively. Each
group below has a module (orx skill <name>) with the full flags and rules.
Auth
| Command | What it does |
|---|---|
orx login [--api-url <url>] |
Open a browser, do loopback OAuth, store a token. |
orx logout |
Remove the stored token. |
Discover (project- and experiment-scoped)
| Command | What it does |
|---|---|
orx projects [--all] [--json] |
List your projects (id + name + GitHub owner/repo), grouped by org. --all includes archived; --json emits a flat array (incl. each project's paperId) for scripts. Project ids, org ids, and the repo to clone come from here. |
orx explore [--json] |
List the public project directory (id + name + repo) — projects anyone can view. Drill in with orx project view / orx experiments / orx runs. |
orx project view <projectId> |
Overview of one project: details, its experiment tree, and its reports. Works on any public project or any private one in your orgs. |
orx experiments <projectId> |
Print the project's experiments as an indented tree. Experiment ids come from here. |
orx runs <projectId> [--experiment <id>] |
List runs as a table, newest first. Run ids come from here. |
orx env <projectId> |
List the names of the env vars a run will see (merged org + project + per-user), each tagged with its source. Names only — values never returned. |
Run evidence (run-scoped) — module orx-evidence
| Command | What it does |
|---|---|
orx logs <runId> [--head] [--bytes <n>] [--range <s>:<e>] |
Read a run's terminal log. |
orx search-logs <projectId> "<pattern>" (--run <id> | --experiment <id>) [--max <n>] |
Grep run logs for a literal pattern. |
orx artifacts <runId> / orx artifact <runId> <key> [--head] [--bytes <n>] |
List / read a run's text artifacts. |
orx wandb <runId> |
List the W&B runs linked to a run. |
orx chart wandb <projectId> --metric "<key>" --run <runId>[:label] ... |
Render a W&B metric across runs to a PNG. |
orx query <projectId> "<sql>" |
Run one read-only DuckDB SQL statement against the evidence schema. |
Create and run experiments (write) — modules orx-create, orx-compute, orx-git
| Command | What it does |
|---|---|
orx create-project <orgId> --name "<n>" [--repo <owner/repo>] |
Create a project bound to a GitHub repo (or a fresh blank repo). |
orx project edit <projectId> [--name "<n>"] [--description "<text>" | --description-stdin] |
Edit a project's name and/or description (pass at least one); --description-stdin overwrites the description from stdin (long markdown). |
orx create-experiment <projectId> --title "<t>" [...] |
Add an experiment node; prints its git branch. |
orx compute [--gpu <id>] [--count <n>] [--provider <name>] | --cpu] |
List the GPU/CPU compute catalog. |
orx instance create <orgId> (--gpu <id> … | --cpu <flavor> …) |
Spin up a standalone instance in an org. |
orx exp status/cmd/run/cancel/wait <expId> |
Inspect, run, cancel, and wait on a single experiment node. |
orx exp desc <expId> [--set "<text>" | --stdin] |
Read or overwrite the experiment's description. |
orx report upload/list/show/download <projectId> … |
Publish and read project reports (module orx-reports). |
To read or edit a node's code — including diffing what a run changed — use
plain git in the cache-dir clone; there is no orx code command. See the
orx-git module.
Literature & papers — alphaXiv / OpenAlex / bioRxiv (no login required) — module orx-lit
Use before any web search for academic/research queries (paper, author, blog, model release).
| Command | What it does |
|---|---|
orx lit "<query>" [--source alphaxiv|openalex|biorxiv] [--limit <n>] [--json] |
Full-text search; --source picks the corpus (default alphaxiv; openalex = all fields, biorxiv = biology preprints). |
orx paper <id|url> [--source ...] [--full] |
Fetch a paper: alphaXiv report/--full text, or OpenAlex/bioRxiv metadata+abstract. Source auto-detected from the id. |
Meta
| Command | What it does |
|---|---|
orx skill [name] |
Print this overview + the live module index (no args), or print one module / fetch a deeper reference doc by name. |
Modules
The detail lives in focused modules — load one with orx skill <name> (the live
list, with one-line descriptions, is printed at the end of orx skill output):
- orx-experiment-tree — the experiment-tree model, the auto-research loop, and
orx exp desc. - orx-create — create a project, seed an empty baseline, add experiment nodes.
- orx-compute / orx-compute-k8s — launch runs on compute; the k8s manifest contract.
- orx-git — read, edit, and diff a node's code with plain git.
- orx-evidence — logs, search-logs, artifacts, W&B charts, and the
orx queryevidence DB. - orx-reports — write and publish research reports.
- orx-lit — literature search and paper content; the preferred starting point for academic/research queries (not web search).
Deeper API-served references (the project-query schema and worked examples, the
report writing guide) are fetchable too — orx skill lists them at the end when
the API is reachable.
Typical workflow
Orienting in a project (read-only discovery):
orx projects # find the project id
orx experiments <projectId> # see the tree, pick an experiment id
orx skill experiment-tree # the model + the auto-research loop
orx runs <projectId> # find a run id
orx logs <runId> # read its output
To actually drive a project toward a goal — edit each node's code on its git
branch and keep the GPU capacity saturated — follow the auto-research loop in
the orx-experiment-tree module. Every completed run is a decision point with
four moves: repair the same node when a run answered nothing, refill
the round with another sibling, promote the winner and descend, or stop.