SkywardAI ← Back to Landing Page
πŸ•ΈοΈ Skyward Mesh · Architecture

How Skyward Mesh Secures Node Connectivity Without a Service Mesh

Private k3s clusters ship with flannel β€” unencrypted, flat networking. Connecting nodes across different networks requires manual WireGuard key management. The conventional fix, a service mesh like Istio or Linkerd, injects a sidecar proxy into every pod: hundreds of extra containers that consume RAM and add latency to every LLM inference call. Skyward Mesh solves this without sidecars: Cilium replaces kube-proxy with eBPF programs that run directly in the kernel β€” faster than iptables, with transparent WireGuard encryption between nodes β€” while Headscale automates WireGuard key exchange so any node joins the mesh with a single command, whether it is on the same LAN or separated by NAT.

The architecture

Headscale manages the WireGuard control plane; Cilium enforces network policy in the Linux kernel. Three nodes, zero sidecar proxies.

Skyward Mesh architecture: Headscale distributes WireGuard keys and overlay IPs to three k3s nodes, each running Cilium eBPF to replace kube-proxy and flannel. A WireGuard encrypted overlay connects all nodes. Cilium NetworkPolicy allows Skyward Chat to reach Skyward Gate, Gate to reach Ollama/vLLM, and blocks any direct Chat-to-inference path.

Headscale distributes WireGuard keys and assigns stable overlay IPs (100.x.x.x) to each node. Cilium runs as an eBPF program in the kernel β€” no iptables, no flannel VXLAN. The bottom panel shows the enforced access topology: Chat reaches Gate; Gate reaches the inference backend; no direct path exists from Chat to inference.

Stage by stage

Four stages take a vanilla k3s cluster from unencrypted flat networking to a fully encrypted, identity-enforced mesh with real-time observability.

Stage 01 · Install

Zero-config k3s setup

Install k3s with --flannel-backend=none --disable-kube-proxy. Cilium takes over both roles: it manages pod IP allocation (IPAM) and handles all packet routing via eBPF programs loaded directly into the Linux kernel. No iptables rules, no flannel VXLAN tunnels.

Stage 02 · Connect

Headscale node registration

Every k3s node runs a Tailscale client that points at a self-hosted Headscale control plane deployed inside the cluster. Headscale manages WireGuard public key exchange and assigns each node a stable overlay IP (100.x.x.x). New nodes register automatically β€” no manual key generation, no static config files to keep in sync.

Stage 03 · Enforce

eBPF NetworkPolicy

Cilium enforces the SkywardAI component topology at the kernel level with zero sidecar overhead. Only Skyward Gate can reach inference backends (Ollama / vLLM). Inference backends have no egress. Skyward Chat reaches only Skyward Gate. Policy violations are dropped before the packet ever leaves the kernel.

Stage 04 · Observe

Hubble flow visibility

Hubble β€” Cilium's built-in observability plane β€” records per-flow network events without sampling. Skyward Console reads these metrics to show real-time service maps, blocked-flow alerts, and per-component request rates. No additional agent or log shipper required.

Why it matters for SkywardAI: the platform's trust model has two layers. Skyward Gate enforces semantic trust at the LLM API layer (prompt injection, PII scrubbing, audit logging). Skyward Mesh enforces network trust at the packet level (encrypted transit, identity-based access, zero-trust pod policy). Together they close the gap between a raw k3s cluster and a production-grade private AI infrastructure β€” without the operational weight of a service mesh.