Skip to content


Repository files navigation


sally is a small HTTP service you can host to serve vanity import paths for Go modules.


To build sally from source, use:

go install

Alternatively, get a pre-built Docker image from


Create a YAML file with the following structure:

# sally.yaml

# Configures documentation linking.
# Optional.
  # Host for the Go documentation server.
  # Defaults to

# Base URL for your package site.
# If you want your modules available under "",
# specify here.
# This field is required.

# Collection of packages under
# and their Git repositories.

  # The key is the name of the package following the base URL.
  # For example, if you want to make a package available at
  # "", you'd specify "foo" here.
    # Path to the Git repository.
    # This field is required.

    # Optional description of the package.
    description: A fast, structured-logging library.

    # Alternative base URL instead of the value configured at the top-level.
    # This is useful if the same sally instance is
    # hosted behind multiple base URLs.
    # Defaults to the value of the top-level url field.

    # Optional URL to the package's documentation.
    # Defaults to the documentation site at with the package's
    # module path appended.

    # Optional URL to the badge image which appears in the index page.
    # Defaults to the badge image at, using the package's module
    # path followed by .svg as the filename.

Run sally like so:

$ sally

This will read from sally.yaml and serve on port 8080. To use a different port and/or configuration file, use the -yml and -port flags.

$ sally -yml site.yaml -port 5000

Custom Templates

You can provide your own custom templates. For this, create a directory with .html templates and provide it via the -templates flag. You only need to provide the templates you want to override. See templates for the available templates.