Skip to content

danielss-dev/strand

Repository files navigation

Strand

A fast, keyboard-first Git client — built for reviewing what AI coding agents do to your code.

CI License: AGPL-3.0

Website · Download · Roadmap · Commercial license

Strand is a native, cross-platform Git client (Tauri 2 + Rust + React) with a dedicated surface for reviewing an agent's changes: whole-file-context diffs, a review queue, and worktree-aware baselines that include what the agent already staged or committed. It's also a complete everyday Git client — staging, commit graph, interactive rebase, stashes, tags — and it's keyboard-first, but never keyboard-only: almost every action works from the keyboard alone, and the mouse stays first-class.

Features

  • Review view (⌘4) — read an agent's changes as whole files with the edits inline, not isolated hunks. A file-tree queue tracks what you've reviewed, and a pinnable baseline captures everything since a commit — including work the agent already staged or committed.
  • Worktrees (⌘5) — an overview of every worktree with its branch, ahead/behind, dirty count, and one-click Review pinned where the branch diverged from main — built for reviewing agents' per-feature worktrees. Worktree tabs of one repo group together in the tab strip.
  • Everyday Git — staging with per-change-block stage / discard / unstage inline in the diff, fetch / pull / push with streaming progress, branches, tags, stashes, remotes, cherry-pick, revert, merge, and a fully keyboard-operable interactive rebase (reorder, reword, squash, fixup, drop) with conflict-pause Continue / Abort.
  • Commit graph — SVG lanes with branch/tag chips, inline stash nodes, a resizable commit detail panel, in-graph search by message / author / hash, and a reflog browser for recovering commits orphaned by a reset or rebase.
  • Command palette (⌘K) — fuzzy search across commands, branches, tags, files, commits, and recent repos, with scope filtering and full keyboard + screen-reader operability.
  • File view — highlighted source, --follow history, compare any two revisions, blame, and rendered previews for markdown and SVG.
  • Comfortable to live in — multi-repo tabs persisted across launches, native macOS menubar, open in your editor or terminal, settings (⌘,) for appearance / diff / git / integrations, in-app updates.
  • Fast by design — reads go through gix, writes through git2 and your system git. Performance targets live in PRD.md §8 and are measured in docs/perf-baseline.md.

Status

Strand is in alpha. It opens and works on large real-world repos daily, but expect rough edges. The bigger known gaps: the file-tree sidebar, full-history content search (-G/-S), stash-to-branch, and interactive-rebase edit (pause to amend). Strand is currently dark-only; theming arrives with the public beta. See ROADMAP.md for the milestone view and TASKS.md for the granular list.

Install

Download the latest release for macOS (universal), Windows, or Linux (.deb / .rpm / .AppImage) from GitHub Releases.

Building from source

Prerequisites:

pnpm install
pnpm tauri:dev     # full app: Vite + Rust + native shell
pnpm dev           # frontend only, in a regular browser
pnpm tauri:build   # installers in target/release/bundle

The frontend detects when it isn't running inside Tauri and disables IPC calls, so pnpm dev is useful for UI work without a Rust build.

Project layout

strand/
├── crates/
│   ├── strand-core/    # Git engine (gix for reads, git2 for writes)
│   └── strand-tauri/   # Tauri 2 app shell + IPC commands
├── ui/                 # Vite + React + TypeScript frontend
├── website/            # landing page for strand.danielss.dev (no build step)
├── docs/               # design notes, perf baseline, packaging
├── PRD.md              # product spec
├── ROADMAP.md          # milestones and status
├── TASKS.md            # granular work list
└── AGENTS.md           # working agreement for AI/dev agents

Contributing

Issues and pull requests are welcome. Before diving in:

  • PRD.md explains what Strand is and the bar it has to clear — performance targets in §8 are not aspirational.
  • AGENTS.md is the working agreement. It's written for AI agents but applies to humans too: surgical diffs, simplicity first, and every new surface keyboard-operable.
  • The visual identity lives in ui/src/styles/ as design tokens — no hardcoded colors.

License

Strand is dual-licensed:

  • AGPL-3.0 for the public distribution. Anyone can read, build, modify, and use the source under the standard AGPL terms.
  • Commercial license (one-time purchase) for companies that prefer not to take on AGPL obligations or want to support development.

The app is fully functional for everyone — no feature gating, no nag dialogs, no trial period. The commercial license is honor-system: free for individuals, appreciated for company use. See COMMERCIAL.md for details.