Phasr is a local workspace for running multiple coding agents in parallel. It provides a single dashboard to launch tasks, isolate each task in its own git worktree, stream terminal output, and manage changes through an integrated git workflow.
Website: https://phasr.sh
Phasr is built for development workflows where multiple agent tasks run at the same time across one or more repositories. It helps you:
- run concurrent agent sessions without branch collisions
- isolate task execution in per-task worktrees
- monitor logs, status, and diffs in real time
- stage, commit, and publish changes from the same UI
- Create named workspaces mapped to local repository paths.
- Validate repository directories before task execution.
- Optionally initialize git for a workspace if a directory is not yet a repository.
- Persist workspace metadata locally for restart-safe operation.
- Create and run many tasks concurrently from one dashboard.
- Track task lifecycle states:
pending,running,stopped,completed,failed, andarchived. - Resume or stop tasks, archive finished work, and cleanly delete tasks.
- Restart recovery: tasks persisted as running are restored on app restart (best effort).
- Creates a dedicated branch and worktree for non-direct tasks.
- Uses branch naming based on task identity (for example
task/<name>with collision-safe suffixes). - Falls back to direct-repo execution when a repository has no commits yet.
- Removes managed worktree paths during task cleanup.
- Runs task commands in PTY-backed
zshsessions. - Supports live output streaming, terminal input, resize, and interrupt (
SIGINT). - Persists logs per task under the local data directory.
- Streams task events over SSE for responsive UI updates.
- Inspect staged and unstaged files.
- Stage, unstage, and discard file changes.
- View patch output and change statistics.
- Commit, push, pull, fetch, and inspect commit history from the UI.
- Default command presets in UI for common agent CLIs (
claude,codex,copilot,opencode,gemini). - Startup presets for repository preparation (for example
go-bootstrap,js-bootstrap,verify-and-test). - Extend presets with a local
presets.jsonin the Phasr data directory.
- Open task or workspace paths directly in supported IDEs/editors.
- Open paths in Terminal and copy paths from the context menu.
- Generate repository metadata links (repo, branch, PR) for GitHub/GitLab/Bitbucket remotes.
Phasr supports two runtime modes:
- Desktop app (
cmd/phasr-desktop, macOS only) - CLI-hosted web app (
cmd/phasr, serves dashboard atPHASR_ADDR)
- Go
1.25+ - Node.js
18+ npmgitzsh
- macOS (desktop runtime target)
- Xcode Command Line Tools (
xcode-select --install)
From the repository root:
./scripts/install-macos.shWhat this does:
- builds the UI and desktop binary
- exports
phasr.sh.appintodist/ - installs the app into
/Applications(or falls back to~/Applications) - attempts to create a
phasr-desktopCLI symlink in a writable bin directory
Launch after install:
open "/Applications/phasr.sh.app"If installed in ~/Applications, update the path accordingly.
make ui-install
make desktop-run- Start Phasr (desktop or CLI runtime).
- Create a workspace and select a local repository path.
- Choose an agent command and optional preset.
- Enter a prompt and run the task.
- Monitor terminal output and status in real time.
- Review diffs, stage changes, commit, and publish.
Phasr is configured through environment variables and optional CLI flags.
| Variable | Default | Description |
|---|---|---|
PHASR_ADDR |
127.0.0.1:7777 |
HTTP listen address for dashboard/API |
PHASR_DATA_DIR |
~/.phasr |
Root directory for local data |
PHASR_DEFAULT_EDITOR |
code |
Default editor command for "Open" actions |
-addrHTTP listen address-data-dirlocal data directory-editordefault editor command
- All CLI flags above
-titledesktop window title-widthinitial window width-heightinitial window height-debugenable webview devtools
Phasr stores runtime data in PHASR_DATA_DIR (default ~/.phasr):
tasks.jsontask metadata/stateworkspaces.jsonworkspace registrypresets.jsonoptional custom presetslogs/per-task logsworktrees/managed git worktrees
make ui-install
make ui-build
make build
go test ./...make desktop-build
make desktop-run- The runtime validates that compiled UI assets are up to date. If frontend sources changed, run
make ui-buildbefore starting. make runandmake desktop-runautomatically free port7777if another process is listening.
cmd/phasr # CLI-hosted web runtime
cmd/phasr-desktop # macOS desktop runtime
internal/api # HTTP server, handlers, embedded UI
internal/task # Task lifecycle and orchestration
internal/process # PTY process runtime and event streaming
internal/gitops # Git worktree management
internal/diff # Git diff/status/commit operations
internal/store # Local JSON persistence
scripts/ # Build/export/install scripts
- Security policy: SECURITY.md
- Contributing guide: CONTRIBUTING.md
- Code of conduct: CODE_OF_CONDUCT.md
- License: MIT