diff --git a/WORKSPACE b/WORKSPACE
index 9c40ed2..9f7f950 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -81,3 +81,9 @@
     commit = "1bc31862f07e7539ca493de9137ed1ad56cc9f43",
     build_file_generation = "off",
 )
+
+go_repository(
+    name = "com_github_shirou_gopsutil",
+    commit = "2cbc9195c892b304060269ef280375236d2fcac9",
+    importpath = "github.com/shirou/gopsutil",
+)
diff --git a/go/mirko/BUILD.bazel b/go/mirko/BUILD.bazel
new file mode 100644
index 0000000..59ed755
--- /dev/null
+++ b/go/mirko/BUILD.bazel
@@ -0,0 +1,16 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["mirko.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/mirko",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//go/pki:go_default_library",
+        "//go/statusz:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@org_golang_google_grpc//:go_default_library",
+        "@org_golang_google_grpc//reflection:go_default_library",
+        "@org_golang_x_net//trace:go_default_library",
+    ],
+)
diff --git a/go/mirko/mirko.go b/go/mirko/mirko.go
index 2e62c3d..01766db 100644
--- a/go/mirko/mirko.go
+++ b/go/mirko/mirko.go
@@ -38,17 +38,15 @@
 	httpServer *http.Server
 	httpMux    *http.ServeMux
 
-	ctx     context.Context
-	cancel  context.CancelFunc
-	waiters []chan bool
+	ctx    context.Context
+	cancel context.CancelFunc
 }
 
 func New() *Mirko {
 	ctx, cancel := context.WithCancel(context.Background())
 	return &Mirko{
-		ctx:     ctx,
-		cancel:  cancel,
-		waiters: []chan bool{},
+		ctx:    ctx,
+		cancel: cancel,
 	}
 }
 
@@ -161,10 +159,8 @@
 // Done() returns a channel that will emit a value when the service is
 // shut down. This should be used in the main() function instead of a select{}
 // call, to allow the background context to be canceled fully.
-func (m *Mirko) Done() chan bool {
-	c := make(chan bool, 1)
-	m.waiters = append(m.waiters, c)
-	return c
+func (m *Mirko) Done() <-chan struct{} {
+	return m.Context().Done()
 }
 
 // Serve starts serving HTTP and gRPC requests
@@ -187,10 +183,6 @@
 		select {
 		case <-signalCh:
 			m.cancel()
-			time.Sleep(time.Second)
-			for _, w := range m.waiters {
-				w <- true
-			}
 		}
 	}()
 
diff --git a/go/pki/BUILD.bazel b/go/pki/BUILD.bazel
new file mode 100644
index 0000000..0d3544f
--- /dev/null
+++ b/go/pki/BUILD.bazel
@@ -0,0 +1,17 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["grpc.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/pki",
+    visibility = ["//visibility:public"],
+    deps = [
+        "@com_github_golang_glog//:go_default_library",
+        "@org_golang_google_grpc//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//credentials:go_default_library",
+        "@org_golang_google_grpc//peer:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+        "@org_golang_x_net//trace:go_default_library",
+    ],
+)
diff --git a/go/pki/grpc.go b/go/pki/grpc.go
index f014a34..6d8f173 100644
--- a/go/pki/grpc.go
+++ b/go/pki/grpc.go
@@ -37,6 +37,7 @@
 	flagCertificatePath string
 	flagKeyPath         string
 	flagPKIRealm        string
+	flagPKIDisable      bool
 
 	// Enable logging HSPKI info into traces
 	Trace = true
@@ -53,6 +54,7 @@
 	flag.StringVar(&flagCertificatePath, "hspki_tls_certificate_path", "pki/service.pem", "Path to PKI service certificate")
 	flag.StringVar(&flagKeyPath, "hspki_tls_key_path", "pki/service-key.pem", "Path to PKI service private key")
 	flag.StringVar(&flagPKIRealm, "hspki_realm", "svc.cluster.local", "PKI realm")
