Skip to content

Docker Compose syntax that scales

Docker Compose syntax that scales.

Architecture

Banyan separates control and data planes for scalability and simplicity:

┌─────────────────────────────────────────────────────────────────────────────┐
│ Banyan Architecture │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ │
│ │ banyan-cli │ ← Developer/DevOps │
│ │ (Client Tool) │ │
│ └────────┬─────────┘ │
│ │ gRPC │
│ │ deploy/status/logs │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ banyan-engine (Control Plane) │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ gRPC │ │ Scheduler │ │ Store │ │ Registry │ │ │
│ │ │ Server │ │ │ │ (Badger/ │ │ (Built-in │ │ │
│ │ │ │ │ │ │ Redis/ │ │ OCI) │ │ │
│ │ │ │ │ │ │ etcd) │ │ │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ gRPC │
│ │ task assignment │
│ │ health monitoring │
│ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ banyan-agent │ │ banyan-agent │ │ banyan-agent │ │
│ │ ┌────────────┐ │ │ ┌────────────┐ │ │ ┌────────────┐ │ │
│ │ │containerd │ │ │ │containerd │ │ │ │containerd │ │ │
│ │ │+ nerdctl │ │ │ │+ nerdctl │ │ │ │+ nerdctl │ │ │
│ │ └────────────┘ │ │ └────────────┘ │ │ └────────────┘ │ │
│ │ Worker Node 1 │ │ Worker Node 2 │ │ Worker Node N │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
│ Optional VPC Networking (etcd only): │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Flannel VXLAN Overlay + DNS Service Discovery │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘

How it works:

  1. CLI submits banyan.yaml manifest to Engine via gRPC
  2. Engine stores deployment state and schedules tasks across available agents
  3. Agents poll for tasks, pull images from built-in registry, and run containers
  4. Agents report container health and status back to Engine
  5. VPC Networking (optional) creates secure cross-node communication

From one server to many

You know Docker Compose. You write a docker-compose.yml, run docker compose up, and everything works on one machine.

Then your app grows. You want your services spread across separate servers, or running multiple replicas to handle load. Either way, you need more than one machine.

Banyan makes that step simple. Use the same YAML syntax you already know, and Banyan distributes your services across your servers.

Same syntax, more servers

docker-compose.yml — everything on one machine:

services:
web:
build: ./web
ports:
- "80:80"
api:
build: ./api
ports:
- "8080:8080"
environment:
- DB_HOST=db
db:
image: postgres:15-alpine

banyan.yaml — distributed across your cluster:

name: my-app
services:
web:
build: ./web
ports:
- "80:80"
api:
build: ./api
deploy:
replicas: 3
ports:
- "8080:8080"
environment:
- DB_HOST=db
db:
image: postgres:15-alpine

Same services. Same build. Same ports. Same environment. Add name: and deploy.replicas, and Banyan spreads them across your servers automatically.

Three commands to a running cluster

Terminal window
# On your control plane server
sudo banyan-engine start
# On each worker server
sudo banyan-agent start --node-name agent-1
# From anywhere
banyan-cli deploy -f banyan.yaml

No package managers. No plugins. Three focused binaries — engine, agent, and CLI.

Familiar syntax

If you can write a docker-compose.yml, you can write a banyan.yaml. Same fields, same structure.

Single-binary components

Three small, focused binaries. Download, run, done. No complex setup or configuration management required.

Built-in image registry

No Docker Hub, no private registry setup. Use build: in your manifest and Banyan builds, stores, and distributes your images automatically. Deploy to a cluster as easily as running locally.

Automatic distribution

Services are automatically distributed across your servers. Add a node, it picks up work on the next deployment.

Built-in VPC

Secure cross-node networking using Flannel with VXLAN overlay and built-in DNS service discovery. Services on different servers communicate as if they were on the same network.

Proven foundations

Built on battle-tested technologies: BadgerDB, etcd, containerd, gRPC, and Prometheus metrics (coming soon).

Is Banyan right for you?

Banyan is built for teams who:

  • Deploy to 1-20 servers
  • Know Docker Compose and want the same simplicity in production
  • Value getting things running over configuring infrastructure