Thank you for your interest in contributing to THOR! This project aims to be the best open-source control center for NVIDIA Jetson devices on macOS.
git clone https://github.com/RobotFlow-Labs/thorapp.git
cd thorapp
make build
make test-unit
make test # Requires Docker Desktop for the Jetson simulators
make run # Launch the app- macOS 14+ (Sonoma) on Apple Silicon
- Swift 6.2+ —
xcode-select --install - Docker Desktop — required for the full simulator-backed test suite
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- macOS version, Swift version
- Relevant logs or screenshots
Open an issue with the enhancement label describing:
- The use case
- Which Jetson model(s) it applies to
- How it would work in the UI and/or CLI
- Fork the repo and create your branch from
main - Write code following existing patterns
- Add tests for new endpoints and features
- Ensure
make test-unitpasses - Ensure
make testpasses when Docker Desktop is running - Ensure
swift buildhas 0 warnings - Update the README and relevant docs if you change install, update, or release behavior
- Submit a PR with a clear description
- Public docs live under
docs/:docs/setup/for runbooksdocs/product/for PRDsdocs/release/for packaging and release operations
- Script entrypoints are grouped under
Scripts/dev,Scripts/release,Scripts/setup, andScripts/jetson-thor. - Legacy root script paths are kept as compatibility wrappers, but new automation should use the grouped paths.
- Swift: Follow Apple API Design Guidelines. Use
@Observable,@MainActor, structured concurrency. - Python: Follow PEP 8. Use type hints where practical.
- Views: One view per file. Use
GroupBoxfor cards, system colors, 8pt spacing grid. - Tests: Use Swift Testing framework (
#expect,#require). Integration coverage runs against the real Docker sims. - No mocks: All integration tests hit the real Docker Jetson simulator.
- Create or modify a router in
Agent/routers/ - Add the response model in
Sources/THORShared/Models/ - Add the client method in
Sources/THORShared/SSH/AgentClient.swift - Add a SwiftUI view or panel
- Add a thorctl command in
Sources/THORctl/main.swift - Add integration tests in
Tests/ - Update the Docker simulator if needed
For a public-release style smoke test:
make distThis produces app and CLI artifacts in dist/.
If you are validating a release path locally, run make test-unit first and make test when Docker Desktop is available.
By contributing, you agree that your contributions will be licensed under the MIT License.