Zero Docker Overhead
Native binaries and standalone JARs run inside hardened systemd transient units with kernel cgroups, namespaces, and empty capabilities.
Run high-density microservices on Linux servers and virtual machines with systemd isolation, sub-200ms scale-to-zero, and zero Docker overhead.
Welcome to the official technical documentation for MicroFly, a fast, robust, single-host Application Platform-as-a-Service (PaaS) designed specifically for Linux servers, virtual machines, and edge environments.
MicroFly bridges the gap between complex container orchestrators (like Kubernetes or Nomad) and simple process supervisors (like systemd or Supervisord). It gives you the developer experience of modern cloud platforms (like Fly.io or Heroku)—Git push deployments, automated blue/green zero-downtime rollouts, scale-to-zero, encrypted secrets, persistent storage, and preview environments—running directly on bare metal or virtual machines with virtually zero overhead.
Unlike Docker-based platforms, MicroFly executes native Linux binaries and executable JARs directly using hardened systemd transient units. This eliminates the memory, filesystem, and networking overhead of container engines while providing rigorous kernel-level isolation.
+-------------------------------------------------------------------------+
| INTERNET |
+-------------------------------------------------------------------------+
|
v (ports 80/443, TLS / ACME)
+-------------------------------------------------------------------------+
| Reverse Proxy (Caddy / Nginx / Apache) |
+-------------------------------------------------------------------------+
|
v (HTTP loopback :8000)
+-------------------------------------------------------------------------+
| MicroFly Daemon |
| |
| +--------------------+ +--------------------+ +-------------------+ |
| | HTTP Router | | Supervisor | | Metrics (:9090) | |
| | - Host routing | | - Blue/Green | | - Prometheus | |
| | - Scale-to-zero | | - Crash recovery | | - Cold start | |
| | - Idle timers | | - Release history | | - RSS memory | |
| +--------------------+ +--------------------+ +-------------------+ |
| |
| +--------------------+ +--------------------+ +-------------------+ |
| | Admin Socket | | Secrets Engine | | Webhook (:8082) | |
| | - /run/.../admin | | - AES-GCM-256 | | - GitHub HMAC | |
| | - SO_PEERCRED | | - Online rotation | | - GitLab HMAC | |
| +--------------------+ +--------------------+ +-------------------+ |
+-------------------------------------------------------------------------+
|
+-------------------------+-------------------------+
| (systemd-run transient services, UID: microfly-app)
v v
+-----------------------------------+ +---------------------------------+
| Workload 1: App A (Port 3000) | | Workload 2: App B (Port 3001) |
| - ProtectSystem=strict | | - ProtectSystem=strict |
| - CapabilityBoundingSet=empty | | - CapabilityBoundingSet=empty |
| - PrivateTmp / Invisible Proc | | - PrivateTmp / Invisible Proc |
| - Persistent Volume: data/ | | - Persistent Volume: data/ |
+-----------------------------------+ +---------------------------------+/tmp, and isolated process tables.git push production main or deploy preview feature branches (git push production feature/my-feature)./metrics endpoint, structured disk logging, real-time log streaming (microfly logs -f), and process crash auto-recovery.Rather than running a bulky Docker daemon (dockerd, containerd, overlayfs, and virtual network bridges) that consumes hundreds of megabytes of RAM, MicroFly instructs systemd to launch each service as a hardened transient unit backed directly by Linux kernel isolation primitives:
| Isolation Primitive | Systemd Directive | Security Effect |
|---|---|---|
| Immutable Root Filesystem | ProtectSystem=strict | The entire operating system (/usr, /boot, /etc, /lib) is mounted read-only. Applications cannot tamper with host binaries or system files. |
| Stripped Kernel Capabilities | CapabilityBoundingSet= | Strips all POSIX capabilities (e.g. CAP_NET_RAW, CAP_SYS_ADMIN, CAP_DAC_OVERRIDE). Workloads cannot elevate privileges even if compromised. |
| Invisible Process Table | ProcSubset=pidProtectProc=invisible | Workloads can only see their own process threads in /proc. Other applications and host system processes are completely invisible. |
| Private Temporary Files | PrivateTmp=yes | Allocates isolated /tmp and /var/tmp filesystem namespaces per unit. Temporary files cannot be viewed, hijacked, or leaked to other workloads. |
| Kernel eBPF Socket Filtering | [network] egress rulesIPAddressAllow= / IPAddressDeny= | Enforces kernel-level packet filtering on cgroup sockets to isolate private subnets (RFC 1918), prevent LAN probing, or block outbound internet connections. |
| No Privilege Escalation | NoNewPrivileges=yes | Blocks subprocesses from acquiring new privileges via setuid or setgid binaries. |
| System Call Filtering | SystemCallFilter=@system-service | Whitelists only standard system calls needed for unprivileged network services, blocking dangerous syscall sets like @mount and @privileged. |
| Inaccessible Host Secrets | InaccessiblePaths= | Explicitly blocks workloads from accessing the master encryption key (/etc/microfly/master.key) or bare Git repositories (/var/lib/microfly/repos). |
amd64 and arm64) using official .deb packages or compiling from source.app.toml): Complete schema documentation for runtime arguments, scale-to-zero, storage mounts, cron jobs, webhooks, and resource bounds.microfly.toml): Global host settings, network listeners, paths, and security limits.post-receive deployments, and branch workflows.microfly commands, arguments, and flags.