Git LFS server
OCaml Shell Standard ML
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
attic implemented self-contained test script May 4, 2015
tests tests for POST and PUT methods May 7, 2015
LICENSE added ISC license May 2, 2015

Git LFS server

Build Status Coverage Status

Simple HTTP(S) server for Git Large File Storage with PAM authentication.

$ ./ -help
Start Git LFS server

  lfs_server [ROOT]

=== flags ===

  [-cert file]    File of certificate for https
  [-key file]     File of private key for https
  [-p port]       TCP port to listen on
  [-pam service]  PAM service name for user authentication
  [-s address]    IP address to listen on
  [-verbose]      Verbose logging
  [-build-info]   print info about this build and exit
  [-version]      print the version of this build and exit
  [-help]         print this help text and exit
                  (alias: -?)

By default, it starts on http://localhost:8080 and treats current directory as ROOT. All object files are stored locally in ROOT/.lfs/objects directory.


From binary packages:


HTTP server without authentication

./ -verbose -s IP_ADDRESS -p PORT

A server will ignore credentials passed by LFS client, and accept all connections. To enable authentication, you need to specify PAM service.

HTTP server with PAM authentication

./ -verbose -pam login -s IP_ADDRESS -p PORT

It will use built-in login PAM service defined in /etc/pam.d/login file.

Warning: LFS client uses HTTP basic authentication, so using HTTPS is a must!

HTTPS server with PAM authentication

./ -verbose -pam login -s IP_ADDRESS -p PORT -cert domain.crt -key domain.key


  • Multi server support
  • Create OPAM package
  • Add max file size option
  • Add connection timeouts
  • Authentication
  • Automated tests
  • Setup Travis continuous builds
  • Setup Coverals
  • Remove incomplete/broken temporary files
  • Upload validation (calculate SHA-256 digest)
  • Reject uppercase SHA-256 hex digests
  • Fix HTTPS urls
  • Rearrange files in release package and remove redundant libs
  • Add logging
  • Check SIGQUIT and SIGINT are handled correctly
  • HTTPS support (trivial to add)
  • Speed-up uploading (fixed in cohttp, see #330)