Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

Build Status


GNORM is Not an ORM.


Gnorm converts your database's schema into in-memory data structures which you can then feed into your own templates to produce code or documentation or whatever.

Gnorm is written in Go but can be used to generate any kind of textual output - ruby, python, protobufs, html, javascript, etc.

Gnorm uses templates you control, so that you can make the output look exactly how you want it to look. It can be used to generate type-safe database queries that are faster than a traditional ORM. It can also be used to create a REST or RPC API that exposes the data in your database.



Gnorm has no dependencies, just download and run the executable for your operating system. See our latest release.


Note: Gnorm uses a go vanity url. To install with go get, run

go get

However, using go get to install will mean that gnorm version doesn't report the correct data, and gnorm docs won't show you the docs in your browser.

For best results, use the magefile in the root of the repo, which will do all the build-time magic. To run it, install mage, then just run mage build.

$ go get
$ mage build

If you want to git clone instead (which should work fine since we vendor all dependencies), make sure you git clone into $GOPATH/src/


If you have questions about Gnorm or want to hack on it, meet the devs on the #gnorm channel of gopher slack.

There's also the #gnorm-dev channel which has github integrations showing the work going on.