Where to start
good first issue: small tasks for new contributors.documentation: changes to the docs and this site.help wanted: tasks where the maintainers want help.
For a feature, open an issue before you write the code.
Set up a development environment
You need Python 3.11 or later, uv, a PostgreSQL database and one agent CLI.
- Clone the repository and initialize the hub.
git clone https://github.com/arniesaha/drover.git
cd drover
uv sync --extra dev
git config core.hooksPath .githooks
export DROVER_CONTROL_DSN='postgresql://USER:PASSWORD@HOST/DATABASE'
uv run drover-server init
uv run drover-server control-store initThe core.hooksPath line enables a pre-commit hook. The hook rejects a commit that contains a private path, a private address or a credential.
- Start the hub and a host.
# terminal 1: the hub
uv run drover-server run
# terminal 2: a local host
uv run drover-harnessd \
--host-id local-dev \
--display-name "Local Dev Host" \
--kind macos \
--listen 127.0.0.1:7081 \
--local-url http://127.0.0.1:7081 \
--central-url http://127.0.0.1:7080iOS app
You need Xcode 16 or later.
brew install xcodegen
cd apps/drover
xcodegen generate
open Drover.xcodeprojSelect your Apple development team and run the Drover scheme. See the iOS guide.
This site
The site is in site/ in the same repository.
cd site
npm ci
npm run dev # local preview
npm test # build, then run the checksRun the tests
uv run pytest -n auto # all Python tests
uv run pytest tests/test_check_public_release.py # one module
uv run black --check .
uv run isort --check-only .
make docs # Markdown links- Format Python with Black at line length 88. Sort imports with isort.
- Tests that need PostgreSQL skip when it is not available. Continuous integration (CI) runs them.
Open a pull request
- Make sure the tests pass.
- Update the docs for each change a user can see.
- Add an entry below
[Unreleased]inCHANGELOG.md. - Describe the change and how you validated it.
- Identify breaking changes.
Use Conventional Commits, for example fix(harnessd): handle PTY session termination gracefully. One reviewer must approve.
Code of conduct
Be respectful and professional. See the code of conduct.
Security reports
Do not report a vulnerability in a public issue. Follow SECURITY.md. Do not put credentials, private addresses or session content in an issue.