Skip to content

Core concepts

A quick tour of the objects you’ll work with. Everything in BitsReef hangs off this hierarchy:

Organization → Project → Service → (env vars, domains, volumes, cron jobs…)

A project’s canvas shows its services as nodes, with a toolbar for adding services, volumes, functions, webhooks, and more:

A project canvas with two running services

The top-level tenant and billing boundary. Every user gets a personal organization automatically on signup. Organizations hold members with roles (owner, admin, member, viewer) and own all projects and billing. Most CLI and API URLs are scoped by an organization ID.

A logical grouping of related services — think “one app and its dependencies.” Projects own the services you deploy, plus project-scoped resources like volumes and webhooks. A project has a slug used in generated URLs and container names.

A single deployable unit — one container image running one or more replicas. A service is created from either:

  • a container image (e.g. nginx:latest, or an image in a private registry), or
  • a Git repository, which BitsReef builds into an image for you.

Each service gets an auto-assigned subdomain with HTTPS, environment variables, optional custom domains, health checks, and autoscaling settings.

A deployment is one attempt to roll out a service — pull/build the image, start containers, wire up routing, and run health checks. Each deploy is recorded with its build and runtime logs, so you can watch progress (bitsreef up --follow) and roll back to a previous one.

BitsReef runs Traefik as a reverse proxy in front of your services. When a service deploys, Traefik picks up its route automatically and provisions a TLS certificate via Let’s Encrypt — so every service is reachable over HTTPS with no certificate management on your part. Custom domains work the same way once DNS is verified.

Tenant workloads run under a hardened container runtime (gVisor) on dedicated worker nodes, separate from the platform’s control plane. Builds run in a sandbox with restricted network egress. You don’t configure any of this — it’s how the platform is built.