@serve.zone/cloudly

an Open Source solution for workload management at Enterprise scale.

readme.md for @serve.zone/cloudly

Multi-cloud orchestration made simple. Manage containerized applications across cloud providers with Docker Swarmkit, featuring web dashboards, CLI tools, and powerful APIs.

🎯 What is Cloudly?

Cloudly is your command center for multi-cloud infrastructure. It abstracts away the complexity of managing resources across different cloud providers while giving you the power and flexibility you need for modern DevOps workflows.

✨ Key Features

πŸš€ Quick Start

Installation

# Install the main package
pnpm add @serve.zone/cloudly

# Or install the CLI globally
pnpm add -g @serve.zone/cli

# Or just the API client
pnpm add @serve.zone/api

Basic Setup

import { Cloudly } from '@serve.zone/cloudly';

// Initialize Cloudly with your configuration
const cloudly = new Cloudly({
  cfToken: process.env.CLOUDFLARE_TOKEN,
  hetznerToken: process.env.HETZNER_TOKEN,
  environment: 'production',
  letsEncryptEmail: 'certs@example.com',
  publicUrl: 'cloudly.example.com',
  publicPort: 443,
  mongoDescriptor: {
    mongoDbUrl: process.env.MONGODB_URL,
    mongoDbName: 'cloudly',
    mongoDbUser: process.env.MONGODB_USER,
    mongoDbPass: process.env.MONGODB_PASS,
  }
});

// Start the platform
await cloudly.start();
console.log('πŸŽ‰ Cloudly is running!');

πŸ—οΈ Architecture

Cloudly follows a modular architecture with clear separation of concerns:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             Web Dashboard (UI)              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          API Layer (TypedRouter)            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              Core Managers                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚ Cluster β”‚ β”‚  Image  β”‚ β”‚ Secret  β”‚ ...    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚            Cloud Connectors                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€----┐  β”‚
β”‚  β”‚Cloudflareβ”‚ β”‚ Hetzner β”‚ β”‚ DigitalOcean β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ └──────────----β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ’» Core Components

πŸ”§ Managers

πŸ”Œ Connectors

πŸ“š Usage Examples

Managing Clusters

// Create a new cluster
const cluster = await cloudly.clusterManager.createCluster({
  name: 'production-cluster',
  region: 'eu-central',
  nodeCount: 3
});

// Deploy a service
await cluster.deployService({
  name: 'api-service',
  image: 'myapp:latest',
  replicas: 3,
  ports: [{ published: 80, target: 3000 }]
});

Secret Management

// Create a secret group
const secretGroup = await cloudly.secretManager.createSecretGroup({
  name: 'api-credentials',
  secrets: [
    { key: 'API_KEY', value: process.env.API_KEY },
    { key: 'DB_PASSWORD', value: process.env.DB_PASSWORD }
  ]
});

// Create a bundle for deployment
const bundle = await cloudly.secretManager.createSecretBundle({
  name: 'production-secrets',
  secretGroups: [secretGroup]
});

DNS Management

// Create DNS records via Cloudflare
const record = await cloudly.cloudflareConnector.createDNSRecord(
  'example.com',
  'api.example.com', 
  'A',
  '192.168.1.1'
);

Web Dashboard

import { html } from '@design.estate/dees-element';

// Create a custom dashboard view
const dashboard = html`
  <cloudly-dashboard>
    <cloudly-view-clusters></cloudly-view-clusters>
    <cloudly-view-dns></cloudly-view-dns>
    <cloudly-view-images></cloudly-view-images>
  </cloudly-dashboard>
`;

document.body.appendChild(dashboard);

πŸ› οΈ CLI Usage

The CLI provides quick access to all Cloudly features:

# Login to your Cloudly instance
servezone login --url https://cloudly.example.com

# List clusters
servezone clusters list

# Deploy a service
servezone deploy --cluster prod --image myapp:latest

# Manage secrets
servezone secrets create --name api-key --value "secret123"

# View logs
servezone logs --service api-service --follow

πŸ“¦ Package Exports

This monorepo publishes multiple packages:

πŸ”’ Security Features

🚒 Production Ready

Cloudly is battle-tested in production environments managing:

🀝 Development

# Clone the repository
git clone https://gitlab.com/servezone/private/cloudly.git

# Install dependencies
pnpm install

# Run tests
pnpm test

# Build the project
pnpm build

# Start development mode
pnpm watch

πŸ“– Documentation

For detailed documentation, API references, and guides, visit our documentation site.

This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the license file within this repository.

Please note: The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.

