Prerequisites
Before you begin, ensure you have the following installed:- macOS 14+
- Xcode 15+
- Zig - Install via Homebrew:
brew install zig
Getting started
1. Clone the repository
Clone the repository with submodules:2. Run the setup script
Initialize submodules and build dependencies:- Initialize git submodules (ghostty, homebrew-cmux)
- Build the GhosttyKit.xcframework from source
- Create necessary symlinks
3. Build and run
Launch the debug app:Development scripts
The following scripts help streamline development:| Script | Description |
|---|---|
./scripts/setup.sh | One-time setup (submodules + xcframework) |
./scripts/reload.sh | Build and launch Debug app |
./scripts/reloadp.sh | Build and launch Release app |
./scripts/reload2.sh | Reload both Debug and Release |
./scripts/rebuild.sh | Clean rebuild |
Rebuilding GhosttyKit
If you make changes to the ghostty submodule, rebuild the xcframework:Running tests
Basic tests (run on VM)
UI tests (run on VM)
Working with the Ghostty submodule
Theghostty submodule points to manaflow-ai/ghostty, a fork of the upstream Ghostty project.
Making changes to ghostty
Keeping the fork updated
To sync with upstream Ghostty:See
docs/ghostty-fork.md in the repository for details on fork changes and conflict notes.Ways to contribute
There are many ways to get involved with cmux:Community engagement
- Follow @manaflowai or @lawrencecchen on X for updates
- Join the conversation on Discord
- Participate in GitHub discussions
- Share what you’re building with cmux
Code contributions
- Fix bugs and submit pull requests
- Add new features that align with cmux’s philosophy
- Improve documentation
- Write tests
Bug reports and feature requests
- Create detailed GitHub issues
- Include reproduction steps for bugs
- Provide context and use cases for feature requests
Development guidelines
When contributing code:- Follow existing code style and conventions
- Write clear commit messages
- Test your changes thoroughly
- Update documentation as needed
- Keep changes focused and atomic
License
By contributing to this repository, you agree that your contributions are licensed under the project’s GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).