- Rename setup.sh to install.sh (standardise with cf-orch installer pattern) - Remove hardcoded dev-machine path from activate_git_hooks(); go straight to .githooks/ core.hooksPath fallback — the absolute path was only valid on the author's machine and surprised self-hosters - Add capture_license_key(): optional CFG-XXXX-… prompt after setup_env(), writes CF_LICENSE_KEY + HEIMDALL_URL into .env when a valid key is entered - Fix next-steps port: read STREAMLIT_PORT from .env instead of hardcoding 8501 (Docker default is 8502; users who customise the port saw a wrong URL) - Update .env.example: STREAMLIT_PORT=8502 (Docker default, not bare-metal 8501) - Fix stale git clone URL in docs/getting-started/installation.md: git.circuitforge.io → git.opensourcesolarpunk.com/Circuit-Forge/peregrine - Update all setup.sh references across manage.sh, Makefile, CONTRIBUTING.md, README.md, and docs/ to install.sh Closes #71
2.2 KiB
Contributing to Peregrine
Thanks for your interest. Peregrine is developed primarily at git.opensourcesolarpunk.com. GitHub and Codeberg are push mirrors — issues and PRs are welcome on either platform.
License
Peregrine is licensed under BSL 1.1 — Business Source License.
What this means for you:
| Use case | Allowed? |
|---|---|
| Personal self-hosting, non-commercial | ✅ Free |
| Contributing code, fixing bugs, writing docs | ✅ Free |
| Commercial SaaS / hosted service | 🔒 Requires a paid license |
| After 4 years from each release date | ✅ Converts to MIT |
By submitting a pull request you agree that your contribution is licensed under the project's BSL 1.1 terms. The PR template includes this as a checkbox.
Dev Setup
See docs/getting-started/installation.md for
full instructions.
Quick start (Docker — recommended):
git clone https://git.opensourcesolarpunk.com/pyr0ball/peregrine.git
cd peregrine
./install.sh # installs deps, activates git hooks
./manage.sh start
Conda (no Docker):
conda run -n job-seeker pip install -r requirements.txt
streamlit run app/app.py
Commit Format
Hooks enforce Conventional Commits:
type: short description
type(scope): short description
Valid types: feat fix docs chore test refactor perf ci build
The hook will tell you exactly what went wrong if your message is rejected.
Pull Request Process
- Fork and branch from
main - Write tests first (we use
pytest) - Run
pytest tests/ -v— all tests must pass - Open a PR on GitHub or Codeberg
- PRs are reviewed and cherry-picked to Forgejo (the canonical repo) — you don't need a Forgejo account
Reporting Issues
Use the issue templates:
- Bug — steps to reproduce, version, OS, Docker or conda, logs
- Feature — problem statement, proposed solution, which tier it belongs to
Security issues: Do not open a public issue. Email security@circuitforge.tech.
See SECURITY.md.