v0.3.1

PyGitWeb

Self-hosted project hosting with git as the database

A FastAPI-based forge for small teams: repositories, sprint boards, tasks, Smart HTTP, and OAuth - with merge requests and metadata living in your object store.

What is PyGitWeb?

Everything you need to self-host a code forge for individuals and small or medium-sized teams with OAuth2 or local-auth flows. The UI follows Tabler, the same kit used in the app itself.

Built for modern workflows

Current through 0.3.x - boards, Smart HTTP, plugins, and a terminal companion.

Sprint boards & tasks

Kanban boards with Fibonacci story points, board switching, archive and delete, plus task search by tag or commit.

Smart HTTP

Clone and push over HTTP with scoped keys. Ref push rules cover branches, tags, and notes.

Metadata in git

Settings, merge requests, comments, and tasks live in the repository object database. Discover work with a fetch - no separate DB service.

OAuth & permissions

Sign in with an identity provider or local accounts. Project read gates visibility; write grants cover branches and arbitrary refs.

Plugins & blogs

Enable or disable plugins from settings with protocol checks. Render a project's markdown blog with archive, search, and assets.

pgt terminal UI

Browse repos, stage and commit, switch worktrees, run project actions, and manage tasks from the CLI - no web server required.

What sets it apart?

All project metadata is stored in-situ; discovering new merge requests and tasks is just a git fetch.

PyGit2 powers the shared tooling package, so you can script workflows without bringing up the web server. An ABC-based plugin model lets you extend the stack when you need to.

Get started

Run with uv in bash or PowerShell. By default you get local auth and an admin account with a random password.

uv run --with pygitweb uvicorn pygitweb.main:app

PGW uses Pydantic for configs: set PYGITWEB_AUTH=0 if all connections are trusted.

Design Philosophy

PyGitWeb is built for personal projects and small teams that want a place to host repos and organize tasks. Designed for light, efficient workflows - so you can stay focused on the work in the repo.