Status: Alpha

This builder takes in a Go program that defines a singular HTTP handler and outputs it as a Lambda.

When to Use It

Whenever you want to expose an API or a function written in Go.

How to Use It

Define a index.go file inside a folder as follows:

package handler

import (

func Handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "<h1>Hello from Go on Now!</h1>")

And define a now.json like:

  "version": 2,
  "builds": [{ "src": "*.go", "use": "@now/go" }]

Notice that the API is cohesive with the net/http Go API. Your main entrypoint function must be an exported function.

The example above can be seen live from the following URL:

Also, the source code of the deployment can be checked by appending /_src e.g.

Technical Details


The entrypoint file must be a .go source file containing an exported function that implements the net/http API.

Note: @now/go will automatically detect a go.mod file to install dependencies at the entrypoint level.

Private packages

To install private packages with go get, define GIT_CREDENTIALS as a build environment variable in now.json.

All major Git providers are supported including GitHub, GitLab, Bitbucket, as well as a self-hosted Git server.

With GitHub, you will need to create a personal token with permission to access your private repository.

  "build": {
    "env": {


Go 1.x is used.