Desktop · local-first · v0.97.0

Stop juggling terminal tabs.Run every script from one window.

Runara is a desktop app that detects scripts across npm, pnpm, yarn, and bun workspaces, lets you start and stop them together, and streams aggregated logs into one view — all local, nothing leaves your machine.

macOS Apple Silicon now · Windows & Linux coming soon · downloads

storefront — Start all
Runara running a storefront monorepo with web, api, worker, and storybook scripts plus aggregated logs

00 — The mess

Your monorepo is fine.Your terminals are not.

pnpm --filter web dev in one tab. API in another. Worker, Storybook, Stripe listen, a Python ingest job — each with its own cwd, env, and habit of dying silently when you look away.

Runara turns that pile into a project: pick a directory, choose the scripts that matter, hit Start all, and watch one filtered log stream instead of alt-tabbing through a dock of Terminal.app windows.

Features

Built for the way local stacks actually run.

01 — Project setup

Point at a folder. Get a checklist.

The add-project wizard scans for package.json scripts at the root and across monorepo packages, groups them by path, and lets you add arbitrary custom commands with their own working directory.

  • Native directory picker + optional project name
  • Re-detect scripts anytime after creation
  • Custom shell commands alongside detected npm scripts

// runtime sketch

project.dir + script.subdir

→ spawn with hydrated PATH + optional nvm use

→ stream batches over IPC · NDJSON on disk

→ stop: SIGTERM → 5s → SIGKILL

Local processes only · no remote agents

02 — Process control

Start, stop, restart — one script or all of them.

Every script card shows status, PID, and the command that actually runs. Start all skips already-running processes. The sidebar shows traffic-light status per project without opening it.

  • Per-script Start / Stop / Restart
  • Project-wide Start all / Stop all
  • Graceful SIGTERM with a 5s kill fallback
Runara payments-service project with a failed migrate script and red-highlighted error logs

03 — Aggregated logs

One stream. Filter by script. Keep JSON readable.

Stdout, stderr, and system lifecycle lines land in a single panel with timestamps and script tags. Filter to one or many scripts. JSON objects and arrays expand into a collapsible tree you can copy.

  • Sticky-bottom scroll that pauses when you read up
  • Stderr highlighted; system lines muted
  • Logs written to disk and reloaded after restart
Runara data-pipeline project showing pretty-printed JSON logs from ingest and dashboard scripts

04 — Env & alerts

Per-script secrets. Notifications when it matters.

Attach environment variables to any script, import a .env file, and keep values encrypted with the OS keychain via Electron safeStorage. Opt into desktop notifications on finish or error — user-initiated stops stay quiet.

  • Key/value editor with show/hide
  • .env import with comment and export support
  • Per-script finish and error notification toggles

// runtime sketch

project.dir + script.subdir

→ spawn with hydrated PATH + optional nvm use

→ stream batches over IPC · NDJSON on disk

→ stop: SIGTERM → 5s → SIGKILL

Local processes only · no remote agents

Detection

Monorepo-aware by default.

Package managers are inferred from packageManager, engines, then lockfiles. Scripts come from package.json#scripts. Everything else is a custom command you add once.

Package managers

  • npm

    package-lock.json · npm-shrinkwrap.json

  • pnpm

    pnpm-lock.yaml

  • yarn

    yarn.lock

  • bun

    bun.lock · bun.lockb

Workspaces

  • pnpm workspaces

    pnpm-workspace.yaml

  • npm / yarn / bun

    package.json#workspaces

  • Lerna

    lerna.json#packages

  • Rush

    rush.json project folders

  • Fallback scan

    nested package.json · depth ≤ 6

Custom commands

Not auto-detected — and that is intentional. Add them with a name, shell string, and optional subdirectory.

  • Go · Python · Make · Docker Compose
  • Stripe CLI · Streamlit · anything shell

Under the hood

Details that show up at 2am.

Runara is opinionated about process lifetime, PATH, and log durability — the boring parts that decide whether a local runner feels trustworthy.

Local-first

Nothing is sent to a remote service. Projects and scripts live in a local SQLite database. Env values are encrypted with the OS keychain through Electron safeStorage.

  1. 01

    Process groups that actually die

    Unix spawns detached and signals the whole group. Windows uses taskkill /T. No orphaned Vite children after Stop.

  2. 02

    Login-shell PATH

    On macOS and Linux, Runara hydrates environment from your login shell so Homebrew, nvm, and friends resolve when launched from the Dock.

  3. 03

    .nvmrc aware

    Walks up from the script cwd to the project root, then wraps the command with nvm use when a version file is present.

  4. 04

    Durable NDJSON logs

    Logs land under app userData, rotate at 10 MB, and reload when you reopen a project — including after a restart.

  5. 05

    Quiet high-volume streams

    IPC batches log lines per event-loop tick (up to 1000). ANSI escapes are stripped; children get NO_COLOR / TERM=dumb.

Downloads

Grab a build.

macOS Apple Silicon ships today. Windows and Linux slots are wired up and waiting — flip them on when binaries land. Previous versions stay listed so you can roll back.

Latest

v0.97.0

Sep 9, 2026

macOS Apple Silicon build.

What's new

New

  • Sort sidebar projects and templates by name, updated, or created, with ascending or descending order; adding or editing a script counts as a project update
  • Settings page with General and Keyboard shortcuts sections, opened with ⌘,/Ctrl+,, covering clear logs on restart, open at login, and start minimized
  • Command palette supports project submenus, search-nested scripts, ⌘1–9 quick keys, and labeled Run/Restart ⌘R on highlighted scripts
  • Swipe left/right on macOS (or mouse back/forward on Windows) to move through navigation history

Improved

  • Stopping a script yourself now sends a "stopped" notification, while restart, quit, and delete stay quiet

Previous versions

  • v0.96.0

    Sep 3, 2026

    macOS Apple Silicon build.

    What's new

    New

    • Project status bar and command palette (⌘I) let you switch git branches with search and fetch
    • Project status bar shows the detected package manager and Node version when the project declares them
    • Shortcuts keyboard shortcuts dialog (⌘E)

    Improved

    • What's new tags each highlight as new, update, fix, or breaking
  • v0.95.0

    Sep 2, 2026

    macOS Apple Silicon build.

    What's new

    New

    • Edit a script's name, command, and subdirectory from its card
    • Add and edit multiline script commands
    • Create reusable command templates with detected variables, types, and optional defaults
    • Add a project script from a template, set or prompt for variables at start, and remember values separately from template defaults

    Fixed

    • Runara no longer crashes when a script prints its last output while exiting, and those final lines now show up in the log

FAQ

Straight answers.