https://github.com/devaryakjha/bonsai
Native macOS Git client
https://github.com/devaryakjha/bonsai
git-client macos open-source swiftui
Last synced: 7 days ago
JSON representation
Native macOS Git client
- Host: GitHub
- URL: https://github.com/devaryakjha/bonsai
- Owner: devaryakjha
- License: mit
- Created: 2026-05-02T16:51:30.000Z (19 days ago)
- Default Branch: main
- Last Pushed: 2026-05-14T07:55:05.000Z (8 days ago)
- Last Synced: 2026-05-14T09:44:20.252Z (8 days ago)
- Topics: git-client, macos, open-source, swiftui
- Language: Swift
- Homepage:
- Size: 15.2 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
Bonsai
A native macOS Git client, built in the open as a free alternative to Fork.
Status
·
Install
·
Highlights
·
Build
·
Contributing
## Status
Bonsai is under highly active development. The v0 app surface is implemented,
and the first GitHub release contains a Developer ID signed and notarized macOS
archive.
The v0 goal is practical feature parity with Fork's public macOS feature set:
repository management, commit history, staging, rich unified and split diffs,
branch/tag/remote workflows, stashes, merge/rebase/cherry-pick/revert,
submodules, reflog recovery, file history, blame, conflict assistance, Git-flow,
Git LFS, GPG signing, and provider notifications.
## Install
Download the latest notarized macOS disk image from
[GitHub Releases](https://github.com/devaryakjha/bonsai/releases/latest).
Open the DMG, then drag `Bonsai.app` to the Applications shortcut.
For `v0.1.0`, the released assets are:
- [`Bonsai.dmg`](https://github.com/devaryakjha/bonsai/releases/download/v0.1.0/Bonsai.dmg)
- [`Bonsai.release.plist`](https://github.com/devaryakjha/bonsai/releases/download/v0.1.0/Bonsai.release.plist)
The release manifest records the build number, source commit, archive size,
SHA-256, signing kind, team identifier, and notarization state.
## Highlights
- Native SwiftUI macOS app, packaged from SwiftPM.
- Split and unified diff views with Git diff algorithm controls.
- Commit history with graph lanes, search, changed-file inspection, and revision
actions.
- Working tree staging, unstaging, patch copy, discard, ignore, and conflict
flows.
- Branches, tags, remotes, worktrees, submodules, stashes, Git LFS, and GitHub
repository/notification workflows.
- Spec-driven development: every meaningful feature lands with a focused spec
in `Specs/`.
## Build
Requirements:
- macOS 14 or newer
- Xcode command line tools
- Swift 5.9 or newer
Build and launch Bonsai:
```sh
make run
```
Build, launch, and verify that the app process is running:
```sh
make run-verify
```
Build and validate a release-style app bundle without Apple credentials:
```sh
make release-verify
```
Export the fallback `.icns` from the canonical Icon Composer document:
```sh
make app-icon
```
Run the large repository performance smoke:
```sh
make perf
```
Check local distribution credential readiness:
```sh
make release-doctor
make release-check-credentials
make release-github-doctor
make release-secret-template
make release-secrets-dry-run
make release-runner-workflow
make release-runner
```
The credential checks are expected to fail on machines without a Developer ID
Application certificate and a valid notarytool profile. The workflow runner
check only verifies the no-secret Jarvis toolchain required by GitHub Actions.
Maintainer release setup is documented in `Documentation/ReleaseChecklist.md`,
`Documentation/ReleasePackaging.md`, and `Documentation/GitHubReleaseSetup.md`.
The manual GitHub `Release` workflow defaults to a Jarvis dry run that builds
and verifies the credential-free archive without entering the protected release
environment or reading Apple release secrets.
Run the standard validation gates before submitting changes:
```sh
make validate
make run-verify
make release-verify
make release-verify-archive
make release-verify-artifacts
```
## Development
Bonsai is developed spec-first. Start with the relevant document in `Specs/`,
keep implementation slices small, and commit checkpoints as work lands.
Pull requests run on the Jarvis self-hosted macOS ARM64 runner for shell syntax,
`swift test`, the large-repository performance smoke, and the credential-free
release bundle, archive, and artifact verifiers.
Useful project paths:
- `Sources/Bonsai/App` - app entry point, commands, and scenes
- `Sources/Bonsai/Views` - native macOS SwiftUI interface
- `Sources/Bonsai/Stores` - observable app state and Git operation flow
- `Sources/Bonsai/Services` - Git, GitHub, and process execution services
- `Sources/Bonsai/Support` - parsers, rendering helpers, launchers, and policies
- `Tests/BonsaiTests` - focused parser, command, workflow, and integration tests
- `Documentation/ReleasePackaging.md` - release packaging, signing, notarization,
and artifact verification workflow
- `Documentation/ReleaseChecklist.md` - first public release checklist
- `VERSION` - bundle marketing version used by package scripts
## Contributing
Contributions are welcome. Please read
`CONTRIBUTING.md` before opening a pull request, and keep UI changes aligned with
the interface standards and existing macOS conventions.
## Security
See `SECURITY.md` for supported versions and vulnerability reporting guidance.
## License
MIT. See `LICENSE`.