diff --git a/core/internal/node/BUILD.bazel b/core/internal/node/BUILD.bazel
new file mode 100644
index 0000000..0596269
--- /dev/null
+++ b/core/internal/node/BUILD.bazel
@@ -0,0 +1,20 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = [
+        "main.go",
+        "setup.go",
+    ],
+    importpath = "git.monogon.dev/source/nexantic.git/core/internal/node",
+    visibility = ["//:__subpackages__"],
+    deps = [
+        "//core/internal/api:go_default_library",
+        "//core/internal/common:go_default_library",
+        "//core/internal/consensus:go_default_library",
+        "//core/internal/storage:go_default_library",
+        "@com_github_casbin_casbin//:go_default_library",
+        "@com_github_google_uuid//:go_default_library",
+        "@org_uber_go_zap//:go_default_library",
+    ],
+)
diff --git a/core/internal/node/main.go b/core/internal/node/main.go
new file mode 100644
index 0000000..7494f7a
--- /dev/null
+++ b/core/internal/node/main.go
@@ -0,0 +1,150 @@
+// Copyright 2020 The Monogon Project Authors.
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package node
+
+import (
+	"flag"
+	"git.monogon.dev/source/nexantic.git/core/internal/api"
+	"git.monogon.dev/source/nexantic.git/core/internal/common"
+	"git.monogon.dev/source/nexantic.git/core/internal/consensus"
+	"git.monogon.dev/source/nexantic.git/core/internal/storage"
+
+	"github.com/casbin/casbin"
+	"github.com/google/uuid"
+	"go.uber.org/zap"
+)
+
+type (
+	SmalltownNode struct {
+		Api       *api.Server
+		Consensus *consensus.Service
+		Storage   *storage.Manager
+
+		logger       *zap.Logger
+		ruleEnforcer *casbin.Enforcer
+		state        common.SmalltownState
+		joinToken    string
+	}
+)
+
+func NewSmalltownNode(logger *zap.Logger, apiPort, consensusPort uint16) (*SmalltownNode, error) {
+	flag.Parse()
+	logger.Info("Creating Smalltown node")
+
+	storageManager, err := storage.Initialize(logger.With(zap.String("component", "storage")))
+	if err != nil {
+		logger.Error("Failed to initialize storage manager", zap.Error(err))
+		return nil, err
+	}
+
+	consensusService, err := consensus.NewConsensusService(consensus.Config{
+		Name:         "test",
+		ExternalHost: "0.0.0.0",
+		ListenPort:   consensusPort,
+		ListenHost:   "0.0.0.0",
+	}, logger.With(zap.String("module", "consensus")))
+	if err != nil {
+		return nil, err
+	}
+
+	s := &SmalltownNode{
+		Consensus: consensusService,
+		logger:    logger,
+		Storage:   storageManager,
+	}
+
+	apiService, err := api.NewApiServer(&api.Config{
+		Port: apiPort,
+	}, logger.With(zap.String("module", "api")), s, s.Consensus)
+	if err != nil {
+		return nil, err
+	}
+
+	s.Api = apiService
+
+	logger.Info("Created SmalltownNode")
+
+	return s, nil
+}
+
+func (s *SmalltownNode) Start() error {
+	s.logger.Info("Starting Smalltown node")
+
+	if s.Consensus.IsProvisioned() {
+		s.logger.Info("Consensus is provisioned")
+		err := s.startFull()
+		if err != nil {
+			return err
+		}
+	} else {
+		s.logger.Info("Consensus is not provisioned")
+		err := s.startForSetup()
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func (s *SmalltownNode) startForSetup() error {
+	s.logger.Info("Initializing subsystems for setup mode")
+	s.state = common.StateSetupMode
+	s.joinToken = uuid.New().String()
+
+	err := s.Api.Start()
+	if err != nil {
+		s.logger.Error("Failed to start the API service", zap.Error(err))
+		return err
+	}
+
+	return nil
+}
+
+func (s *SmalltownNode) startFull() error {
+	s.logger.Info("Initializing subsystems for production")
+	s.state = common.StateConfigured
+
+	err := s.SetupBackend()
+	if err != nil {
+		return err
+	}
+
+	err = s.Consensus.Start()
+	if err != nil {
+		return err
+	}
+
+	err = s.Api.Start()
+	if err != nil {
+		s.logger.Error("Failed to start the API service", zap.Error(err))
+		return err
+	}
+
+	return nil
+}
+
+func (s *SmalltownNode) Stop() error {
+	s.logger.Info("Stopping Smalltown node")
+	return nil
+}
+
+func (s *SmalltownNode) SetupBackend() error {
+	s.logger.Debug("Creating trust backend")
+
+	return nil
+}
diff --git a/core/internal/node/setup.go b/core/internal/node/setup.go
new file mode 100644
index 0000000..28585dd
--- /dev/null
+++ b/core/internal/node/setup.go
@@ -0,0 +1,123 @@
+// Copyright 2020 The Monogon Project Authors.
+//
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package node
+
+import (
+	"git.monogon.dev/source/nexantic.git/core/internal/common"
+
+	"errors"
+	"go.uber.org/zap"
+)
+
+var (
+	ErrConsensusAlreadyProvisioned = errors.New("consensus is already provisioned; make sure the data folder is empty")
+	ErrAlreadySetup                = errors.New("node is already set up")
+	ErrNotInJoinMode               = errors.New("node is not in the cluster join mode")
+	ErrTrustNotInitialized         = errors.New("trust backend not initialized")
+	ErrStorageNotInitialized       = errors.New("storage not initialized")
+)
+
+func (s *SmalltownNode) CurrentState() common.SmalltownState {
+	return s.state
+}
+
+func (s *SmalltownNode) GetJoinClusterToken() string {
+	return s.joinToken
+}
+
+func (s *SmalltownNode) SetupNewCluster(name string, externalHost string) error {
+	if s.state == common.StateConfigured {
+		return ErrAlreadySetup
+	}
+	dataPath, err := s.Storage.GetPathInPlace(common.PlaceData, "etcd")
+	if err == common.ErrNotInitialized {
+		return ErrStorageNotInitialized
+	} else if err != nil {
+		return err
+	}
+
+	s.logger.Info("Setting up a new cluster", zap.String("name", name), zap.String("external_host", externalHost))
+
+	s.logger.Info("Provisioning consensus")
+
+	// Make sure etcd is not yet provisioned
+	if s.Consensus.IsProvisioned() {
+		return ErrConsensusAlreadyProvisioned
+	}
+
+	// Spin up etcd
+	config := s.Consensus.GetConfig()
+	config.NewCluster = true
+	config.Name = name
+	config.ExternalHost = externalHost
+	config.DataDir = dataPath
+	s.Consensus.SetConfig(config)
+
+	err = s.Consensus.Start()
+	if err != nil {
+		return err
+	}
+
+	// Change system state
+	s.state = common.StateConfigured
+
+	s.logger.Info("New Cluster set up. Node is now fully operational")
+
+	return nil
+}
+
+func (s *SmalltownNode) EnterJoinClusterMode() error {
+	if s.state == common.StateConfigured {
+		return ErrAlreadySetup
+	}
+	s.state = common.StateClusterJoinMode
+
+	s.logger.Info("Node is now in the cluster join mode")
+
+	return nil
+}
+
+func (s *SmalltownNode) JoinCluster(name string, clusterString string, externalHost string) error {
+	if s.state != common.StateClusterJoinMode {
+		return ErrNotInJoinMode
+	}
+
+	s.logger.Info("Joining cluster", zap.String("cluster", clusterString), zap.String("name", name))
+
+	err := s.SetupBackend()
+	if err != nil {
+		return err
+	}
+
+	config := s.Consensus.GetConfig()
+	config.Name = name
+	config.InitialCluster = clusterString
+	config.ExternalHost = externalHost
+	s.Consensus.SetConfig(config)
+
+	// Start consensus
+	err = s.Consensus.Start()
+	if err != nil {
+		return err
+	}
+
+	s.state = common.StateConfigured
+
+	s.logger.Info("Joined cluster. Node is now syncing.")
+
+	return nil
+}
