Thanks for your interest in contributing to amesh! This guide will help you get started.
- Bun 1.3+
- Git
git clone https://github.com/ameshdev/amesh.git
cd amesh
bun install
bun run build
bun run testpackages/
core/ — crypto primitives (sign, verify, HMAC, HKDF, ECDH)
keystore/ — key storage drivers (Secure Enclave, TPM, encrypted file)
cli/ — amesh CLI (oclif)
cli/ — unified amesh CLI + agent daemon
sdk/ — signing fetch client + verification middleware
relay/ — WebSocket relay for device pairing
- Fork the repository and create a branch from
main - Make your changes — keep commits focused and atomic
- Run checks before pushing:
bun run build # TypeScript compilation
bun run test # All tests
bun run lint # ESLint + Prettier- Open a pull request against
main
- Keep PRs focused — one concern per PR
- Include tests for new functionality
- Update documentation if you change user-facing behavior
- All CI checks must pass
- Bug fixes — always welcome
- Tests — especially adversarial/edge case tests
- Documentation — typo fixes, clarifications, new examples
- New keystore drivers — Windows DPAPI, Android Keystore, etc.
- SDK ports — Python, Go, Rust verification middleware
If you're considering a large change, open a discussion first so we can align on the approach.
- TypeScript with strict mode
- ESLint + Prettier (config at repo root)
bun run lintmust pass with no warnings- Prefer explicit types at module boundaries, inferred types internally
Changes to cryptographic code require extra scrutiny:
- Reference the relevant section of
docs/protocol-spec.md - Explain why the change is correct in the PR description
- Pin exact versions for
@noble/*dependencies — never use^ - Include test vectors where applicable
Use GitHub Issues. Include:
- amesh version (
amesh --version) - OS and architecture
- Steps to reproduce
- Expected vs actual behavior
See SECURITY.md — do not open public issues for vulnerabilities.
By contributing, you agree that your contributions will be licensed under the MIT License.