Thanks for wanting to help. By participating you agree to the Code of Conduct.
Search existing issues before opening a new one. Support and docs pointers: SUPPORT.md.
- Bug reports and reproductions
- Fixes and tests (
go test ./...is the bar) - Docs (especially docs/api.md and the Quick Start in README.md)
- Fixtures when you change product behavior (
fixtures/parity/,fixtures/vertical/marketing/) - Vertical pack YAML — not per-vertical database kinds
Security issues: do not open a public issue. See SECURITY.md.
- Go 1.25+ (see
go.mod) - Docker (Compose path) or Postgres 17 with
pg_trgm(pgvectoroptional) - Python 3 (evals are stdlib-only; no
pip install)
git clone https://github.com/<your-fork>/brainy.git
cd brainy
git remote add upstream https://github.com/tryvinci/brainy.git
cp .env.example .env # optional; Compose works without itDocker (easiest):
docker compose up --build
curl -s http://localhost:8080/healthzFrom source: set BRAINY_DATABASE_URL, then:
export BRAINY_ENV=local
unset BRAINY_API_KEYS BRAINY_REQUIRE_API_KEY
go run ./cmd/api
BRAINY_WORKER_MODE=loop go run ./cmd/workerAuth: if BRAINY_API_KEYS is set, unauthenticated requests return 401. Local
no-auth is BRAINY_ENV=local with those vars unset. Keys are tenant_id:key
pairs (* matches any tenant).
Operator Postgres: docs/external-postgres-runbook.md.
gofmt -l .
go vet ./...
go test ./...go test ./... is what CI runs (.github/workflows/test.yml).
Postgres-backed tests use embedded PostgreSQL 17 (first run downloads a runtime
and is slow). Docker smoke: .github/workflows/docker-smoke.yml.
Evals need a live API:
python3 evals/run_eval.py --base-url http://localhost:8080
python3 evals/run_vertical_eval.py --base-url http://localhost:8080
python3 evals/run_opmem.py --base-url http://localhost:8080- Fork and branch from
dev(staging).mainis production. - Keep the change focused. One logical change per PR.
- Match surrounding Go style (
gofmt). No new dependencies unless they remove more complexity than they add. - New behavior needs a fixture when it touches ingest, search, recall, or packs.
- Update docs if you change HTTP contracts or pack format.
- Make sure
go test ./...is green.
Open the PR against dev. Use the PR template (summary, changes, test plan).
Use your user.name / user.email. Do not commit as the maintainer unless
they asked you to author on their behalf.
git config user.name "Your Name"
git config user.email "you@example.com"Automated maintainer agents follow AGENTS.md.
cmd/api,cmd/worker— binariesinternal/— Go packagespacks/— YAML vertical packsfixtures/— eval goldensevals/— HTTP eval harnesses (stdlib Python)docs/— human docs; start at docs/README.mddocs/research/— internal notes, not the getting-started path
- Packs live in
packs/{vertical}/v1/pack.yaml. - Do not add per-vertical Postgres
kindenums — primitives + labels. - Talk to maintainers before starting a second vertical pack.
Contributions are licensed under the Apache License 2.0 (same as the repository). Do not contribute code you cannot license that way. Cite the project with CITATION.cff.