Skip to content

Getting started

Run from source

Grove supports Python 3.11 through 3.13. Python 3.11 is recommended when testing alongside Acorn.

git clone https://github.com/trbouma/grove.git
cd grove
poetry install
cp .env.example .env
poetry run uvicorn grove.main:app \
  --host 127.0.0.1 \
  --port 8000 \
  --reload

Check the service:

curl http://127.0.0.1:8000/health

Expected response:

{"status":"ok"}

FastAPI's generated API documentation is available at http://127.0.0.1:8000/docs.

Run the tests

poetry run pytest
poetry run ruff check .

The tests exercise upload, retrieval, HEAD, byte ranges, authorization, server scoping, expiry, hash mismatch, size limits, preflight, Acorn-compatible upload, shared ownership, deletion, persistence, and CORS.

Run with Docker Compose

cp .env.example .env
docker compose up --build -d
docker compose ps
docker compose logs -f grove

The default bind is loopback-only:

127.0.0.1:8000 -> container:8000

Use a reverse proxy for public HTTPS rather than exposing the development server directly.

Preview this documentation

poetry install --with docs
poetry run mkdocs serve

Then open http://127.0.0.1:8000.