# Contributing to Hermes Desktop Thanks for your interest in contributing to Hermes Desktop! Whether it's a bug fix, a new feature, improved docs, or just a typo — every contribution helps. ## Languages - English: `CONTRIBUTING.md` - 简体中文: `CONTRIBUTING.zh-CN.md` - 日本語: `CONTRIBUTING.ja-JP.md` ## Getting Started 1. **Fork** the repository and clone your fork locally. 2. **Install dependencies:** ```bash npm install ``` 3. **Start the app in development mode:** ```bash npm run dev ``` ## Making Changes 1. Create a new branch from `main`: ```bash git checkout -b your-branch-name ``` 2. Make your changes. Keep commits focused — one logical change per commit. 3. Run checks before submitting: ```bash npm run lint npm run typecheck ``` 4. Test your changes locally with `npm run dev` to make sure everything works as expected. ## Submitting a Pull Request 1. Push your branch to your fork. 2. Open a pull request against `main` on the upstream repo. 3. Write a clear description of what you changed and why. 4. If your PR addresses an open issue, reference it (e.g., `Fixes #42`). ### Keep Pull Requests Small Please keep PRs small and focused — they are much easier to review and merge. PRs that touch too many files or bundle unrelated changes will likely be asked for splitting up or may not be accepted. - Stick to one logical change per PR (one fix, one feature, one refactor). - If you find yourself touching many unrelated files, split the work into multiple PRs. - Avoid bundling formatting/style sweeps with functional changes. - Smaller PRs get reviewed and merged faster. A maintainer will review your PR and may request changes. Once approved, it will be merged. ## Reporting Bugs Found a bug? [Open an issue](https://github.com/fathah/hermes-desktop/issues/new) with: - A clear title and description. - Steps to reproduce the issue. - What you expected to happen vs. what actually happened. - Your OS and app version, if relevant. ## Requesting Features Have an idea? [Open an issue](https://github.com/fathah/hermes-desktop/issues/new) and describe: - The problem you're trying to solve. - How you'd like it to work. - Any alternatives you've considered. ## Project Structure ```text src/main/ Electron main process, IPC handlers, Hermes integration src/preload/ Secure renderer bridge src/renderer/src/ React app and UI components resources/ App icons and packaged assets build/ Packaging resources ``` ## Code Style - The project uses TypeScript, React, and Electron. - Run `npm run lint` to check for lint errors. - Run `npm run typecheck` to verify type safety. - Follow existing patterns and conventions in the codebase. ## Community - Join the [Nous Research Discord](https://discord.gg/NousResearch) to chat with other contributors. - Check the [documentation](https://hermes-agent.nousresearch.com/docs/) for more context on how Hermes works. ## License By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).