+	flag.BoolVar(&flagPKIDisable, "hspki_disable", false, "Disable PKI entirely (insecure!)")
 }
 
 func maybeTrace(ctx context.Context, f string, args ...interface{}) {
@@ -168,6 +170,10 @@
 	if !flag.Parsed() {
 		glog.Exitf("WithServerHSPKI called before flag.Parse!")
 	}
+	if flagPKIDisable {
+		return []grpc.ServerOption{}
+	}
+
 	serverCert, err := tls.LoadX509KeyPair(flagCertificatePath, flagKeyPath)
 	if err != nil {
 		glog.Exitf("WithServerHSPKI: cannot load service certificate/key: %v", err)
@@ -194,6 +200,13 @@
 }
 
 func WithClientHSPKI() grpc.DialOption {
+	if !flag.Parsed() {
+		glog.Exitf("WithServerHSPKI called before flag.Parse!")
+	}
+	if flagPKIDisable {
+		return grpc.WithInsecure()
+	}
+
 	certPool := x509.NewCertPool()
 	ca, err := ioutil.ReadFile(flagCAPath)
 	if err != nil {
diff --git a/go/proto/BUILD.bazel b/go/proto/BUILD.bazel
new file mode 100644
index 0000000..d2f24fb
--- /dev/null
+++ b/go/proto/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["generate.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/go/statusz/BUILD.bazel b/go/statusz/BUILD.bazel
new file mode 100644
index 0000000..951adff
--- /dev/null
+++ b/go/statusz/BUILD.bazel
@@ -0,0 +1,12 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["statusz.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/statusz",
+    visibility = ["//visibility:public"],
+    deps = [
+        "@com_github_golang_glog//:go_default_library",
+        "@com_github_shirou_gopsutil//load:go_default_library",
+    ],
+)
diff --git a/go/svc/arista-proxy/BUILD.bazel b/go/svc/arista-proxy/BUILD.bazel
new file mode 100644
index 0000000..0d88e08
--- /dev/null
+++ b/go/svc/arista-proxy/BUILD.bazel
@@ -0,0 +1,41 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "proto_proto",
+    srcs = ["arista.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "proto_go_proto",
+    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/arista-proxy",
+    proto = ":proto_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "main.go",
+        "service.go",
+    ],
+    embed = [":proto_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/arista-proxy",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//go/mirko:go_default_library",
+        "//go/svc/arista-proxy/proto:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@com_github_ybbus_jsonrpc//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "arista-proxy",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/arista-proxy/proto/BUILD.bazel b/go/svc/arista-proxy/proto/BUILD.bazel
new file mode 100644
index 0000000..ae4ee9b
--- /dev/null
+++ b/go/svc/arista-proxy/proto/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["generate.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/arista-proxy/proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/cmc-proxy/BUILD.bazel b/go/svc/cmc-proxy/BUILD.bazel
new file mode 100644
index 0000000..a142dc9
--- /dev/null
+++ b/go/svc/cmc-proxy/BUILD.bazel
@@ -0,0 +1,41 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "proto_proto",
+    srcs = ["proxy.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "proto_go_proto",
+    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/cmc-proxy",
+    proto = ":proto_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "client.go",
+        "main.go",
+    ],
+    embed = [":proto_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/cmc-proxy",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//go/mirko:go_default_library",
+        "//go/svc/cmc-proxy/proto:go_default_library",
+        "@com_github_cenkalti_backoff//:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "cmc-proxy",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/cmc-proxy/proto/BUILD.bazel b/go/svc/cmc-proxy/proto/BUILD.bazel
new file mode 100644
index 0000000..e924906
--- /dev/null
+++ b/go/svc/cmc-proxy/proto/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["generate.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/cmc-proxy/proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/leasifier/BUILD.bazel b/go/svc/leasifier/BUILD.bazel
new file mode 100644
index 0000000..386f886
--- /dev/null
+++ b/go/svc/leasifier/BUILD.bazel
@@ -0,0 +1,21 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["main.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/leasifier",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//go/mirko:go_default_library",
+        "//proto/hswaw:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "leasifier",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/leasifier/main.go b/go/svc/leasifier/main.go
new file mode 100644
index 0000000..9b2cf5a
--- /dev/null
+++ b/go/svc/leasifier/main.go
@@ -0,0 +1,228 @@
+package main
+
+import (
+	"bufio"
+	"context"
+	"flag"
+	"fmt"
+	"io"
+	"net"
+	"os"
+	"strings"
+	"time"
+
+	"github.com/golang/glog"
+
+	mirko "code.hackerspace.pl/hscloud/go/mirko"
+	hpb "code.hackerspace.pl/hscloud/proto/hswaw"
+)
+
+type lease struct {
+	hardware net.HardwareAddr
+	ip       net.IP
+	from     time.Time
+	to       time.Time
+}
+
+const timeFmt = "2006/01/02 15:04:05"
+
+func parseLeases(f io.Reader, now time.Time) ([]lease, error) {
+	scanner := bufio.NewScanner(f)
+
+	leases := make(map[string]*lease)
+
+	var curAddr *net.IP
+	var curStart *time.Time
+	var curEnd *time.Time
+	var curHW *net.HardwareAddr
+
+	for scanner.Scan() {
+		l := scanner.Text()
+		l = strings.TrimSpace(l)
+		if len(l) < 1 {
+			continue
+		}
+
+		if strings.HasPrefix(l, "#") {
+			continue
+		}
+
+		parts := strings.Fields(l)
+		if len(parts) < 1 {
+			continue
+		}
+
+		if curAddr == nil {
+			switch parts[0] {
+			case "lease":
+				if len(parts) < 3 || parts[2] != "{" {
+					glog.Warningf("invalid lease line %q", l)
+					break
+				}
+
+				ip := net.ParseIP(parts[1])
+				if ip == nil {
+					glog.Warningf("invalid lease line %q: invalid ip")
+					break
+				}
+				curAddr = &ip
+			}
+		} else {
+			parts[len(parts)-1] = strings.TrimRight(parts[len(parts)-1], ";")
+
+			switch parts[0] {
+			case "starts":
+				fallthrough
+			case "ends":
+				if len(parts) != 4 {
+					glog.Warningf("invalid time line %q", l)
+					break
+				}
+				t, err := time.Parse(timeFmt, fmt.Sprintf("%s %s", parts[2], parts[3]))
+				if err != nil {
+					glog.Warningf("invalid time line %q: %v", l, err)
+					break
+				}
+				if parts[0] == "starts" {
+					curStart = &t
+				} else {
+					curEnd = &t
+				}
+			case "hardware":
+				if len(parts) < 2 {
+					glog.Warningf("invalid hardware line %q", l)
+					break
+				}
+				if parts[1] != "ethernet" {
+					break
+				}
+				if len(parts) != 3 {
+					glog.Warningf("invalid hardware ethernet line %q", l)
+					break
+				}
+				hw, err := net.ParseMAC(parts[2])
+				if err != nil {
+					glog.Warningf("invalid hardware ethernet line %q: %v", l, err)
+					break
+				}
+				curHW = &hw
+			case "}":
+				if curStart == nil || curEnd == nil || curHW == nil {
+					glog.V(2).Info("Invalid block for %q, not enough fields", curAddr.String())
+				} else if curEnd.Before(now) {
+					// skip.
+				} else {
+					leases[curHW.String()] = &lease{
+						hardware: *curHW,
+						ip:       *curAddr,
+						from:     *curStart,
+						to:       *curEnd,
+					}
+				}
+				curAddr = nil
+				curStart = nil
+				curEnd = nil
+				curHW = nil
+			}
+		}
+	}
+
+	ret := make([]lease, len(leases))
+	i := 0
+	for _, v := range leases {
+		ret[i] = *v
+		i += 1
+	}
+
+	return ret, nil
+}
+
+type service struct {
+	leaseFile string
+	leaseC    chan chan []lease
+}
+
+func (s *service) work(ctx context.Context) {
+	leases := []lease{}
+
+	ticker := time.NewTicker(30 * time.Second)
+	start := make(chan struct{}, 1)
+	start <- struct{}{}
+
+	work := func() {
+		glog.Infof("Parsing leases...")
+		f, err := os.Open(s.leaseFile)
+		if err != nil {
+			glog.Errorf("Could not open lease file: %v", err)
+			return
+		}
+		l, err := parseLeases(f, time.Now())
+		f.Close()
+		if err != nil {
+			glog.Errorf("Could not parse lease file: %v", err)
+			return
+		}
+		leases = l
+		glog.Infof("Got %d leases", len(leases))
+	}
+
+	glog.Infof("Worker started.")
+
+	for {
+		select {
+		case <-start:
+			work()
+		case <-ticker.C:
+			work()
+		case c := <-s.leaseC:
+			c <- leases
+		case <-ctx.Done():
+			glog.Infof("Worker quitting.")
+			close(start)
+			return
+		}
+	}
+}
+
+func (s *service) Leases(ctx context.Context, req *hpb.LeasifierLeasesRequest) (*hpb.LeasifierLeasesResponse, error) {
+	c := make(chan []lease)
+	s.leaseC <- c
+	leases := <-c
+
+	res := &hpb.LeasifierLeasesResponse{}
+
+	for i, l := range leases {
+		res.Leases[i] = &hpb.LeasifierLease{
+			PhysicalAddress: l.hardware.String(),
+			IpAddress:       l.ip.String(),
+		}
+	}
+
+	return res, nil
+}
+
+func main() {
+	s := &service{
+		leaseC: make(chan chan []lease),
+	}
+
+	flag.StringVar(&s.leaseFile, "lease_file", "/var/db/dhcpd.leases", "Location of leasefile")
+	flag.Parse()
+
+	m := mirko.New()
+	if err := m.Listen(); err != nil {
+		glog.Exitf("Could not listen: %v", err)
+	}
+
+	hpb.RegisterLeasifierServer(m.GRPC(), s)
+
+	go s.work(m.Context())
+
+	if err := m.Serve(); err != nil {
+		glog.Exitf("Could not run: %v", err)
+	}
+
+	glog.Info("Running.")
+	<-m.Done()
+
+}
diff --git a/go/svc/m6220-proxy/BUILD.bazel b/go/svc/m6220-proxy/BUILD.bazel
new file mode 100644
index 0000000..ee500a9
--- /dev/null
+++ b/go/svc/m6220-proxy/BUILD.bazel
@@ -0,0 +1,43 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "proto_proto",
+    srcs = ["proxy.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "proto_go_proto",
+    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/m6220-proxy",
+    proto = ":proto_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "cli.go",
+        "main.go",
+    ],
+    embed = [":proto_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/m6220-proxy",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//go/mirko:go_default_library",
+        "//go/proto/infra:go_default_library",
+        "//go/svc/m6220-proxy/proto:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@com_github_ziutek_telnet//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+        "@org_golang_x_net//trace:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "m6220-proxy",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/m6220-proxy/proto/BUILD.bazel b/go/svc/m6220-proxy/proto/BUILD.bazel
new file mode 100644
index 0000000..5fb4fac
--- /dev/null
+++ b/go/svc/m6220-proxy/proto/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["generate.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/m6220-proxy/proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/topo/BUILD.bazel b/go/svc/topo/BUILD.bazel
new file mode 100644
index 0000000..5e4abff
--- /dev/null
+++ b/go/svc/topo/BUILD.bazel
@@ -0,0 +1,46 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "proto_proto",
+    srcs = ["config.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "proto_go_proto",
+    importpath = "code.hackerspace.pl/hscloud/go/svc/topo",
+    proto = ":proto_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "main.go",
+        "service.go",
+    ],
+    embed = [":proto_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/topo",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//go/mirko:go_default_library",
+        "//go/proto/infra:go_default_library",
+        "//go/statusz:go_default_library",
+        "//go/svc/topo/graph:go_default_library",
+        "//go/svc/topo/proto:go_default_library",
+        "//go/svc/topo/state:go_default_library",
+        "@com_github_digitalocean_go_netbox//netbox:go_default_library",
+        "@com_github_digitalocean_go_netbox//netbox/client:go_default_library",
+        "@com_github_gobuffalo_packr//:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@com_github_golang_protobuf//proto:go_default_library",
+        "@ml_vbom_util//sortorder:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "topo",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/topo/graph/BUILD.bazel b/go/svc/topo/graph/BUILD.bazel
new file mode 100644
index 0000000..205b401
--- /dev/null
+++ b/go/svc/topo/graph/BUILD.bazel
@@ -0,0 +1,15 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["graph.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/topo/graph",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//go/svc/topo/proto:go_default_library",
+        "@com_github_digitalocean_go_netbox//netbox/client:go_default_library",
+        "@com_github_digitalocean_go_netbox//netbox/client/dcim:go_default_library",
+        "@com_github_digitalocean_go_netbox//netbox/models:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+    ],
+)
diff --git a/go/svc/topo/proto/BUILD.bazel b/go/svc/topo/proto/BUILD.bazel
new file mode 100644
index 0000000..01007dd
--- /dev/null
+++ b/go/svc/topo/proto/BUILD.bazel
@@ -0,0 +1,8 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["generate.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/topo/proto",
+    visibility = ["//visibility:public"],
+)
diff --git a/go/svc/topo/state/BUILD.bazel b/go/svc/topo/state/BUILD.bazel
new file mode 100644
index 0000000..81985d2
--- /dev/null
+++ b/go/svc/topo/state/BUILD.bazel
@@ -0,0 +1,14 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["state.go"],
+    importpath = "code.hackerspace.pl/hscloud/go/svc/topo/state",
+    visibility = ["//visibility:public"],
+    deps = [
+        "//go/pki:go_default_library",
+        "//go/proto/infra:go_default_library",
+        "//go/svc/topo/proto:go_default_library",
+        "@org_golang_google_grpc//:go_default_library",
+    ],
+)
diff --git a/proto/hswaw/BUILD b/proto/hswaw/BUILD
new file mode 100644
index 0000000..d7bc9f1
--- /dev/null
+++ b/proto/hswaw/BUILD
@@ -0,0 +1,23 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "hswaw_proto",
+    srcs = ["checkinator.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "hswaw_go_proto",
+    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+    importpath = "code.hackerspace.pl/hscloud/proto/hswaw",
+    proto = ":hswaw_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    embed = [":hswaw_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/proto/hswaw",
+    visibility = ["//visibility:public"],
+)
diff --git a/proto/hswaw/checkinator.proto b/proto/hswaw/checkinator.proto
new file mode 100644
index 0000000..1023727
--- /dev/null
+++ b/proto/hswaw/checkinator.proto
@@ -0,0 +1,18 @@
+syntax = "proto3";
+package hswaw;
+
+message LeasifierLeasesRequest {
+};
+
+message LeasifierLease {
+    string physical_address = 1;
+    string ip_address = 2;
+};
+
+message LeasifierLeasesResponse {
+    repeated LeasifierLease leases = 1;
+};
+
+service Leasifier {
+    rpc Leases(LeasifierLeasesRequest) returns (LeasifierLeasesResponse);
+};
diff --git a/proto/infra/BUILD.bazel b/proto/infra/BUILD.bazel
new file mode 100644
index 0000000..c9214e7
--- /dev/null
+++ b/proto/infra/BUILD.bazel
@@ -0,0 +1,23 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
+
+proto_library(
+    name = "infra_proto",
+    srcs = ["control.proto"],
+    visibility = ["//visibility:public"],
+)
+
+go_proto_library(
+    name = "infra_go_proto",
+    compilers = ["@io_bazel_rules_go//proto:go_grpc"],
+    importpath = "code.hackerspace.pl/hscloud/proto/infra",
+    proto = ":infra_proto",
+    visibility = ["//visibility:public"],
+)
+
+go_library(
+    name = "go_default_library",
+    embed = [":infra_go_proto"],
+    importpath = "code.hackerspace.pl/hscloud/proto/infra",
+    visibility = ["//visibility:public"],
+)
