all repos

mugit @ c56a6bd

🐮 git server that your cow will love
name last commit last update
.github/ chore: setup goreleaser 4 months ago 2026-02-05 23:41:51 EET
internal/ ui: render readme of current subtree 3 months ago 2026-02-20 21:47:28 EET
web/ ui: refactor how data is passed to pages 3 months ago 2026-02-20 21:24:04 EET
.goreleaser.yaml chore: setup goreleaser 4 months ago 2026-02-05 23:41:51 EET
LICENSE chore: docs, readme, license 3 months ago 2026-02-06 23:49:13 EET
flake.lock chore: flakify 3 months ago 2026-02-06 20:55:33 EET
flake.nix nix: little bit more of type safety 3 months ago 2026-02-17 23:51:55 EET
go.mod ui: emoji support for markdown readmes 3 months ago 2026-02-17 23:24:08 EET
go.sum ui: emoji support for markdown readmes 3 months ago 2026-02-17 23:24:08 EET
main.go feat: version 4 months ago 2026-02-05 23:41:51 EET
readme fix readme 3 months ago 2026-02-10 00:16:45 EET
mugit
-----

A cgit/gitweb-like server that your cow will love.

FEATURES
- Web interface - browse repositories, view commits, files, and diffs
- Git Smart HTTP - clone over https (use ssh for pushing)
- Git over SSH - push and clone over ssh
- Private repositories - repositories that are only accessible via ssh
- Mirroring - Automatically mirror repositories (supports github auth)
- CLI - for managing your repos

INSTALL

Clone it, `go build` it.

You can also you nix flake if you're on nixos.

CONFIG

Uses yaml for configuration, look for a 'config.yaml' in:
1. `/var/lib/mugit/config.yaml`
2. `$XDG_CONFIG_HOME/mugit/config.yaml` (or `~/.config/mugit/config.yaml`)
3. `/etc/mugit/config.yaml`

Pass `--config` flag to point it elsewhere

Example config:

    server:
      host: 0.0.0.0
      port: 5555

    meta:
      # title and description you see on the index page
      title: My Git Server
      description: A place for my projects
      # used for clone urls and go-import meta tag
      host: git.example.com

    repo:
      # where all your repo live (maybe die too). mugit doesn't traverse subdirs
      dir: /var/lib/mugit
      # readme files to look for
      readmes:
        - README.md
        - readme.md
      # master branches name to look for
      masters:
        - main
        - master

    ssh:
      enable: true
      port: 2222
      # path to ssh private key for ssh server to use
      # you can generate it with: ssh-keygen -f key/path
      host_key: /var/lib/mugit/ssh_host_key
      # list of keys that are allowed to access private repos
      keys:
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPLLJdkVYKZgsayw+sHanKPKZbI0RMS2CakqBCEi5Trz
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMPQ0Qz0DFB+rGrD8ScUqbUTZ1/O8FHrOBF5bIAGQgMj 

    mirror:
      enable: true
      # with which interval sync repo
      interval: 1h
      # github token for avoiding github rate limiting
      github_token: "ghp_xxxxxxxxxxxx"


CLI

    # start server
    mugit serve

    # run with custom config
    mugit -c /path/to/config.yml serve

    # create new repository
    mugit repo new myproject

    # create new private repository
    mugit repo new --private myproject

    # create new mirror
    mugit repo new myproject --mirror https://github.com/user/repo
    mugit repo new myproject --mirror https://codeberg.org/user/repo

    # toggle repository private status
    mugit repo private myproject

    # get repository description
    mugit repo description myproject

    # set new description
    mugit repo description myproject "My awesome project"


LICENSE

mugit is licensed under MIT.