ruri

ruri

One desktop workspace for all your projects — each one lead you talk to, with a team of agents behind it.

The peek band. A picture in ruri's title bar, opened by a hover. Any picture or GIF you give it, one per theme. Paintings on this page by justin06lee

Projects are folders

Each holds its own sessions, side by side: named for you, warm in the background, back after a relaunch.

Any harness

Claude Code, Codex, OpenCode, Gemini or any ACP agent, picked per chat from one dropdown.

A queue you can steer

Line up prompts while a turn runs. Reorder, merge and edit them, or cut in with ⌘Enter.

Rewind anything

ruri's own checkpoints put files, commits and context back, on every harness. Fork at any turn.

The bridge

A session opens what it built in a hidden window, clicks through it, and looks.

A memory that grows

Catch-up notes, a sheet for every layer and a component library, kept for whoever comes next.

A lead, and a team behind it

Every project is one chat: its lead. You talk to it; it hands each job to the teammate whose layer it is, and brings the answer back. Teammates sleep between jobs, wake when they're messaged, and all of them can work at once.

  • Leadtalks with you, hands out jobsat work
  • Webthe page you're readingat work
  • Serverthe API behind itasleep
  • Liaisonjobs from other projectsasleep
Cats in a sunlit tatami room, each busy with something of its own
A wooden house full of cats in the afternoon sun: some keeping watch, some asleep

The dragon gauges

Your context and your account's limits, either side of the composer. Each dragon fills from his feet up, and past 80% he starts to sweat.

Late sun across a wooden veranda and its shoji screens

Install

Built on your machine with one command: a Mac with Apple silicon, or Linux on x64 or arm64.

ruri runs the coding CLI you already use, so have one signed in: Claude Code, Codex, OpenCode, Gemini or any ACP agent.

Build it, install it, open it

You'll need bun, and on Linux Node.js 20 or later. make builds ruri, installs it and opens it; make update brings it up to date later. On a Mac it signs ruri with a local identity, so macOS remembers what you let it do.

$ git clone https://github.com/justin06lee/ruri.git
$ cd ruri
$ make