<aside> 💡 This document is very much work in progress

</aside>

Introduction

Gitpod is really two systems integrated into one:

  1. workspace contains everything that's required to start, maintain and control a workspace. This includes
  2. meta which includes everything required to make workspaces useful and convenient:

https://youtu.be/svV-uE0Cdjk

The diagram below should provide a rough overview of the components involved, where they sit and who they talk to.

Architecture diagram of Gitpod

Architecture diagram of Gitpod

Principles

Distributed only where we have to

Gitpod is a distributed monolith. We try to keep things as closely related and together as possible, while at the same time maintaining proper separation of concerns, and introducing well-designed APIs. We're deliberately not putting every concern into their own service, because every service edge introduces a chance for failure and increases operational complexity.

Instead, Gitpod distributes across its components because it has to. The individual components exist because: