Encrypted secrets management
Secret variables are encrypted with AES-256-GCM using unique nonces and versioned key rings, decrypted only in-memory when container cells spawn or builds run.
Security
Control plane permissions are only as strong as the underlying isolation. Hubfly space workloads are separated by Linux namespaces, capability restrictions, and seccomp filters — well below the application layer.

01
7
Linux namespaces per cell
PID, mount, network, UTS, IPC, user, cgroup
02
ALL
Capabilities dropped by default
13 safe capabilities restored explicitly
03
33+
Syscalls blocked
mount, pivot_root, ptrace, setns, kexec_load, reboot
04
1000000+
Host UID range for container root
Container UID 0 is unprivileged on the host
Defence in depth
We don't rely on a single security mechanism. Every layer assumes the layer above it has already been tested.
Seven isolated namespaces per cell
Every container cell runs in its own PID, mount, network, UTS, IPC, user, and cgroup namespace. Processes cannot view, signal, or communicate outside their own container boundary.
Unprivileged root UID remapping
Root UID inside a container maps to an unprivileged host UID range (1000000–1065535). A process breaking root inside a cell remains an unprivileged account on the host.
Minimal capability set
Linux capabilities are stripped down by default, leaving only thirteen operationally necessary privileges like `NET_BIND_SERVICE`, `CHOWN`, and `SETUID`.
Strict seccomp syscall filtering
A custom seccomp profile unconditionally blocks 33+ dangerous system calls including `mount`, `pivot_root`, `ptrace`, `setns`, and `reboot`.
Read-only system mounts
Critical host system paths like `/proc/sys` and `/sys` are mounted read-only inside container cells, preventing processes from modifying kernel parameters.
Enforced privilege restriction
`no_new_privileges` is enforced system-wide so setuid binaries inside containers cannot escalate beyond their assigned unprivileged host UID.
User namespaces
This is a core security guarantee of our runtime. A process running as UID 0 inside its container cell remains an unprivileged user on the host node.
UID mapping
Inside the cell
uid 0 · root
Apparent root privileges strictly within container namespace
user namespace remap
On the host
uid 1000000+
Unprivileged host user owning zero host resources outside its cell
Container escape vulnerabilities attempt to turn internal root privileges into host root access. User namespace remapping breaks this escalation path: container root is mapped to an unprivileged account on the host kernel from the start.
Layered on top, Linux capabilities are stripped down by default, and seccomp filters block dangerous system calls required for escape attempts.
Containers run without a background Docker daemon. There is no long-lived privileged daemon socket that could be targeted or compromised.
Seccomp profile
A sample of dangerous system calls blocked by our default seccomp profile. These calls are typically exploited to break container boundaries.
| Syscalls | Category | Why it is blocked |
|---|---|---|
| mount · umount2 | Filesystem manipulation | Prevents remounting host filesystems inside containers |
| pivot_root · chroot | Root filesystem changes | Blocks container root escape mechanisms |
| ptrace | Process tracing | Prevents inspecting or injecting into adjacent processes |
| setns · unshare | Namespace manipulation | Blocks breaking out of assigned namespace boundaries |
| kexec_load · reboot | Kernel and power control | Prevents containers from loading custom kernels or restarting host nodes |
mount · umount2
pivot_root · chroot
ptrace
setns · unshare
kexec_load · reboot
Data and supply chain
Secret variables are encrypted with AES-256-GCM using unique nonces and versioned key rings, decrypted only in-memory when container cells spawn or builds run.
Containers start completely isolated from the internet until ports are deliberately mapped. Internal services communicate privately without firewall rules to manage.
Access private services locally over an encrypted WebSocket connection authenticated by short-lived connect tokens — no public ports required.
Trivy and Govulncheck scan images on push, reporting severity levels, affected packages, current versions, and official patch fixes.
Auto-generated build steps are validated against platform allowlists, preventing malicious repositories from executing arbitrary commands on build servers.
Sensitive organization operations log the user actor, target resource, IP address, user agent, API request ID, and timestamp.
Edge protection
Block malicious IP ranges or restrict internal admin tools to your office network right at the edge proxy.
Protect authentication routes and heavy API endpoints from brute force attempts with configurable rate windows.
Degrading backend services trigger circuit breakers returning 503s instantly, preventing widespread outage cascades.
Identify and block automated scrapers and bots at the edge before they consume your container's compute budget.
Security
Evaluating Hubfly space for strict security requirements? Reach out to our engineering team to review exact kernel controls, isolation benchmarks, and compliance specs.