Lightweight container orchestration, simplified

Deploy and manage containerized applications with declarative YAML, a REST API, and zero complexity. A lightweight alternative to Kubernetes.

$cargo install --git https://github.com/kemeter/ring.git
Declarative

Define once, deploy anywhere

Describe your entire deployment in a simple YAML file. Ring handles container creation, networking, health checks, and scaling automatically.

app.yaml
deployments:
  web-app:
    name: web-app
    namespace: production
    runtime: docker
    image: "nginx:1.21"
    replicas: 3

    environment:
      NODE_ENV: "production"

    health_checks:
      - type: http
        url: "http://localhost:80/"
        interval: "10s"
        timeout: "5s"
API-First

Complete REST API

Every operation available through the CLI is also available via the REST API. Integrate Ring into your CI/CD pipelines, scripts, and automation workflows.

Terminal
$ curl -X POST http://localhost:3030/deployments \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "web-app",
    "namespace": "production",
    "runtime": "docker",
    "image": "nginx:1.21",
    "replicas": 3
  }'
Security

Built-in secret management

Store sensitive values encrypted at rest with AES-256-GCM. Reference secrets in your deployments and they are decrypted and injected at deployment time.

secure-app.yaml
deployments:
  secure-app:
    name: secure-app
    namespace: production
    image: "myapp:latest"

    environment:
      DATABASE_HOST: "db.production"
      DATABASE_PASSWORD:
        secretRef: "database-password"
      API_KEY:
        secretRef: "api-key"
Reliability

Health checks & rolling updates

Configure health checks and Ring performs zero-downtime rolling updates automatically. If a new container fails, the rollout stops and old containers stay running.

health-check.yaml
deployments:
  web-app:
    name: web-app
    image: "nginx:1.21"
    replicas: 3

    health_checks:
      - type: http
        url: "http://localhost:80/healthz"
        interval: "10s"
        timeout: "5s"
        threshold: 3
        on_failure: restart
Isolation

Namespace isolation

Organize deployments by environment with namespaces. Each namespace gets its own isolated Docker network. Deploy the same application across multiple environments.

multi-env.yaml
namespaces:
  production:
    name: production
  staging:
    name: staging

deployments:
  prod-app:
    name: my-app
    namespace: production
    image: "myapp:v1.2.3"
    replicas: 5

  staging-app:
    name: my-app
    namespace: staging
    image: "myapp:staging"
    replicas: 2

Ready to deploy?

Get started in minutes. Deploy your first container with Ring.

Get started