surgite
Standup summaries from your git history — in the browser, in the terminal, or as a shareable link.
The web app gives your team a shared dashboard: per-user repos, per-user prompt settings, AI-written summaries, and shareable links to specific summary views. The CLI does the same for a local repo, no server needed. First-party auth, no third-party tracking.
Lean principles: ~15 Python source files, one binary, no SPA framework, no slowapi, no Celery, no Redis. Reads like a script.
Quickstart
Two paths. Pick one.
The web app — three commands, full team dashboard:
git clone https://github.com/nicoleman0/surgite.git
cd surgite
cp .env.example .env # set BOOTSTRAP_OWNER_EMAIL=you@example.com
docker compose up -d
On first start the app mints an admin invite and logs the token; redeem it
with uv run surgite --redeem-invite <token> --email you@example.com and
you're in. Full guide: docs/self-host.md.
One-off summary from a local repo — no database, no server:
pip install surgite # or: uv tool install surgite
surgite /path/to/your/repo --since 7.days.ago
The PyPI wheel ships the surgite package — the CLI and the API code. The
web frontend and the alembic migrations are not in the wheel; the full
self-hosted stack installs from the repo or the Docker image (see
docs/self-host.md).
Add --summarize to get AI-written prose (set ANTHROPIC_API_KEY first).
Screenshots
The dashboard, with terminal-aesthetic chrome, a sample repo's commit log,
and a streamed AI summary panel. See docs/self-host.md
for the deployment walkthrough.
What you get
- Web dashboard — per-user repos, prompt settings, summary history, share
links, admin user management (
/admin/users). Email + password login with__Host-session cookies. - CLI —
surgite /path/to/repofor a local one-off,surgite --registered <name>to pull from a running API,surgite --loginto authenticate,surgite --summarizefor AI-written prose. - Per-user provider keys — each user brings their own Anthropic / Groq / DeepSeek key. Fernet-encrypted at rest, never returned by the API.
- Shareable summary links —
POST /summariesmints a/s/{slug}URL that re-runs a saved query in a read-only view. Owner-scoped in multi-user mode.
Why?
- Multi-user — email + password login, per-user repos and summaries, per-user provider keys. (The 0.5.0 headline.)
- Self-hostable — your data, your auth, your machine. No SaaS account, no vendor lock-in. Runs on a homelab box, a small VM, a Raspberry Pi, or a Kubernetes cluster — same code path.
- No telemetry — first-party auth, no analytics, no phone-home.
- Lean — FastAPI + Postgres + SvelteKit, the whole thing reads top-to-bottom.
Documentation
docs/self-host.md— end-to-end self-hosting guide (sizing, quickstart, TLS, backup, runbook).docs/security.md— the threat model and the security controls.docs/api-stability.md— the API stability policy: what we promise not to break, and how deprecation works.docs/security-support.md— supported versions, the vulnerability-response SLA, and the advisory process.docs/openapi.json— the snapshot-tested OpenAPI document; the machine-readable API contract.docs/migrations/0.4.0-to-0.5.0.md— upgrading a 0.4.0 install..env.example— every configuration variable, with defaults.CHANGELOG.md— release history.
Development
uv sync --group dev # install deps (incl. dev tools)
docker compose up -d db # Postgres for local dev
uv run alembic upgrade head # run migrations
uv run uvicorn surgite.api:app --reload
cd frontend && npm install && npm run dev
uv run pytest # tests
uv run ruff check . && uv run ruff format --check . # lint + format
See AGENTS.md for the canonical dev quickstart and the
architecture overview.
Contributing
Contributions are welcome. The project is deliberately minimalist — see the
principles in AGENTS.md. Start with
CONTRIBUTING.md for dev setup and the PR workflow; please
also read CODE_OF_CONDUCT.md. For anything
security-sensitive, see SECURITY.md.
The canonical repository is on GitHub: https://github.com/nicoleman0/surgite.
License
MIT © 2026 Nick Coleman
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file surgite-1.0.1.tar.gz.
File metadata
- Download URL: surgite-1.0.1.tar.gz
- Upload date:
- Size: 56.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80213e20698d26525f9893f570976d1f973794410dafdbc021f87ee54600df45
|
|
| MD5 |
4d2660490a784c31be2cec2dca5335d0
|
|
| BLAKE2b-256 |
07abe0b64d274e39d1a236236beed2df1a3c8dd93de1b6423c4869413b143467
|
Provenance
The following attestation bundles were made for surgite-1.0.1.tar.gz:
Publisher:
publish.yml on nicoleman0/surgite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
surgite-1.0.1.tar.gz -
Subject digest:
80213e20698d26525f9893f570976d1f973794410dafdbc021f87ee54600df45 - Sigstore transparency entry: 2665663040
- Sigstore integration time:
-
Permalink:
nicoleman0/surgite@0cae0668dc080fc6c00b536c41111d20c562475c -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/nicoleman0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0cae0668dc080fc6c00b536c41111d20c562475c -
Trigger Event:
release
-
Statement type:
File details
Details for the file surgite-1.0.1-py3-none-any.whl.
File metadata
- Download URL: surgite-1.0.1-py3-none-any.whl
- Upload date:
- Size: 63.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5197d034809e54f0c77b7bd7ff14fbb3eb924fcb13c463a6272c0845a4b6651e
|
|
| MD5 |
076a90e5731ff7cc687e0a2008d3a08e
|
|
| BLAKE2b-256 |
d423c2b86037ea78a8213130d29cd35b90e9d7bf1e929fa645f9b2cf58c22e60
|
Provenance
The following attestation bundles were made for surgite-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on nicoleman0/surgite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
surgite-1.0.1-py3-none-any.whl -
Subject digest:
5197d034809e54f0c77b7bd7ff14fbb3eb924fcb13c463a6272c0845a4b6651e - Sigstore transparency entry: 2665663131
- Sigstore integration time:
-
Permalink:
nicoleman0/surgite@0cae0668dc080fc6c00b536c41111d20c562475c -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/nicoleman0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0cae0668dc080fc6c00b536c41111d20c562475c -
Trigger Event:
release
-
Statement type: