GitSocial


Git-native collaboration platform


GitSocial stores issues, pull requests, comments and releases as commits in git, so they clone, fork and push along with the code.

It is a single open source Go binary that:

  • reads and writes these items from a CLI and a TUI
  • imports existing data from GitHub or GitLab
  • publishes the repository and a static site to an S3 bucket, with no server

GitSocial.org runs this way.

Install

macOS / Linux with Homebrew

brew trust gitsocial-org/tap
brew install gitsocial-org/tap/gitsocial

Windows

scoop bucket add gitsocial https://github.com/gitsocial-org/scoop-bucket.git
scoop install gitsocial

Other

  • Install script: curl -fsSL https://gitsocial.org/install.sh | sh
  • Go: go install github.com/gitsocial-org/gitsocial/cli/gitsocial@latest
  • Binary: download from the releases page

GitSocial needs git 2.38 or later.

Quick Start

In any cloned repository, show the code, the commits and the tags in the browser:

gitsocial serve

To bring the issues, pull requests and releases from GitHub or GitLab, and the discussions from GitHub:

gitsocial import -n 20

-n caps the items per type, drop it for a full import, which can take a while on a large repository. A running gitsocial serve picks up the imported items as they arrive.

Terminal UI

The TUI browses and creates the same items, and configures the repository (demo):

gitsocial tui

Publish to a bucket

Any S3-compatible bucket works, whether AWS S3, Cloudflare R2, DigitalOcean Spaces or Hetzner Object Storage, and it serves as a git remote and a static site at the same time.

To mirror a GitHub or GitLab project, with its items, into a bucket:

gitsocial mirror https://github.com/owner/repo s3://s3.example.com/mybucket/repo

The first run asks for credentials, and each later run refreshes the mirror.

To publish your own repository, set the credentials once for the endpoint, then add the bucket as a remote and push:

gitsocial config credentials set s3.example.com
gitsocial remote add s3://s3.example.com/mybucket/myrepo --default --site
gitsocial push

A private bucket needs no further setup, and anyone with the credentials can clone it:

gitsocial clone s3://s3.example.com/mybucket/myrepo

For a public project, enable public access in the dashboard of the provider, and anyone can then git clone from the public URL of the bucket. To serve the HTML pages at your own domain, configure the domain in the same dashboard, then set the URL and push again:

gitsocial config site set url https://example.org/
gitsocial push

Documentation

Core

DocumentDescription
GitMsg ProtocolCore message format, headers, refs, versioning
S3 RemoteBuckets as git remotes, clone, push, thin fork buckets
Static SiteRepository website served from the bucket: timeline, issues, pull requests, releases, code
Identity VerificationAttestation sources, commands, caching
NotificationsNotification types, scopes, and triggers
SettingsUser preferences, keys, personal sync across machines

Extensions

DocumentDescriptionSpec
SocialPosts, comments, lists, timeline, followersGitSocial
PMIssues, milestones, sprints, labels, boardsGitPM
ReviewPull requests, feedback, forks, version tracking, cross-forge scenariosGitReview
ReleaseReleases, artifacts, checksums, signatures, SBOMGitRelease
MemoTiered memos for knowledge as commitsnone

Clients

DocumentDescription
CLICommands, flags, output formats
TUIPer-view layouts, keybindings
JSON-RPCClient integration over stdio
Agent SkillAI-assisted workflows for Claude Code, Cursor and other agents

Development

DocumentDescription
ContributingFork, build, submit a pull request, report a bug
ArchitectureLayers, packages, cache schema, TUI structure
StyleProse, help text, errors, comments, commits
TestingTest tiers, check stages, coverage, supported platforms

License

MIT