Daniel Kim 3661374314 Composer command chips, optional paper args, drop /hf (v0.1.70) (#107)
* Composer command chips: picked slash-skills render as a removable unit

- Picking a skill (menu, typing /name<space>, or the empty-state suggest
  button) lifts the command out of the textarea into a chip; the textarea
  holds only the args, with the skill's arg hint as its placeholder.
- Backspace at position 0 (or clicking the chip) pops it back into
  editable /name args text; send() reassembles the plain wire form, so
  server-side expansion is unchanged.
- User bubbles render a leading known /command with the same chip.
- /reproduce-paper args are now optional: bare invocation tells the agent
  to infer the paper from the current repo and only ask if unidentifiable;
  arg hint is bracketed to signal optionality.
- Drop the /hf skill.
- Fix a latent IME bug: Enter during composition no longer sends.

* Review nits: rename activeSkill to pickedSkill (avoids collision with the menu's activeSkillIdx), fix stale pending-question comment

* Chip inline with the input line; paper-aware optional placeholder

- The chip and textarea now share a flex row (.composer-input), so the
  command and its arg hint read as one line, Claude-desktop style.
- When the project has an attached paper, the /reproduce-paper placeholder
  says the args are optional and names the paper it defaults to.

* Chip overlays the textarea with first-line indent so args wrap full-width

The flex-row layout squeezed wrapped args into a column beside the chip.
Instead the chip now sits absolutely on the textarea's first line, the
first line is text-indented past its measured width, and the chip rides
the textarea's scroll (clipped at the wrapper) so scrolled text is never
hidden behind it.

* Claude-style arg hints and chip semantics

- Bracket every skill's arg hint ([topic], [paper on compute], ...) to
  match the Claude-desktop placeholder convention.
- The chip is inert like inline text: pointer-events none so clicks land
  in the textarea beneath, and Backspace at the start deletes the command
  outright (args stay) instead of dissolving it into /name text.

* Hint reads [paper] on [compute] — bracket each supplied part, not the phrase

* Paper-attached hint keeps compute; extend to /paper-to-marimo

- Placeholder on paper-attached projects now reads
  '[paper — optional, defaults to <id>] on [compute]' for both
  paper-reproduction skills — only the paper part is optional; compute is
  still expected.
- Both templates and /paper-to-marimo's no_args now tell the agent to
  infer the paper from the repo when the args name none, so a
  compute-only invocation works too.

* v0.1.70
2026-07-21 15:09:26 -07:00
2026-06-07 00:35:02 -07:00
2026-07-06 20:05:41 -07:00

OpenResearch CLI (orx)

Important

If you are an OpenResearch user or someone who is interested in autoresearch, we'd love to chat with you. Please email contact@alphaxiv.org if interested.

Run autoresearch on your machine

  • Run research agents in parallel. Spins up agents in different worktrees so you can investigate several different directions at once.
  • Works with Claude Code, Codex, and OpenCode
  • Bring your own compute. Works with SSH, Slurm, Kubernetes, Modal, HuggingFace and more.
  • Give it a goal. Can run the entire autoresearch loop from literature review to experiment analysis.
  • Local and private. Your code and your data stays on your machine.

https://github.com/user-attachments/assets/33b62182-0795-490d-9366-0fb0b4bd49fd

Quick start

curl -LsSf https://openresearch.sh/install.sh | sh
orx up

The dashboard opens at http://127.0.0.1:4791. Give the agent a goal — for example, ask it to reproduce a paper:

/reproduce-paper <paper URL or title> on <compute>

or turn one into an interactive marimo notebook:

/paper-to-marimo <paper URL or title> on <compute>

The dashboard

orx up runs a single local process on 127.0.0.1 — an embedded web UI plus a JSON/SSE API over a local SQLite store. From there you get:

  • Agent chat — a research assistant with full project context, backed by your locally installed harness: Claude Code, Codex, or OpenCode (pick the harness and model in the UI). Ask it to analyze runs, dig into results, edit code, and spin up new experiments.
  • The experiment tree — every experiment is a git branch: a runnable snapshot of your code. The root is your baseline; children are variants measured against it, so lineage stays explicit.
  • Runs — launch on your compute (Modal, Hugging Face Jobs, Kubernetes, Slurm, any SSH box, your own machine) or OpenResearch managed GPUs, and watch live logs, statuses, git diffs, files, and linked W&B runs stream in.
  • Autoresearch — describe a goal and let the agent run autonomously toward it: proposing, launching, and analyzing experiments.

Everything binds to loopback only; nothing on the dashboard's paths leaves your machine except the compute and paper-search calls you initiate.

On a remote machine

Develop from your laptop while the dashboard runs next to your GPUs:

orx up --remote user@host        # or an ~/.ssh/config alias; append :PORT for a custom SSH port

This starts orx up on the remote box over SSH, tunnels the port back, and opens your browser locally. Note the remote server is unauthenticated on that host's loopback, so other users on the same box can reach it.

Commands

Run orx --help (or orx <command> --help) for full usage. The highlights:

Area Commands
Dashboard up
Auth login, logout
Projects projects, explore, project, create-project, env
Experiments experiments, create-experiment, exp status/cmd/run/cancel
Runs & evidence runs, logs, search-logs, artifacts, artifact, wandb, query, chart, report
Compute compute, instance create
Literature lit, paper (alphaXiv full-text search — no login required)
Agent integration install-skills, skill
Maintenance version, update, telemetry

orx install-skills drops the OpenResearch skill into your local coding agents (Claude Code, Codex, OpenCode, Cursor) so they can drive orx themselves — orx login offers this too.

Installing

The install script above fetches the latest prebuilt release (macOS and Linux, x86_64 and arm64) and is the same as:

curl -LsSf https://github.com/alphaXiv/openresearch-cli/releases/latest/download/openresearch-cli-installer.sh | sh

orx update keeps script-installed binaries current; interactive terminals also get a once-a-day background check with a one-line stderr notice (silence it with ORX_NO_UPDATE_CHECK=1).

From source

Requires Rust (stable) via rustup. The prebuilt dashboard UI is committed at ui/dist, so a plain build works:

cargo build --release          # binary at target/release/orx
cargo install --path .         # or install onto your PATH (~/.cargo/bin)

To hack on the dashboard UI itself (Vite + React, embedded into the binary at build time):

cd ui && pnpm install && pnpm build

Run the tests with cargo test.

Configuration

  • API URL — defaults to production (https://api.openresearch.sh); override with --api-url or OPENRESEARCH_API_URL.
  • Credentials — orx login opens your browser, mints a personal access token, and stores it at ${XDG_CONFIG_HOME:-~/.config}/openresearch/credentials.json (mode 0600). Sent as Authorization: Bearer … on every request.

Usage analytics

orx sends anonymous usage analytics to help prioritize features. It's opt-out, and the orx up onboarding surfaces the choice on first run.

  • Collected: command name, a random per-install UUID, CLI version, OS/arch, a CI flag, and coarse event labels (e.g. "a run launched on modal").
  • Never collected: code, prompts, file contents or paths, project or experiment ids/names, repo names, tokens, emails — nothing identifying. The install UUID is not tied to your account.
orx telemetry off        # persistent, per-machine
orx telemetry status     # current state + the anonymous install id
orx <cmd> --no-telemetry # per-run

Events are fire-and-forget on a background task and never block a command.

S
Description
GitHub Trending: alphaXiv/OpenResearch
Readme MIT
935 MiB
Languages
Rust 70.9%
TypeScript 20.9%
JavaScript 6.4%
Python 0.8%
HTML 0.3%
Other 0.6%