> ## Documentation Index
> Fetch the complete documentation index at: https://rapidreview.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Install

> Install the nisa CLI with one command, sign in, check it works — then give your coding agent the skill so it uses the CLI on its own.

macOS (arm64, x86\_64) and Linux (x86\_64, arm64). No Windows build.

<Steps>
  <Step title="Install">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    curl -sSL https://api.rapidreview.io/cli/install | bash
    ```

    Lands in `~/.local/bin`, no sudo. If the shell can't find `nisa`, the installer printed the `export PATH=…` line to add. Rerun it any time to update (`nisa upgrade` does the same).
  </Step>

  <Step title="Sign in">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    nisa
    ```

    Pick **Sign in with your browser** (your RapidReview account) or **Paste an API key**. Browser sign-in also stores a long-lived key on this machine, so agents here need no further setup.
  </Step>

  <Step title="Check">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    nisa doctor
    nisa search "flash attention" --max-results 3
    ```

    <Check>`doctor` reports install, PATH, backend, and auth (never secrets); `search` returns three ranked papers.</Check>
  </Step>
</Steps>

<Info>
  Before v0.3.0 the CLI was called `papyrus`. Re-running the installer replaces it: you get `nisa`, a `papyrus` symlink so old scripts keep working, and `~/.papyrus/` — your sign-in — moves to `~/.nisa/` on first run.
</Info>

## Keys for scripts and agents

```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
export RAPIDREVIEW_KEY="rr_sk_..."
nisa --headless search "flash attention" --max-results 10
```

Where you signed in through the browser, nothing to do — that stored a key the CLI picks up. Anywhere else, mint one in the web app under **Settings → API Keys** (or `nisa keys create "<name>"` while signed in through `nisa login`; a key can't manage keys). Treat it as a password.

## Give your coding agent the skill

With the CLI on `PATH`, one more download makes your coding agent use it on its own: the Nisa skill, a `SKILL.md` that says when to reach for `nisa` and how. Put it where your agent looks for skills; the folder must be named `nisa-cli`.

<Tabs>
  <Tab title="Claude Code">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.claude/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.claude/skills/nisa-cli/SKILL.md
    ```

    Copilot CLI and OpenCode read `~/.claude/skills/` too, so this install covers them as well.
  </Tab>

  <Tab title="Codex">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.agents/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.agents/skills/nisa-cli/SKILL.md
    ```

    Codex reads `~/.agents/skills/` and `.agents/skills/` in the repo — not `~/.codex/skills`.
  </Tab>

  <Tab title="Cursor">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.cursor/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.cursor/skills/nisa-cli/SKILL.md
    ```

    Cursor also accepts `~/.agents/skills/`. Skills replace the older `.cursor/rules/*.mdc` route.
  </Tab>

  <Tab title="Copilot CLI">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.copilot/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.copilot/skills/nisa-cli/SKILL.md
    ```
  </Tab>

  <Tab title="Gemini CLI">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.gemini/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.gemini/skills/nisa-cli/SKILL.md
    ```

    Gemini asks for consent the first time the skill activates. `/skills disable nisa-cli` turns it off.
  </Tab>

  <Tab title="Qwen Code">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.qwen/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.qwen/skills/nisa-cli/SKILL.md
    ```
  </Tab>

  <Tab title="OpenCode">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.config/opencode/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.config/opencode/skills/nisa-cli/SKILL.md
    ```
  </Tab>

  <Tab title="Kilo Code">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.kilo/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.kilo/skills/nisa-cli/SKILL.md
    ```

    `/reload` re-scans.
  </Tab>

  <Tab title="Hermes Agent">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.hermes/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.hermes/skills/nisa-cli/SKILL.md
    ```

    Hermes also requires a `version` field: add `version: 1.0.0` under `name:` in the frontmatter.
  </Tab>

  <Tab title="OpenHands">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p ~/.agents/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o ~/.agents/skills/nisa-cli/SKILL.md
    ```
  </Tab>

  <Tab title="Replit Agent">
    ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
    mkdir -p .agents/skills/nisa-cli
    curl -sSL https://api.rapidreview.io/cli/skill -o .agents/skills/nisa-cli/SKILL.md
    ```

    Replit has no user-level location; run this inside the Repl.
  </Tab>
</Tabs>

Those are personal paths and cover every project. Project-level variants:

| Agent            | Personal                                    | Project                                |
| ---------------- | ------------------------------------------- | -------------------------------------- |
| Claude Code      | `~/.claude/skills/`                         | `.claude/skills/`                      |
| Codex, OpenHands | `~/.agents/skills/`                         | `.agents/skills/`                      |
| Cursor           | `~/.cursor/skills/` or `~/.agents/skills/`  | `.cursor/skills/` or `.agents/skills/` |
| Copilot CLI      | `~/.copilot/skills/` or `~/.agents/skills/` | `.github/skills/` or `.agents/skills/` |
| Gemini CLI       | `~/.gemini/skills/` or `~/.agents/skills/`  | `.gemini/skills/` or `.agents/skills/` |
| Qwen Code        | `~/.qwen/skills/`                           | `.qwen/skills/`                        |
| OpenCode         | `~/.config/opencode/skills/`                | `.opencode/skills/`                    |
| Kilo Code        | `~/.kilo/skills/`                           | `.kilo/skills/`                        |
| Hermes Agent     | `~/.hermes/skills/`                         | —                                      |
| Replit Agent     | —                                           | `.agents/skills/`                      |

Then ask the agent something the corpus answers better than memory:

```text You say theme={"theme":{"light":"github-light","dark":"dark-plus"}}
Find three papers from 2024 on speculative decoding and give me the arXiv ids.
```

<Check>It runs `nisa search` — you'll see the call in its tool log — and answers with real ids. If it answers from memory, the skill isn't loading: check the folder name and path.</Check>

The skill is public and edge-cached (download: [SKILL.md](https://api.rapidreview.io/cli/skill?dl=1)); it doesn't bundle the binary, so if the agent works in a sandbox, install the CLI there too. The contract between the CLI and an agent — output, concurrency, headless mode, local files — is on [Using Nisa from a coding agent](/docs/nisa/guides/from-an-agent).

## Manual install

<Accordion title="When pipe-to-shell is blocked">
  If `api.rapidreview.io` is unreachable, the same installer is at `https://storage.googleapis.com/rr_cli_releases/install.sh`. To fetch a release archive and its checksum yourself:

  ```bash theme={"theme":{"light":"github-light","dark":"dark-plus"}}
  VERSION=$(curl -fsSL https://storage.googleapis.com/rr_cli_releases/latest/VERSION)
  TARGET=aarch64-apple-darwin
  BASE="https://storage.googleapis.com/rr_cli_releases/$VERSION"
  curl -fLO "$BASE/nisa-$VERSION-$TARGET.tar.gz"
  curl -fLO "$BASE/nisa-$VERSION-$TARGET.tar.gz.sha256"
  ```

  `TARGET` is one of `aarch64-apple-darwin` (Apple Silicon), `x86_64-apple-darwin` (Intel Mac), `x86_64-unknown-linux-musl`, `aarch64-unknown-linux-musl`. Verify the checksum, unpack, and put `nisa` on your `PATH`. `NISA_VERSION=v0.2.14` pins the scripted installer to a release.
</Accordion>

<Columns cols={2}>
  <Card title="Your first search" icon="magnifying-glass" href="/docs/nisa/start/first-search">Search, open, related, cite.</Card>
  <Card title="Troubleshooting" icon="wrench" href="/docs/nisa/start/troubleshooting">PATH, auth, rate limits, freshness.</Card>
</Columns>
