? keys

Keyboard Shortcuts

j / kScroll down / up by section
g / GGo to top / bottom
1–9Jump to section
tToggle dark/light mode
?Toggle this modal
Press ? or click to close
🗺️Features 🏗️Architecture Quick Start 📊Benchmarks 📦Install

One OCI image. Any execution target. A single 12 MB binary.

Run the same OCI image as a container, Firecracker microVM, Apple Silicon VM, Kubernetes workload, or AI agent task. No daemon required. No overlayfs. No separate VM images.

🔄 Container · VM · K8s 🧬 DAG Store 🌐 P2P Sync 🤖 MCP Native ✨ v0.7.3 — Exec fix, Compose auto-build, ProcessHandle mutability
OCI IMAGE 🐧 Linux ⌘ macOS ⊞ Windows Container or VM Same image · Any backend 12 MB BINARY 400 ms CONTAINER BOOT 0 DAEMON TAX

Modern infrastructure runs on too many engines

Docker for development. containerd for production. Firecracker for isolation. CRI for Kubernetes. Separate tooling for AI agents. Each one has its own image format, storage layer, and operational model — even though they all run the same OCI images.

🐳

Docker

Great developer UX, but requires a daemon, doesn't support VMs natively, and doesn't integrate with Kubernetes CRI without containerd.

☸️

Kubernetes (CRI-O / containerd)

Production-grade, but no local dev workflow, no VM execution, no AI agent interface — you need 4 different tools to cover dev + prod + VMs + agents.

🖥️

Firecracker / Kata

Strong VM isolation, but require separate VM image tooling and don't speak OCI natively without containerd shims.

Pullrun

One binary. One runtime. One image format. Containers, VMs, Kubernetes, and AI agents — all sharing the same OCI image, store, and execution model.

Everything you need, nothing you don't

A platform, not just a runtime. Image management, storage, security policies, secrets, CRI, Compose, and MCP — all in one binary, not a stack of separate daemons.

☸️

Kubernetes CRI

Drop-in CRI shim with RuntimeClass support (pullrun-container / pullrun-vm). Full exec, attach, port-forward, and events.

🐳

Docker Compose

Full Compose-compatible workflow: up, down, logs, ps, build — parse standard docker-compose.yml, zero changes.

🔐

Policy Engine

Cosign signature verification, SBOM evaluation, seccomp profiles, read-only rootfs — gate workloads before they run. Defense-in-depth as code.

🤖

MCP AI Integration

Native Model Context Protocol server — let AI agents run, stop, exec, and manage workloads through natural language. Agent → MCP → Pullrun → Container/VM.

📦

Encrypted Secrets

AES-256-GCM at rest, decrypted into workload tmpfs at runtime. pullrun secret create/get/ls — data stays encrypted on disk.

Apple Silicon Native

Native macOS VM backend via Virtualization.framework — boots Linux VMs on Apple Silicon with full isolation. No Docker Desktop, no Linux VM needed.

How it all fits together

Not a collection of tools — a single runtime platform where OCI is the universal abstraction for every execution model.

Execution Targets
Container Firecracker VM Apple VM Kubernetes AI Agent
Pullrun Runtime
Executor Router · gRPC API · Workload Manager · Event Bus
Shared Platform Services
DAG Store P2P Sync Policy Engine Secrets CRI Shim MCP Server

Every target uses the same OCI image. Pullrun handles storage, security, distribution, and orchestration — so you don't need a different runtime for each workload type.

Performance that speaks for itself

Every millisecond matters. Pullrun is architected for speed from the ground up.

0
Binary Size
Single static binary
0
Container Boot
Cold start latency
0
Apple VM Boot
Hypervisor.framework
0
Daemon Tax
No central daemon

One command. Any platform. Zero daemon.

Install in 30 seconds and start running containers or VMs from the same OCI image.

Type help for available commands in the terminal.

pullrun
# Welcome to Pullrun! Type a command or press Enter to replay demo.
$ pullrun --help
One OCI image. Any execution target. A single 12 MB binary.
$

Built different from the ground up

No overlayfs. No daemon tax. No separate VM images. A platform, not just a runtime.

1
Same image, any backend
OCI manifest IS the VM rootfs
2
Rootless by default
No sudo, no dockerd, no TCP socket
3
Content-addressed store
No overlayfs, no escape CVEs
4
P2P block sync
One registry pull for the whole cluster
5
Cross-platform
macOS, Linux, Windows — same binary
6
AI-native
MCP protocol for agentic workloads

Pullrun vs Docker

Same OCI images. Radically different architecture. See also: ecosystem positioning →

MetricPullrunDocker
First alpine:3.18 pull968 ms~2 s
Container run latency~400 ms~800 ms
Apple Silicon VM boot~160 msN/A
Idle daemon RSS24.6 MiB~90 MiB
Binary size12 MB~75 MB
Rootless by default
Containers + VMs from same image
P2P image sync
MCP AI integration
Content-addressed store
Optional daemon

Apple M3 (macOS 14), cold cache, alpine:3.18. Pullrun vs Docker Desktop 4.27. Your results may vary. Full methodology →

Common questions

Everything you need to know before getting started.

How is this different from Podman?
Podman is daemonless but does not support running the same OCI image as a VM, lacks built-in P2P image distribution, and has no native MCP AI integration. Pullrun gives you containers and Firecracker/Apple VMs from the same image, P2P block sync for cluster-wide pulls, and a native MCP server for AI agent control — all in a single 12 MB binary.
Can I use my existing Docker Compose files?
Yes. Pullrun has full Docker Compose compatibility. Just run pullrun compose up -f docker-compose.yml and it works — dependency ordering, port mapping, environment variables, volumes, resource limits, and per-project bridge networks are all supported.
Is this production-ready?
The container runtime (OCI pull, run, exec, network, secrets) is stable — the core API and data model are well-tested, with 175+ tests passing on CI. The Kubernetes CRI shim is in beta. The Firecracker and Apple VM backends are feature-complete but evolving. v0.7.3 adds the exec PID fix, Compose auto-build for build:+image: services, and improves ProcessHandle mutability across all backends.
Does it require root or a daemon?
No. Pullrun is rootless by default — no sudo needed, no central daemon. The optional runtime daemon (pullrun-runtime) is only required for background sync, policy enforcement, and Prometheus metrics. For basic use, the CLI runs standalone.
What platforms are supported?
Linux (x86_64, arm64), macOS (Apple Silicon via Virtualization.framework), and Windows (WSL2 with runc + Firecracker). The same binary works everywhere — download once, run anywhere.

Where Pullrun fits in your stack

Not a replacement for everything — a unification layer where OCI images become the universal primitive.

If you usePullrun gives you
DockerDaemonless runtime + native VM execution from the same image + P2P distribution + CRI shim
PodmanKubernetes CRI support + Firecracker/Apple VM backends + MCP AI agent protocol + P2P block sync
containerdIntegrated content-addressed DAG store + P2P distribution + Compose + secrets in a single binary
CRI-OLocal development workflow + VM execution via RuntimeClass + AI agent integration via MCP
Firecracker / KataOCI-native VM workflows — no separate VM image builds, no containerd shim needed

Ready to pullrun?

Install in 30 seconds. macOS, Linux, or Windows.

$ curl -fsSL https://github.com/pullrun/pullrun/raw/main/install.sh | bash $ pullrun run alpine:3.18 --cmd hello hello