goer Download ↓

Goer documentation

A guide to systems that keep going.

If you build services in Go, you know the feeling: one thing breaks and suddenly everything’s on fire. These docs are about a different way to build, where a broken piece gets restarted and the rest carries on. Goer is an experiment, and we’ll be straight with you about what works and what doesn’t.

The main word to know is process (some people say actor). It’s one small worker that keeps its own data and reads its own inbox. The docs come in four layers, and each one only needs the one before it: get something running, find out what’s underneath, look up exact spellings, then learn to watch it live.

Two kinds of code show up here. Your regular Go code imports goer and calls goer.NewSystem() (or lets the goer command do that for you). The process code is written in imgo, a cut-down Go, in files marked //go:build goer. There’s also a lower-level goer/runtime package for when you need it.

01

Tutorials

Run one process. Then make it crash and recover, change it live, let it talk to the outside world, and build a small app.

Start here →
02

Architecture

What’s underneath, one layer at a time, in plain words first.

See how it works →
03

Reference

The exact spelling of everything: the language, the Go API, the tools.

Look it up →
04

Operate

The live dashboard: pause a process, step through it, read a crash report.

Watch it run →

A few more pages go deeper once you’ve got the basics.

05

Distribution

Running across more than one machine, and what happens when one drops off.

Go multi-machine →
06

Performance

Where the time goes, with the numbers we measured.

See the numbers →
07

CRDT state

Data that lives on several machines and still ends up agreeing.

Share data safely →
08

The imgo language

What the cut-down Go keeps, what it drops, and why.

Learn the dialect →
10

Glossary

Every word we use, explained in a sentence or two.

Look up a word →
09

Playground

Write a process and run it right here in your browser. Nothing to install.

Try it now →