A thin FastAPI wrapper around Kerykeion
(itself built on pyswisseph/Swiss Ephemeris) that computes birth charts and
renders chart-wheel SVGs.
Kerykeion is AGPL-3.0, because it depends on pyswisseph. This service
imports Kerykeion directly, so it is AGPL-3.0 too. The astrology-web
platform (Drupal/Commerce, the builder, the art pipeline) is proprietary
and talks to this service only over HTTP — never in-process — which is
what keeps the AGPL boundary at this service and out of the main platform.
AGPL-3.0 §13 requires that anyone interacting with this service over a
network be offered its corresponding source. Before this service is ever
reachable by anything other than local development, this repo must be
pushed to a public GitHub repository, and CHART_SERVICE_SOURCE_URL must
be set to that URL — the /source endpoint serves that link. Don't skip
this step before deploying anywhere network-reachable.
GET /health— liveness check.GET /source— AGPL §13 source link (see above).POST /chart— given birth data with location/timezone already resolved (geocoding and historical timezone lookup happen upstream in the calling pipeline, not here, per the platform plan §2 — this service is deliberately offline/CPU-only, no GeoNames network calls), returns structured chart data plus a rendered SVG.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # fill in CHART_SERVICE_SOURCE_URL once this repo is public
uvicorn app.main:app --reloadOr via Docker:
docker build -t astrology-charting .
docker run -p 8000:8000 astrology-chartingpip install pytest httpx
pytest