Forgeyard

A self-hosted platform for deploying Docker applications across nodes.

Overview

Forgeyard brings application deployment, node management and operational visibility together in a self-hosted control plane.

Problem

Running applications across machines requires placement, routing and deployment management as well as the containers themselves.

Architecture

A Go server hosts the API and interface. Agents initiate mTLS connections to the server, receive the desired state for their node and reconcile it with Docker. The server manages DNS; Traefik routes application traffic and provides HTTPS.

  1. Browser
  2. Go control plane
  3. mTLS agent
  4. Docker / Traefik
  5. Applications
Simplified component flow.

Engineering decisions

The server does not access Docker directly. Agents open outbound connections, so managed nodes do not need an inbound management port. Placement and DNS are handled centrally, while reconciliation happens on each node.

Challenges

Keeping the desired state aligned with containers on separate nodes involves handling disconnections, deployment changes and reported status.

Reliability & security

Agent communication uses mutual TLS. Secrets, certificate management and API protections are documented in the repository.

Testing

The repository includes Go tests and integration tests for agent and deployment behavior.

Links

Repository · Documentation · Lab