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

# Installation

> Build the CLI, put it on your PATH, and install the portable Agent Skill for the agents you use.

Myrqen is two things on your machine: the `myrqen` CLI, which owns session state, policy
gates, finding intake, and reports; and a portable **Agent Skill**, which is the
behavioural source of truth your coding agent reads.

## Requirements

| Requirement | Value        | Where it comes from                                              |
| ----------- | ------------ | ---------------------------------------------------------------- |
| Node.js     | `>=20.12`    | `engines.node` in `package.json`                                 |
| pnpm        | `9.15.4`     | `packageManager` in `package.json`                               |
| PostgreSQL  | 14+          | Only for [self-hosting](/guides/self-host) the dashboard and API |
| Docker      | not required | Optional and deliberately de-emphasised                          |

## Build the CLI

<Warning>
  The `myrqen` npm package is **not published yet** — `apps/cli/package.json` still carries
  `"private": true`, and `registry.npmjs.org/myrqen` returns 404. Any documentation or
  marketing copy showing `npx myrqen link` is describing a future state. Build from source
  until that changes.
</Warning>

```bash theme={null}
git clone https://github.com/stijnswapped/Myrqen.git
cd Myrqen
pnpm install
pnpm build
```

`pnpm build` produces a single bundled entry point:

```
apps/cli/dist/myrqen.mjs
```

## Make `myrqen` runnable

<Tabs>
  <Tab title="Shell alias">
    Quick, per-shell, and easy to undo.

    ```bash theme={null}
    echo 'alias myrqen="node /path/to/Myrqen/apps/cli/dist/myrqen.mjs"' >> ~/.zshrc
    source ~/.zshrc
    myrqen --help
    ```

    An alias is not visible to a subprocess, so an agent that shells out may not see it.
    Prefer one of the other options when an agent will be driving the CLI.
  </Tab>

  <Tab title="PATH shim">
    Visible to every process, including agents that spawn their own shell.

    ```bash theme={null}
    mkdir -p ~/.local/bin
    printf '#!/bin/sh\nexec node /path/to/Myrqen/apps/cli/dist/myrqen.mjs "$@"\n' > ~/.local/bin/myrqen
    chmod +x ~/.local/bin/myrqen
    myrqen --help
    ```

    Make sure `~/.local/bin` is on your `PATH`.
  </Tab>

  <Tab title="Direct invocation">
    No installation at all. Verbose, but unambiguous, and what the repository's own
    walkthroughs fall back to.

    ```bash theme={null}
    node /path/to/Myrqen/apps/cli/dist/myrqen.mjs auto
    ```
  </Tab>
</Tabs>

Confirm what the CLI thinks it can do:

```bash theme={null}
myrqen doctor
```

`doctor` reports capability, not alarm. A missing convenience integration is `info`;
`attention` is reserved for something that actually blocks the product.

## Install the Agent Skill

```bash theme={null}
myrqen install
```

`packages/skill/myrqen` is the single behavioural source of truth. `myrqen install` (and
`myrqen link`) copies that same bundle to the locations each agent actually reads:

| Agent                      | Location                            | Slash command |
| -------------------------- | ----------------------------------- | ------------- |
| Claude Code (personal)     | `~/.claude/skills/myrqen/`          | yes           |
| Claude Code (this project) | `<repo>/.claude/skills/myrqen/`     | yes           |
| Codex CLI                  | `~/.codex/skills/myrqen/`           | no            |
| OpenCode                   | `~/.config/opencode/skills/myrqen/` | no            |
| Portable                   | `~/.agents/skills/myrqen/`          | no            |

Notes that matter in practice:

* Claude Code derives the slash command from the **directory** name, so the bundle
  installs as `myrqen/` and is invoked as `/myrqen auto`. The frontmatter `name` is only
  the display label, and `$ARGUMENTS` carries the requested effort.
* OpenCode also reads `.claude/skills` and `.agents/skills`, so one install can satisfy
  several agents. The installer deduplicates by destination path.
* Codex has no slash-command mechanism, so the universal `myrqen auto` invocation is the
  documented path there.
* A directory Myrqen manages carries a `.myrqen-managed.json` marker with the bundle
  version and a content digest, so a reinstall is a no-op when nothing changed. An
  existing directory Myrqen did **not** write is moved to `myrqen.backup-<timestamp>`
  first.

Find the source bundle at any time:

```bash theme={null}
myrqen skill path
```

<Info>
  A missing convenience integration does not mean the scanner is broken. The universal
  `myrqen <effort>` invocation works from any agent with shell access.
</Info>

## Where local state lives

Two locations, and nothing outside them.

**Per machine** — configuration and the device credential:

| Platform | Directory                                                |
| -------- | -------------------------------------------------------- |
| macOS    | `~/Library/Application Support/Myrqen/`                  |
| Linux    | `$XDG_CONFIG_HOME/myrqen/` (default `~/.config/myrqen/`) |
| Windows  | `%APPDATA%\Myrqen\`                                      |

`config.json` holds the API base URL, the linked account, update preferences, and the
telemetry flag. The device token itself goes to the OS keystore — Keychain, Windows
Credential Manager, or Secret Service — and falls back to a `0600` file only when no
keystore is available.

**Per scanned repository** — session and report state, under `.myrqen/`:

```
.myrqen/current-session
.myrqen/sessions/<localReportId>/session.json
.myrqen/reports/<localReportId>/report.{html,json,md,sarif.json}
```

The repository's own `.gitignore` already excludes `.myrqen/local.json`,
`.myrqen/reports/`, `.myrqen/sessions/`, and `.myrqen/current-session`. Add the same
lines to the project you are scanning.

Override the config directory with `MYRQEN_CONFIG_DIR` — useful for keeping an
experiment away from your real credential. See
[Environment variables](/reference/environment-variables).

## Next

<CardGroup cols={2}>
  <Card title="Link a device" icon="link" href="/getting-started/link-a-device">
    Only needed for cloud reports and sharing. Scanning works unlinked.
  </Card>

  <Card title="Run your first assessment" icon="play" href="/getting-started/first-assessment">
    What `session start` hands your agent, and what to do with it.
  </Card>
</CardGroup>
