Getting started
What you need
- Rust (stable toolchain) and Node.js 20.9 or later with pnpm 9.
- The platform prerequisites for Tauri apps: Microsoft C++ Build Tools and WebView2 on Windows, Xcode Command Line Tools on macOS, or WebKitGTK and the usual build packages on Linux.
- At least one supported agent: Claude Code, Codex 0.130 or later, or Cursor.
Build from source
Until the first release there are no installers; the download page will list them. Get the code and build it:
git clone https://github.com/arjunpundeer7/runmarq.git
cd runmarq
pnpm install
cargo build --release -p runmarq-cli
pnpm build:desktoppnpm install installs the JavaScript workspace, cargo build builds the runmarq command, and pnpm build:desktop bundles the desktop app with the command included. You can also use only the command-line tool; the desktop app is optional.
Connect an agent
The desktop app walks you through this on first launch: it detects installed agents, shows the exact file and entries it will add, and asks before writing. From a terminal, the same steps are:
runmarq collector start
runmarq integrations setup claude
runmarq integrations verifySetup prints the change and asks for confirmation. Add --dry-run to only preview, or --project <dir> to configure a single project instead of every project. Replace claude with codex or cursor for the other agents.
Hooks call a copy of runmarq kept in runmarq's data folder, so moving or updating the app does not break them. Existing hooks and settings are preserved and a backup is written before every change.
See your first estimate
Start a new session in the connected agent and send a prompt. The run appears in the desktop app and in runmarq status within a second, with an estimate that is refined as the agent works. The integration changes from “waiting for first event” to “connected” once that first event arrives.
runmarq status
runmarq historyEarly estimates are deliberately wide, because runmarq starts from conservative built-in values. They narrow as your own runs are recorded. How estimates work explains why.
More of the estimator switches on as history builds up: a phase simulation after ten runs with tool activity, a range calibrated to your machine after about 34 finished runs, and a learned model after 100. Insights → Estimation model shows which models are in use and what each one is waiting for.
Choose what is measured
Besides hook events, runmarq reads token counts from Claude Code and Codex transcripts, measures working-tree changes with git, and compares each prompt with earlier ones through a salted word vector. Each can be turned off in Settings → Estimation signals; estimates keep working without them, with less to go on.
Use it from the terminal
The desktop app makes the runmarq command available in new terminals during setup, or later with Settings → Use the runmarq command in new terminals.
runmarq wait returns when the run in progress ends, with exit code 0 only if it finished, so you can chain your next step onto it. runmarq statusline prints one line for your prompt, tmux or Claude Code's status line, and runmarq eval shows how the estimates have held up on your own runs.
runmarq wait && npm run deploy
runmarq statusline
runmarq evalCodex: start it through runmarq
Codex has no hook for “the session ended”. Starting Codex through runmarq lets it close runs cleanly when the process exits. Your terminal, keystrokes and exit code are passed through unchanged.
runmarq run -- codexCheck everything
runmarq doctorDoctor reports the collector, hook latency, each integration and any pending step, and exits with a nonzero status if something needs attention. Status, doctor, history and the integration commands accept --json for scripting.
Remove runmarq
runmarq forget
runmarq integrations remove claude
runmarq collector stoprunmarq forget deletes your history and needs the collector running, so it comes first; skip it to keep your history. Removing an integration deletes only the entries runmarq added. In the desktop app, also turn off Settings → Use the runmarq command in new terminals. To remove everything, delete the data folder afterwards: %LOCALAPPDATA%\runmarq on Windows, ~/Library/Application Support/runmarq on macOS, or ~/.local/share/runmarq on Linux.