Ghostty is a personal project maintained in free time by its contributors. Please take a few minutes to read this guide to ensure your contributions can be reviewed and accepted efficiently. Thank you!
The Critical Rule
Using AI to write code is acceptable, but you must:- Fully understand all code you submit
- Be able to explain design decisions
- Answer questions about your implementation
- Have interrogated the AI to grasp all edge cases and effects
First-Time Contributors: Vouch System
Ghostty uses a vouch system for first-time contributors to maintain code quality:Open a Vouch Request
Open a discussion in the “Vouch Request” category following the template.
Describe your contribution
Keep it concise. Explain:
- What you want to change
- Why it’s valuable
- Your approach (if applicable)
Denouncement System
If you repeatedly break the rules or submit low-quality work, you will be denounced:- Your username will be added to a public list of bad actors
- All future interactions will be automatically closed
- Other projects may use this list to block you automatically
We love helping junior developers learn and grow! If you want to learn, don’t rely on AI - ask for help and guidance instead. The denouncement system is for bad actors, not learners.
Quick Guide for Contributors
I’d like to contribute code
Find an actionable issue
Browse the issue tracker. All issues are actionable - every issue is ready to be worked on.Look for issues tagged “contributor friendly” if you’re new.
Read the development guide
See HACKING.md for technical details on building and testing.
Submit a pull request
Follow the Pull Request Guidelines below.
I’d like to translate Ghostty
Translations are welcome! See the Translator’s Guide. Translations usually don’t need issue triage and can be submitted directly as pull requests. Make sure to follow the Style Guide.I have a bug to report
Search existing issues
Search both open and closed issues and discussions - your bug might already be fixed!
Open an Issue Triage discussion
If not found, open an “Issue Triage” discussion and fill in the template completely.
If there’s an existing open issue that matches your problem, don’t comment unless you have valuable insight. Use the upvote button or emoji reactions instead to avoid spamming all participants.
I have a feature request
Open a Feature Request discussion
If not found, open a discussion in the “Feature Requests, Ideas” category.
I have a question
For general questions:- Open a Q&A discussion
- Join the Discord Server and ask in the
#helpforum channel
If your question is about a missing feature, use “Feature Requests”. If Ghostty is behaving unexpectedly, use “Issue Triage”.
Important Patterns
Issues are Actionable
The Ghostty issue tracker is for actionable items only.- Discussions are for bug reports, feature requests, and questions
- Issues are for well-understood, actionable work
- Once a discussion reaches a clear action item, it’s moved to the issue tracker
- This makes it easy to find work that’s ready to start
Pull Requests Implement an Issue
Pull requests should be associated with a previously accepted issue. Issues tagged with “feature” represent accepted, well-scoped feature requests. If you implement an issue as described, your PR will likely be accepted.Pull requests are NOT a place to discuss feature design. Use discussions and link to your branch instead.
AI Usage Policy
Ghostty has strict rules for AI usage. Please read the full AI Usage Policy. Key rules:- You must fully understand all code you submit
- No AI-generated media (art, images, videos, audio)
- Issues and discussions can use AI but must be human-reviewed and edited
- Bad AI drivers will be denounced
AI Assistance for Development
If you’re using AI to help develop Ghostty:- Ghostty provides an AGENTS.md file for AI agents
- Commands in
.agents/commandshave vetted prompts for common tasks - Example:
/gh-issue <number/url>for diagnosing GitHub issues (requiresghCLI)
Pull Request Guidelines
Development Workflow
For technical details on building, testing, and developing Ghostty: Read HACKING.md - includes:- Building from source
- Development dependencies
- Running tests
- Memory leak checking
- Logging and debugging
- Platform-specific requirements
Code Standards
Zig Code
- Follow Zig style guidelines
- Run
zig fmt .before committing - Write tests for new functionality
- Document public APIs
Documentation and Resources
- Format with Prettier:
prettier --write . - Match the Prettier version in
nix/devShell.nix - Use clear, concise language
Commit Messages
- Summarize the change (add, update, fix, refactor, etc.)
- Focus on “why” not “what”
- Reference issue numbers
- Keep first line under 72 characters
Contributing Documentation
Documentation contributions are welcome:- Fix typos or unclear explanations
- Add examples
- Improve configuration documentation
- Write tutorials or guides
- Main docs: Check the Ghostty website repository
- Development docs:
HACKING.md,CONTRIBUTING.md - Translation docs:
po/README_TRANSLATORS.md,po/README_CONTRIBUTORS.md
Getting Help
If you need help contributing:- Comment on the issue you’re working on
- Ask in Discord: Ghostty Discord Server - use the
#developmentchannel - Open a Q&A discussion: GitHub Discussions
Maintainers and community members are happy to help, especially if you’re learning. Don’t be afraid to ask questions!
Resources
- Full Contributing Guide - Complete rules and guidelines
- HACKING.md - Technical development guide
- AI Usage Policy - Detailed AI rules
- Translator’s Guide - Translation contributions
- GitHub Issues - Actionable work
- GitHub Discussions - Community discussion
- Discord Server - Real-time community help
Thank You
Thank you for contributing to Ghostty! Your contributions help make Ghostty better for everyone.Remember: quality over quantity. A single well-thought-out contribution is worth more than many rushed ones.