Skip to content

Repository files navigation


Dray

A desktop home for your coding agents.

Tauri React Vite Version License

Overview

Dray wraps coding-agent CLIs in a native chat UI, giving you a desktop home for running and managing coding-agent sessions. The current harness integrates with Pi.

This project is a fork of monorepo-labs/dray.

License

This project is licensed under the Apache License 2.0. See LICENSE.

Features

  • Persistent multi-session workspace with search, pinning, settling, forks, nested sessions, unread/waiting state, and desktop notifications.
  • Local Sessions inside attached projects, with project and Git branch switching.
  • Isolated Cloud Sessions that run Pi in Docker with their own persistent workspace volume.
  • Model and reasoning/effort controls, configurable permission modes, context usage, queued follow-ups, and generated session titles.
  • Rich chat transcripts with Markdown, syntax highlighting, reasoning, tool calls, file edits, diffs, subagents, background tasks, images, permission requests, and structured questions.
  • File/image attachments, drag and drop, @file fuzzy search, /commands, and $skills discovered from Pi.
  • Repository Changes view for uncommitted work, commit history, file lists, and highlighted diffs.
  • Turn-scoped change tracking backed by Git snapshots, so completed-turn diffs stay stable after later edits.
  • Git handoff actions for commit, push, and pull-request workflows.
  • GitHub pull request panel through gh, including checks, comments/reviews, draft/ready state, reopen, and merge controls.
  • Themes, native window integration, keyboard shortcuts, sounds, notices, and safe quit handling while work is active.

Tech stack

Layout

Path What
apps/desktop The Tauri app. React 19 + Vite frontend, Rust backend.
packages Shared code. Empty until something is genuinely wanted twice.
AGENTS.md Detailed architecture, component, feature, and agent guide.

Development

Install dependencies from the root. The lockfile covers the whole workspace.

pnpm install

Start the app from the root.

pnpm app           # desktop app (Tauri + Vite), with hot reload
pnpm app:no-watch  # desktop app without frontend or backend auto-reload

Commands beyond starting an app should be run from its own directory, because tauri.conf.json, .cargo/config.toml, and scripts/install.ps1 resolve their paths against it:

cd apps/desktop && pnpm tauri build
cd apps/desktop/src-tauri && cargo test

Cloud sandbox

Cloud Sessions run Pi in Docker without mounting or cloning the selected project. The sandbox image includes Java 21, Java 25, Node.js 24, GitHub CLI, and Pi. Pi's host ~/.pi/agent directory is mounted read-only as a seed so extensions, settings, and authentication are available without sharing session history. GitHub authentication follows Agentsmith: GITHUB_TOKEN is passed only to the container and the entrypoint exports it as GH_TOKEN, runs gh auth setup-git, and rewrites SSH GitHub URLs to HTTPS.

Build the image locally (Docker Desktop must be running):

pnpm build:sandbox

The build runs from the host on Windows, macOS, and Linux. On Windows it uses the same Docker daemon (Docker Desktop's WSL 2 backend) that Cloud Sessions run on, so no separate WSL setup is needed — the image is built where it will be used.

Use DRAY_CLOUD_IMAGE to select a different image tag and GITHUB_TOKEN (or a logged-in gh) to provide the token passed to Cloud containers.

Releasing the app

Tag vX.Y.Z. The version in the tag has to match apps/desktop/src-tauri/tauri.conf.json. Release notes are generated from the commits included in the release.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages