# ply

> ply is a daemonless Linux container runtime and package manager: npm for containers. It resolves an app and its OS dependencies into a deterministic, content-addressed image that can be copied as one file and run without a daemon or registry server.

ply targets Linux on x86_64 and arm64. It is pre-1.0, uses TOML manifests and lockfiles, and deliberately does not provide orchestration, a proxy, install hooks, or a registry protocol. Prefer the linked Markdown documentation as the source of truth.

## Start here

- [Complete documentation](https://plybox.sh/llms-full.txt): All public documentation in one Markdown document.
- [Quickstart](https://plybox.sh/docs-md/quickstart.md): Install ply, write a manifest, build an image, and run it.
- [What is ply](https://plybox.sh/docs-md/index.md): Product model, intended users, and current scope.

## Guides

- [Dependencies & lockfiles](https://plybox.sh/docs-md/dependencies.md): How ply resolves version ranges with Minimal Version Selection and pins them in ply.lock.
- [Registries & publishing](https://plybox.sh/docs-md/registries.md): Any file host is a ply registry — GitHub Releases, an R2 bucket, a directory. Zero API.
- [Running & scaling](https://plybox.sh/docs-md/running.md): Instances are processes — foreground by default, one IP each, scaled with --scale N.
- [Volumes & data](https://plybox.sh/docs-md/volumes.md): The three-tier write model — read-only rootfs, ephemeral scratch, named volumes.
- [Deploys, health & restarts](https://plybox.sh/docs-md/deploy.md): Zero-downtime rolling deploys with health gates and crash-loop restart policies — no daemon, no orchestrator.
- [Security & rootless](https://plybox.sh/docs-md/security.md): Secure by default — namespaces, dropped capabilities, seccomp, cgroups — and a first-class rootless mode.
- [Making packages](https://plybox.sh/docs-md/packages.md): Three ways to author ply packages — apk2pkg conversion, ply craft sessions, and plain directories.
- [Importing from Docker](https://plybox.sh/docs-md/docker.md): The one-way ecosystem bridge — ply import docker://image, and ply bundle for airgapped hosts.
- [ply on macOS](https://plybox.sh/docs-md/macos.md): Run ply on a Mac today with Lima — a lightweight Linux VM with automatic file sharing and port forwarding.
- [Running on DigitalOcean](https://plybox.sh/docs-md/digitalocean.md): Push-to-deploy from GitHub to a droplet — two actions, zero downtime, no orchestrator.

## Reference

- [ply.toml reference](https://plybox.sh/docs-md/manifest.md): Every key in the ply manifest — package, dependencies, env, ports, volumes, resources, health, restart, sources.
- [CLI reference](https://plybox.sh/docs-md/cli.md): Every ply command with its important flags.
- [Image format & store](https://plybox.sh/docs-md/image-format.md): The filename grammar, deterministic squashfs format, content-addressed store, and registry file protocol.
- [Glossary](https://plybox.sh/docs-md/glossary.md): The words ply uses, what each one means, and the naming rule that keeps them consistent.

## Concepts

- [Architecture](https://plybox.sh/docs-md/architecture.md): The four borrowed mechanisms, the ten-step run path, and the discipline of what ply refuses to build.
- [ply vs Docker](https://plybox.sh/docs-md/ply-vs-docker.md): An honest comparison — different mental models, where each wins, and when to use which.

## Package registry

- [Registry](https://plybox.sh/registry/): Search the official package catalog.
- [Registry state](https://registry.plybox.sh/state.json): Machine-readable package, version, architecture, path, size, and publish-time data.

## Optional

- [Source code](https://github.com/iluxav/ply): Rust workspace, issue history, and releases.
- [Website](https://plybox.sh/): Human-readable product overview.
