AeolusCloudBSD

Extraordinary Containers.
Native BSD.

OCI on native BSD — distribute instances across your cluster, rebalance when load shifts, recover when a node drops. Familiar create · run · stop · logs. From REVYTECH.

  1. Distributeplace replicas on healthy nodes
  2. Rebalancetraffic follows capacity
  3. Recoverstandbys keep the stack up
Checking live demos…
aeolus run
# Pull OCI image · run on native BSD
aeolus run -d --name web -p 443:443 --memory 2G registry.example/caddy:latest

François Boucher — Juno Asking Aeolus to Release the Winds (public domain)

Live demos

Two isolated environments. Pick one.

One host · WordPress ensemble

blog.aeolus.cloudbsd.ai · same stack as cluster

— wordpress-b@blog
Single-stack ensemble on one host single-stack host host —
  • web
  • database
  • cache
  • has storage
Instance Role Storage State

Runtime

CLI version
—
Running instances
—
Ensembles
—
Last health tick
—

What you get

  • Distribute. Place redundant web, database, cache, and workers across nodes — the live topology shows where every instance runs.
  • Rebalance & recover. When an instance or node fails, replicas and mesh peers keep serving. Standbys, read paths, and workers keep the stack moving.
  • Ensembles. One YAML file groups interdependent services with shared lifecycle, startup order, and network aliases — then you scale out the instances.
  • Muscle memory. create · run · stop · logs · ensemble — keep the workflow you know, on native BSD without a Linux guest VM layer.

How the parts fit

OCI image in, native BSD out. Spread ensembles across nodes — distribute, rebalance, recover.

Namespace → Pod → Ensemble

Namespace and pod labels on every ensemble. Omit them and Aeolus fills defaults so existing YAML keeps working.

  • Namespace label scope for ensembles (default: default)
  • Pod label for the stack unit; default {ensemble}-default when omitted
  • Ensemble multi-service stack in one YAML file
  • Ladon clustered secrets — ladon.revytechinc.com
  • CloudBSD demo images build recipes at cloudbsdorg/aeolus-examples

Image → CLI → native BSD

OCI image to aeolus CLI to native BSD instance OCI image layers + config aeolus CLI runtime Native instance isolated · CloudBSD

Open the ensemble

An ensemble is one YAML file that declares a multi-service stack — web, database, cache, and friends — with shared lifecycle so Aeolus can distribute, rebalance, and recover the whole unit.

Declare once, scale with replicas. Storage pools hold durable data; instances attach by volume name. Standbys and read paths keep recovery honest.

ensemble.yml
# CloudBSD demo images — see github.com/cloudbsdorg/aeolus-examples
version: "1.0"
name: aeolus-blog
namespace: demo
# pod omitted → aeolus-blog-default

volumes:
  - name: db-data
    pool: zfs/aeolus/blog
  - name: wp-data
    pool: zfs/aeolus/blog

services:
  - name: db
    image: ghcr.io/cloudbsdorg/aeolus-mariadb:16
    replicas: 1
    volumes: [db-data]
    # secretRef: { ladon: demo/db/password }  → Ladon cluster
  - name: wordpress
    image: ghcr.io/cloudbsdorg/aeolus-wordpress:16
    replicas: 2
    depends_on: [db]
    ports: ["8080:80"]
    volumes: [wp-data]
aeolus-blog HA: wordpress replicas×2, storage pools, db+standby ensemble: aeolus-blog · pool zfs/aeolus/blog wordpress replicas: 2 · #1 wordpress-2 replicas: 2 · #2 memcache object cache redis session / queue db primary db-standby replica db-read @ n3 mesh read request · cache hit · SQL · replication

Two certificate planes

Node mesh (private)

An offline cluster CA issues node certificates. Nodes prove identity to each other — operators stay off the public CA.

Public names (Let’s Encrypt)

Product hostnames such as blog.aeolus.cloudbsd.ai present certificates browsers already trust.

How networking works

Publish a port, give services aliases, hit the product name from a browser. Map the same pattern onto your own nodes.

Browser to public name to published service port Browser blog.aeolus.cloudbsd.ai public TLS Published service port -p 443:443 · ensemble DNS /etc/hosts service aliases

On your cluster: publish the service port, point DNS at the node that publishes it, and keep node-to-node auth on the private mesh CA.

On your cluster

Same muscle memory. Install the CloudBSD package that ships aeolus, then create, run, and ensemble.

create · run · stop · logs
# Single service
aeolus create --name api -p 8443:443 --memory 1G ./bundle
aeolus start api
aeolus ps

# Multi-service stack — same shape as ensemble.yml above
aeolus ensemble validate ./ensemble.yml
aeolus ensemble up ./ensemble.yml
aeolus ensemble status ./ensemble.yml

# Cluster mesh (nodes only — not for browsers)
aeolus cert bootstrap --cn cluster.example
aeolus cert issue-node n1
aeolus cert issue-node n2
  1. Install Aeolus from your CloudBSD package set.
  2. Bootstrap a private cluster CA and issue one cert per node.
  3. Run workloads with aeolus run or group them with aeolus ensemble up.
  4. Publish ports and attach public TLS only to the names browsers will open.

Live demos

Hit a running ensemble — same distribute → rebalance → recover story, public TLS: