Delonix Engine v4.5.0
Engine de containers e microVMs daemonless, rootless-first, kernel-native, em Rust — com CRI próprio para Kubernetes. O engine open-source que alimenta o Delonix.
Não é um runtime OCI de baixo nível (isso é o runc/crun): é um
engine COMPLETO de containers e VMs — build, run, rede, firewall, storage e
bootstrap de clusters Kubernetes, tudo num só binário. É a camada aberta (Apache-2.0) sobre a qual
assenta a plataforma Delonix.
O Delonix Engine faz o trabalho do Docker/Podman sem daemon residente: cada comando é um processo efémero que fala directamente com o kernel (namespaces, cgroups v2, pivot_root), guarda estado em ficheiros e desaparece. Em rootless, a rede é servida por um único par holder-netns + slirp4netns partilhado — não um slirp por container — com DNAT nft para o publish de portas, o que permite trocar portas e volumes a quente, sem reiniciar o container.
Instalar
Um comando instala o binário e todas as dependências de runtime (rede rootless, VMs, tuning de kernel), escolhendo a variante certa para o teu CPU. Funciona em Debian/Ubuntu, Fedora/RHEL, openSUSE e Arch:
curl -fsSL https://github.com/angolardevops/delonix-runtime/releases/latest/download/install.sh | bash
Para publicar a porta 80 ou 443 (-p 80:80)
acrescenta --low-ports:
curl -fsSL .../install.sh | bash -s -- --low-ports
Sem essa flag, -p 80:80 é recusado: quem liga a porta do lado do host é o
slirp4netns, sem privilégios, e o kernel reserva as portas abaixo de
net.ipv4.ip_unprivileged_port_start (1024 por omissão) — o Podman e o Docker
rootless têm o mesmo muro. É opt-in porque baixa esse limiar para o host inteiro:
a partir daí qualquer programa local pode ligar-se às portas 80-1023. Num portátil é um
compromisso razoável; numa máquina partilhada, a alternativa que não baixa nada é um proxy
como root na porta 80 a encaminhar para uma porta alta. Reverter: apagar
/etc/sysctl.d/99-delonix-lowports.conf.
Alternativa (só o binário, dependências por tua conta):
curl -fL -o ~/.local/bin/delonix \
https://github.com/angolardevops/delonix-runtime/releases/latest/download/delonix-x86_64-linux
chmod +x ~/.local/bin/delonix
echo 'source <(delonix completion shell bash)' >> ~/.bashrc
Primeiros passos
delonix version # a identidade do build e o que fazer a seguir
delonix init # olha para esta pasta e começa o projecto certo
# um serviço web na porta 8080, sem root, sem daemon
delonix container run -d --name web -p 8080:80 nginx
curl localhost:8080
delonix container stats # CPU/memória/PIDs
delonix container logs -f web # logs em contínuo
delonix container stop web # a porta fecha sozinha
delonix container start web # rearranca com o mesmo estado
Referência da CLI
Cargas de trabalhoWorkloads
Ciclo de vida de containers: run, ps, start, stop, rm, exec, logs, inspect, stats, apply.Container lifecycle: run, ps, start, stop, rm, exec, logs, inspect, stats, apply.
Pods reais multi-container (create, logs, exec, cp, attach) — N containers como uma unidade.Real multi-container pods (create, logs, exec) — N containers as one unit.
microVMs declarativas: create, ls, stop, apply.Declarative microVMs: create, ls, stop, apply.
As operações pontuais de um container de sistema: snapshots.The one-off operations of a system container: snapshots.
Camada unificada sobre containers E VMs: ls, describe, stop, rm (ADR-0002).Unified layer over containers AND VMs: ls, describe, stop, rm (ADR-0002).
ArtefactosArtifacts
Imagens OCI: pull, list, remove, export — e, com `image vm`, as imagens VM douradas (build/push).OCI images: pull, list, remove, export — and, with `image vm`, the golden VM images (build/push).
Constrói uma imagem a partir de um Dockerfile ou Delonixfile.Builds an image from a Dockerfile or Delonixfile.
Cofre de segredos cifrado em repouso — o produtor do `run --secret`.Encrypted-at-rest secret vault — the source behind `run --secret`.
ArmazenamentoStorage
Volumes nomeados e bind mounts: create, ls, inspect, rm, apply.Named volumes and bind mounts: create, ls, inspect, rm, apply.
RedeNetworking
Redes de utilizador: create, ls, route, inspect, rm, apply — bridge e overlay realizados fisicamente.User networks: create, ls, inspect, rm, apply — bridge and overlay are physically realized.
A infra-estrutura de baixo nível da rede — netns, flow, ingress, egress, httproute, tunnel, l4guard, capture.The low-level network plumbing — netns, flow, ingress, egress, httproute, tunnel, l4guard, capture.
Gestão de baixo nível da infra de ingress rootless.Low-level management of the rootless ingress infrastructure.
Tráfego por-container ao vivo — datapath eBPF (degrada para contadores veth).Live per-container traffic — eBPF datapath (degrades to veth counters).
Captura de pacotes crua na interface SDN de um container — o tcpdump do próprio host.Raw packet capture on a container's SDN interface — the host's own tcpdump.
Guarda de DDoS L4 à entrada — rate de ligação por origem e tecto de concorrentes.The inbound L4 DDoS guard — per-source connection rate and a concurrent cap.
Firewall de ENTRADA (regras L4 + publishes DNAT) de um container na SDN.INBOUND firewall (L4 rules + DNAT publishes) for a container on the SDN.
Firewall de SAÍDA (regras L4 + política de egress→Internet por-rede).OUTBOUND firewall (L4 rules + per-network egress→Internet policy).
Reverse-proxy L7/HTTP embutido (`kind: HTTPRoute`) — routing por Host + prefixo de path.Built-in L7/HTTP reverse proxy (`kind: HTTPRoute`) — routing by Host + path prefix.
Expõe uma porta local à internet pública via pinggy/ngrok/cloudflare (`kind: Gateway`).Exposes a local port to the public internet via pinggy/ngrok/cloudflare (`kind: Gateway`).
Os nomes de serviço dos containers expostos, no /etc/hosts do operador.The service names of exposed containers, in the operator's /etc/hosts.
ClustersClusters
Kubernetes de ponta a ponta: bootstrap kubeadm idempotente sobre SSH, ou provisionamento completo de VMs.End-to-end Kubernetes: idempotent kubeadm bootstrap over SSH, or full VM provisioning.
Gera manifestos Kubernetes a partir de containers.Generates Kubernetes manifests from containers.
DeclarativoDeclarative
Referência de campos de um Kind, gerada do próprio código — `kubectl explain` style.Field reference for a Kind, generated from the code — `kubectl explain` style.
Todos os Kinds que este motor serve: plural, nomes curtos, apiVersion e forma.Every Kind this engine serves: plural, shortnames, apiVersion and form.
Converge um manifesto — a grafia canónica de `stack apply`.Converge a manifest — the canonical spelling of `stack apply`.
Mostra o que um apply mudaria, e não muda nada.Show what an apply would change, and change nothing.
Bloqueia até os recursos do manifesto estarem prontos.Block until the manifest's resources are ready.
Trabalhar num manifesto sem tocar no host — render com defaults preenchidos.Work on a manifest without touching the host — render with defaults filled in.
O manifesto, o last-applied e o observado de UM recurso, lado a lado.The manifest, last-applied, and observed values for one resource — side by side.
O que a MÁQUINA mudou desde o último apply — a stack inteira.What the MACHINE changed since the last apply — the whole stack.
Pontua o que já tens contra o que este motor serve.Score what you already have against what this engine serves.
Aplica um manifesto inteiro (delonix-manifest.yaml) — todos os Kinds, por ordem.Applies a whole manifest (delonix-manifest.yaml) — every Kind, in dependency order.
Suporte NATIVO a docker-compose.yml (Compose Spec v2.x) — sem Docker, sem shim, direto para o motor.NATIVE support for docker-compose.yml (Compose Spec v2.x) — no Docker, no shim, straight into the engine.
RecursosResources
Lista recursos de um Kind — a forma genérica de dez `ls`s.List resources of a Kind — the generic form of ten `ls` commands.
Detalhe de um recurso, em blocos — a forma genérica de dez `describe`s.Detail of one resource, in blocks — the generic form of ten `describe`s.
Remove recursos por Kind e nome — a forma genérica de dez `rm`s.Remove resources by Kind and name — the generic form of ten `rm`s.
ServirServe
O que este motor cobre da superfície de outra ferramenta — servido, recusado com razão, nunca em silêncio.What this engine covers of another tool's surface — served, refused with a reason, never in silence.
Serve um endpoint de protocolo num socket unix — cri, api, node-api, docker-api.Serve a protocol endpoint on a unix socket — cri, api, node-api, docker-api.
A API de gestão LOCAL (HTTP+JSON) num socket unix, para um control-plane externo.The LOCAL management API (HTTP+JSON) on a unix socket, for an external control plane.
Fatia da API Docker Engine, num socket unix — ciclo de vida completo de um container, não só leitura.A slice of the Docker Engine API, on a unix socket — full container lifecycle, not just reads.
O contrato de nó (gRPC + HTTP/JSON do delonix.node.v1) num socket unix.The node contract (gRPC + HTTP/JSON of delonix.node.v1) on a unix socket.
Servidor Model Context Protocol — superfície de controlo de IA LOCAL, sem inquilino.Model Context Protocol server — a LOCAL, tenancy-free AI control surface.
MotorEngine
Começa o projecto CERTO para este directório — detecta, explica-se, e delega.Start the RIGHT project for this directory — detect, explain, dispatch.
Imprime a versão (o mesmo texto que `--version`).Print the version (same output as `--version`).
O tecto de admissão do nó (`kind: RuntimePolicy` / `<root>/policy.json`).The node's admission ceiling (`kind: RuntimePolicy` / `<root>/policy.json`).
Uma preferência local, nunca um contexto: get, set, unset.
O motor em si: events, info, df, prune, monitor, thermal.The engine itself: events, info, df, prune, monitor, thermal.
Persistência no arranque: units systemd para os containers voltarem a subir no boot.Boot persistence: systemd units so containers come back up after a reboot.
Namespaces de isolamento: ls, describe — quem está de cada lado da fronteira.
Backup de UM recurso — container, pod, vm ou stack — em tar.gz.
O que cada provider consegue fazer — medido neste host, contra um catálogo com versão.What each provider can do — measured on this host, against a versioned catalog.
Dashboard de resumo/KPIs (TUI estilo htop) — RAM/rede/disco, uptime por-container, JSON e Prometheus.Summary/KPI dashboard (htop-style TUI) — RAM/network/disk, per-container uptime, JSON and Prometheus.
Autocompletion dinâmico para shells, e realce de sintaxe do VMfile para editores.Dynamic autocompletion for shells, and VMfile syntax highlighting for editors.
Páginas de manual em roff, geradas a partir deste binário — uma por comando.Manual pages in roff, generated from this binary — one per command.
Porque é diferente
| Docker | Podman | Delonix | |
|---|---|---|---|
| Daemon | dockerd (root) | não (conmon por container) | não — e sem monitor residente por container |
| Rootless | opcional | sim (slirp/pasta por container) | por omissão — 1 slirp partilhado + ingress nft |
| VMs | — | machine (para si próprio) | microVMs declarativas de 1.ª classe (Cloud Hypervisor/libvirt) |
| Kubernetes | — | — | CRI próprio + bootstrap kubeadm do zero (delonix cluster) |
Delonix Engine v4.5.0
Engine for containers and microVMs, daemonless, rootless-first, kernel-native, in Rust — with its own CRI for Kubernetes. The open-source engine that powers Delonix.
Not a low-level OCI runtime (that's runc/crun): it's a
COMPLETE engine for containers and VMs — build, run, networking, firewall,
storage and Kubernetes cluster bootstrap, all in a single binary. It's the open layer
(Apache-2.0) the Delonix platform is built on.
Delonix Engine does Docker/Podman's job with no resident daemon: every command is an ephemeral process that talks to the kernel directly (namespaces, cgroups v2, pivot_root), keeps its state in files, and exits. In rootless mode, networking is served by a single shared holder-netns + slirp4netns pair — not one slirp per container — with nft DNAT for port publishing, which is what lets you swap ports and volumes on the fly, with no container restart.
Install
One command installs the binary and every runtime dependency (rootless networking, VMs, kernel tuning), picking the right variant for your CPU. Works on Debian/Ubuntu, Fedora/RHEL, openSUSE and Arch:
curl -fsSL https://github.com/angolardevops/delonix-runtime/releases/latest/download/install.sh | bash
To publish port 80 or 443 (-p 80:80) add
--low-ports:
curl -fsSL .../install.sh | bash -s -- --low-ports
Without that flag, -p 80:80 is refused: the process that binds the port on the
host side is slirp4netns, unprivileged, and the kernel reserves ports below
net.ipv4.ip_unprivileged_port_start (1024 by default) — rootless Podman and Docker
hit the same wall. It's opt-in because it lowers that threshold for the whole host: from
then on, any local program can bind ports 80-1023. On a laptop that's a reasonable trade-off; on a
shared machine, the alternative that doesn't lower anything is a root proxy on port 80 forwarding
to a high port. To revert: delete /etc/sysctl.d/99-delonix-lowports.conf.
Alternative (binary only, dependencies are on you):
curl -fL -o ~/.local/bin/delonix \
https://github.com/angolardevops/delonix-runtime/releases/latest/download/delonix-x86_64-linux
chmod +x ~/.local/bin/delonix
echo 'source <(delonix completion shell bash)' >> ~/.bashrc
Getting started
delonix version # the build's identity, and what to do next
delonix init # looks at this folder and starts the right project
# a web service on port 8080, no root, no daemon
delonix container run -d --name web -p 8080:80 nginx
curl localhost:8080
delonix container stats # CPU/memory/PIDs
delonix container logs -f web # follow logs
delonix container stop web # the port closes on its own
delonix container start web # restarts with the same state
CLI reference
Cargas de trabalhoWorkloads
Ciclo de vida de containers: run, ps, start, stop, rm, exec, logs, inspect, stats, apply.Container lifecycle: run, ps, start, stop, rm, exec, logs, inspect, stats, apply.
Pods reais multi-container (create, logs, exec, cp, attach) — N containers como uma unidade.Real multi-container pods (create, logs, exec) — N containers as one unit.
microVMs declarativas: create, ls, stop, apply.Declarative microVMs: create, ls, stop, apply.
As operações pontuais de um container de sistema: snapshots.The one-off operations of a system container: snapshots.
Camada unificada sobre containers E VMs: ls, describe, stop, rm (ADR-0002).Unified layer over containers AND VMs: ls, describe, stop, rm (ADR-0002).
ArtefactosArtifacts
Imagens OCI: pull, list, remove, export — e, com `image vm`, as imagens VM douradas (build/push).OCI images: pull, list, remove, export — and, with `image vm`, the golden VM images (build/push).
Constrói uma imagem a partir de um Dockerfile ou Delonixfile.Builds an image from a Dockerfile or Delonixfile.
Cofre de segredos cifrado em repouso — o produtor do `run --secret`.Encrypted-at-rest secret vault — the source behind `run --secret`.
ArmazenamentoStorage
Volumes nomeados e bind mounts: create, ls, inspect, rm, apply.Named volumes and bind mounts: create, ls, inspect, rm, apply.
RedeNetworking
Redes de utilizador: create, ls, route, inspect, rm, apply — bridge e overlay realizados fisicamente.User networks: create, ls, inspect, rm, apply — bridge and overlay are physically realized.
A infra-estrutura de baixo nível da rede — netns, flow, ingress, egress, httproute, tunnel, l4guard, capture.The low-level network plumbing — netns, flow, ingress, egress, httproute, tunnel, l4guard, capture.
Gestão de baixo nível da infra de ingress rootless.Low-level management of the rootless ingress infrastructure.
Tráfego por-container ao vivo — datapath eBPF (degrada para contadores veth).Live per-container traffic — eBPF datapath (degrades to veth counters).
Captura de pacotes crua na interface SDN de um container — o tcpdump do próprio host.Raw packet capture on a container's SDN interface — the host's own tcpdump.
Guarda de DDoS L4 à entrada — rate de ligação por origem e tecto de concorrentes.The inbound L4 DDoS guard — per-source connection rate and a concurrent cap.
Firewall de ENTRADA (regras L4 + publishes DNAT) de um container na SDN.INBOUND firewall (L4 rules + DNAT publishes) for a container on the SDN.
Firewall de SAÍDA (regras L4 + política de egress→Internet por-rede).OUTBOUND firewall (L4 rules + per-network egress→Internet policy).
Reverse-proxy L7/HTTP embutido (`kind: HTTPRoute`) — routing por Host + prefixo de path.Built-in L7/HTTP reverse proxy (`kind: HTTPRoute`) — routing by Host + path prefix.
Expõe uma porta local à internet pública via pinggy/ngrok/cloudflare (`kind: Gateway`).Exposes a local port to the public internet via pinggy/ngrok/cloudflare (`kind: Gateway`).
Os nomes de serviço dos containers expostos, no /etc/hosts do operador.The service names of exposed containers, in the operator's /etc/hosts.
ClustersClusters
Kubernetes de ponta a ponta: bootstrap kubeadm idempotente sobre SSH, ou provisionamento completo de VMs.End-to-end Kubernetes: idempotent kubeadm bootstrap over SSH, or full VM provisioning.
Gera manifestos Kubernetes a partir de containers.Generates Kubernetes manifests from containers.
DeclarativoDeclarative
Referência de campos de um Kind, gerada do próprio código — `kubectl explain` style.Field reference for a Kind, generated from the code — `kubectl explain` style.
Todos os Kinds que este motor serve: plural, nomes curtos, apiVersion e forma.Every Kind this engine serves: plural, shortnames, apiVersion and form.
Converge um manifesto — a grafia canónica de `stack apply`.Converge a manifest — the canonical spelling of `stack apply`.
Mostra o que um apply mudaria, e não muda nada.Show what an apply would change, and change nothing.
Bloqueia até os recursos do manifesto estarem prontos.Block until the manifest's resources are ready.
Trabalhar num manifesto sem tocar no host — render com defaults preenchidos.Work on a manifest without touching the host — render with defaults filled in.
O manifesto, o last-applied e o observado de UM recurso, lado a lado.The manifest, last-applied, and observed values for one resource — side by side.
O que a MÁQUINA mudou desde o último apply — a stack inteira.What the MACHINE changed since the last apply — the whole stack.
Pontua o que já tens contra o que este motor serve.Score what you already have against what this engine serves.
Aplica um manifesto inteiro (delonix-manifest.yaml) — todos os Kinds, por ordem.Applies a whole manifest (delonix-manifest.yaml) — every Kind, in dependency order.
Suporte NATIVO a docker-compose.yml (Compose Spec v2.x) — sem Docker, sem shim, direto para o motor.NATIVE support for docker-compose.yml (Compose Spec v2.x) — no Docker, no shim, straight into the engine.
RecursosResources
Lista recursos de um Kind — a forma genérica de dez `ls`s.List resources of a Kind — the generic form of ten `ls` commands.
Detalhe de um recurso, em blocos — a forma genérica de dez `describe`s.Detail of one resource, in blocks — the generic form of ten `describe`s.
Remove recursos por Kind e nome — a forma genérica de dez `rm`s.Remove resources by Kind and name — the generic form of ten `rm`s.
ServirServe
O que este motor cobre da superfície de outra ferramenta — servido, recusado com razão, nunca em silêncio.What this engine covers of another tool's surface — served, refused with a reason, never in silence.
Serve um endpoint de protocolo num socket unix — cri, api, node-api, docker-api.Serve a protocol endpoint on a unix socket — cri, api, node-api, docker-api.
A API de gestão LOCAL (HTTP+JSON) num socket unix, para um control-plane externo.The LOCAL management API (HTTP+JSON) on a unix socket, for an external control plane.
Fatia da API Docker Engine, num socket unix — ciclo de vida completo de um container, não só leitura.A slice of the Docker Engine API, on a unix socket — full container lifecycle, not just reads.
O contrato de nó (gRPC + HTTP/JSON do delonix.node.v1) num socket unix.The node contract (gRPC + HTTP/JSON of delonix.node.v1) on a unix socket.
Servidor Model Context Protocol — superfície de controlo de IA LOCAL, sem inquilino.Model Context Protocol server — a LOCAL, tenancy-free AI control surface.
MotorEngine
Começa o projecto CERTO para este directório — detecta, explica-se, e delega.Start the RIGHT project for this directory — detect, explain, dispatch.
Imprime a versão (o mesmo texto que `--version`).Print the version (same output as `--version`).
O tecto de admissão do nó (`kind: RuntimePolicy` / `<root>/policy.json`).The node's admission ceiling (`kind: RuntimePolicy` / `<root>/policy.json`).
Uma preferência local, nunca um contexto: get, set, unset.
O motor em si: events, info, df, prune, monitor, thermal.The engine itself: events, info, df, prune, monitor, thermal.
Persistência no arranque: units systemd para os containers voltarem a subir no boot.Boot persistence: systemd units so containers come back up after a reboot.
Namespaces de isolamento: ls, describe — quem está de cada lado da fronteira.
Backup de UM recurso — container, pod, vm ou stack — em tar.gz.
O que cada provider consegue fazer — medido neste host, contra um catálogo com versão.What each provider can do — measured on this host, against a versioned catalog.
Dashboard de resumo/KPIs (TUI estilo htop) — RAM/rede/disco, uptime por-container, JSON e Prometheus.Summary/KPI dashboard (htop-style TUI) — RAM/network/disk, per-container uptime, JSON and Prometheus.
Autocompletion dinâmico para shells, e realce de sintaxe do VMfile para editores.Dynamic autocompletion for shells, and VMfile syntax highlighting for editors.
Páginas de manual em roff, geradas a partir deste binário — uma por comando.Manual pages in roff, generated from this binary — one per command.
Why it's different
| Docker | Podman | Delonix | |
|---|---|---|---|
| Daemon | dockerd (root) | no (conmon per container) | no — and no resident per-container monitor |
| Rootless | optional | yes (slirp/pasta per container) | by default — 1 shared slirp + nft ingress |
| VMs | — | machine (for itself) | first-class declarative microVMs (Cloud Hypervisor/libvirt) |
| Kubernetes | — | — | own CRI + kubeadm bootstrap from scratch (delonix cluster) |