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.