Trademarks

This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.

Company Information

Task Venture Capital GmbH
Registered at District court Bremen HRB 35230 HB, Germany

By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.

changelog.md for @serve.zone/cloudly

2025-09-08 - 5.3.0 - feat(web)

Add deployments API typings and web UI improvements: services & deployments management with CRUD and actions

2025-09-07 - 5.2.0 - feat(settings)

Add runtime settings management, node & baremetal managers, and settings UI

2025-09-05 - 5.1.0 - feat(cluster)

Add cluster setupMode (manual|hetzner|aws|digitalocean) with conditional Hetzner auto-provisioning; UI and dashboard improvements; dependency upgrades

2025-08-18 - 5.0.6 - fix(connector.letsencrypt)

Improve Let's Encrypt integration and certificate handling; fix coreflow certificate response; add local assistant permissions config

2025-08-18 - 5.0.6 - fix(connector.letsencrypt)

Improve Let's Encrypt integration and certificate handling; add local assistant permissions config

2025-08-18 - 5.0.5 - fix(coreflow)

Fix Coreflow identity lookup and response shape; improve API client tests and bump dependencies

2025-04-25 - 5.0.4 - fix(platformservice/mta)

Update getEmailStatus response schema: make details property optional

2025-04-25 - 5.0.3 - fix(mta)

update email status response type in MTA platform service

2025-04-25 - 5.0.2 - fix(platformservice/mta)

Refactor email status response in MTA service

2025-04-25 - 5.0.1 - fix(mta)

Update email stats response interface in mta platform service to include totalEmailsSent, totalEmailsDelivered, totalEmailsBounced, averageDeliveryTimeMs, and lastUpdated timestamp.

2025-04-25 - 5.0.0 - BREAKING CHANGE(ts_interfaces/platformservice/mta)

Rename mta interfaces and upgrade dependency versions

2025-01-20 - 4.13.0 - feat(service)

Add support for service creation, update, and deletion.

2025-01-20 - 4.12.2 - fix(service)

Fix secret bundle and service management bugs

2025-01-02 - 4.12.1 - fix(deps)

Updated @git.zone/tspublish to version ^1.9.1

2025-01-02 - 4.12.0 - feat(cli)

Add CLI support and external registries view

2024-12-30 - 4.11.0 - feat(external-registry)

Introduce external registry management

2024-12-29 - 4.10.0 - feat(apiclient)

Added support for managing external registries in the API client.

2024-12-29 - 4.9.0 - feat(apiclient)

Add external registry management capabilities to Cloudly API client.

2024-12-28 - 4.8.1 - fix(interfaces)

Fix image location schema in IImage interface

2024-12-28 - 4.8.0 - feat(manager.registry)

Add external registry management

2024-12-28 - 4.7.1 - fix(secretmanagement)

Refactor secret bundle actions and improve authorization handling

2024-12-22 - 4.7.0 - feat(apiclient)

Add method to flatten secret bundles into key-value objects.

2024-12-22 - 4.6.0 - feat(cloudlyapiclient)

Extend CloudlyApiClient with cluster, secretbundle, and secretgroup methods

2024-12-22 - 4.5.5 - fix(apiclient)

Fixed image creation method in cloudlyApiClient

2024-12-21 - 4.5.4 - fix(ts_web)

Fix action type and data fields in appstate for CRUD operations

2024-12-21 - 4.5.3 - fix(secret-management)

Refactor secret management to use distinct secret bundle and group APIs. Introduce API client classes for secret bundles and groups.

2024-12-20 - 4.5.2 - fix(apiclient)

Implemented IService interface in Service class and improved secret bundle documentation.

2024-12-17 - 4.5.1 - fix(core)

Updated dependencies in package.json to latest versions.

2024-12-14 - 4.5.0 - feat(services)

Add service management functionalities

2024-11-18 - 4.4.0 - feat(api-client)

Add static method getImageById for Image class in api-client

2024-11-18 - 4.3.21 - fix(interfaces)

Remove deprecated deployment directive and update related interfaces

2024-11-18 - 4.3.20 - fix(apiclient)

Ensure mandatory parameter in CloudlyApiClient constructor

2024-11-18 - 4.3.19 - fix(docker)

Fix improper Docker push command preventing push to the correct registry.

2024-11-17 - 4.3.18 - fix(docker_tags)

Updated Docker configuration to include NPM tokens.

2024-11-17 - 4.3.17 - fix(Dockerfile)

Corrected docker base image tag in Dockerfile for alpine compatibility.

2024-11-17 - 4.3.16 - fix(infrastructure)

Correct Docker image path in Dockerfile for improved build consistency.

2024-11-17 - 4.3.15 - fix(project setup)

fixed incorrect configuration in npmextra.json

2024-11-16 - 4.3.14 - fix(docker tags)

Comment out unused secret variables in docker_tags.yaml

2024-11-16 - 4.3.13 - fix(package)

Updated package dependencies

2024-11-06 - 4.3.12 - fix(workflow)

Fix Docker image path in GitHub action workflow

2024-11-06 - 4.3.11 - fix(overall)

Refactor and improve code consistency across all modules

2024-11-06 - 4.3.10 - fix(dependencies)

Updated dependencies and fixed Docker Alpine image retrieval issue in tests

2024-11-06 - 4.3.9 - fix(test and dependencies)

Corrected cloudlyUrl in test.apiclient and updated tapbundle dependency.

2024-11-06 - 4.3.8 - fix(api client)

Fixed localhost URL issue in test.client.ts

2024-11-06 - 4.3.7 - fix(tests)

Refactored test setup for consistency and isolated config initialization.

2024-11-06 - 4.3.6 - fix(test)

Enhance test helpers with dynamic Hetzner token retrieval.

2024-11-06 - 4.3.5 - fix(helpers)

Add missing sslMode configuration to Cloudly config.

2024-11-06 - 4.3.4 - fix(testing)

Fixed Cloudly testing setup and dependencies

2024-11-05 - 4.3.3 - fix(core)

Fix configuration initialization by accepting a config argument

2024-11-05 - 4.3.2 - fix(npmextra)

Updated npm registry URL in npmextra.json

2024-11-05 - 4.3.1 - fix(package)

Update dependency version for @git.zone/tspublish

2024-11-05 - 4.3.0 - feat(dependencies)

Upgrade dependencies and include publish orders

2024-11-04 - 4.2.1 - fix(config)

Fix Docker image URL in Gitea workflow.

2024-11-04 - 4.2.0 - feat(cloudron)

Add Dockerfile for Cloudron deployment

2024-10-28 - 4.1.3 - fix(dependency)

Updated dependency @git.zone/tspublish to version ^1.6.0

2024-10-28 - 4.1.2 - fix(core)

Corrected description and devDependencies

2024-10-28 - 4.1.1 - fix(core)

Fixed syntax issues in commitinfo data and package.json file.

2024-10-28 - 4.1.0 - feat(core)

Enhance core functionality for cloud management and orchestration

2024-10-28 - 4.0.1 - fix(package_manager)

Update @git.zone/tspublish dependency version

2024-10-28 - 4.0.0 - BREAKING CHANGE(core)

Significant overhaul with potential breaking changes, update to version 3.0.0

2024-10-28 - 1.2.5 - fix(build)

Updated devDependencies for tspublish and removed buildDocs script

2024-10-27 - 1.2.4 - fix(ci)

Fix Docker images and npm registry URL in CI workflows

2024-10-23 - 1.2.3 - fix(cli)

Set up CLI client definition and registry configuration

2024-10-23 - 1.2.2 - fix(docs)

Updated documentation with clearer usage instructions and examples.

2024-10-23 - 1.2.1 - fix(core)

Fixed startup issue for the Cloudly instance

2024-10-21 - 1.2.0 - feat(cli)

Add tspublish.json for CLI client and interfaces

2024-10-21 - 1.1.9 - fix(build)

Update Node types and other dependencies, add tspublish.json for api client

2024-10-16 - 1.1.8 - fix(big fix upgrade)

fix: update dependency versions and address type errors

2024-08-25 - 1.1.7 - fix(deps)

Update dependencies to latest versions

2024-06-20 - 1.1.6 - Updates

Routine updates and fixes.

2024-06-13 - 1.1.4 - Service Management Preparation

Incorporated updates and service management preparations.

2024-06-05 - 1.1.3 - CI Integration Improvement

Structural improvements and better CI integration preparation.

2024-06-02 - 1.1.2 - Image Manager Update

Prepared proper storage and retrieval of container images.

2024-06-01 - 1.1.0 - Image Registry Work

Initiated work on image registry.

2024-05-30 - 1.0.216 - Enhanced Smartguards

Enhanced smartguards to verify action authorization.

2024-05-28 - 1.0.215 - Unified Package Update

Updated package unification for cloudly + API + CLI.

2024-05-05 - 1.0.214 - Core Updates

Routine core updates.

2024-04-20 - 1.0.213 - Core Update

Routine core updates.