X 000 · Y 000
Fig. 01 — Overview

Containers.
Done right.
Finally.

Otter is a modern container manager built for Linux desktops. Works with Podman, Docker, and nerdctl. Declare your environment in TOML, assemble it in one command. Pause, restart, lock, inspect — full control, beginner friendly.

otter — ferret linux
you@host:~$ otter list
NAME IMAGE STATUS RUNTIME
arch-dev arch running podman
fedora-work fedora paused podman
kali-sec kali stopped docker
you@host:~$

What makes it different.

Built on the tools you already have. Adds everything distrobox left out.

01

Multi-runtime

Works with Podman, Docker, and nerdctl out of the box. No preference forced, no daemon required.

02

TOML Manifests

Declare your entire environment in a TOML file. Packages, volumes, hooks, isolation, hardware limits — all in one place. Run otter assemble and you're done.

03

Full lifecycle

Pause, restart, lock, upgrade, inspect, journal — not just create and enter. Real control over your containers.

04

Hardware controls

Set CPU, memory, and NVIDIA GPU access per container. No more unconstrained environments eating your system resources.

05

Isolation controls

Fine-grained control over netns, IPC, process, device, and group isolation. Lock down as much or as little as you need.

06

App & bin export

Export apps and binaries from inside containers to your host path. Use container software as if it were native.

07

Hooks

Run scripts before and after container init. Automate setup, link binaries, configure environments — fully scriptable.

08

Beginner friendly

Sane defaults, clear commands, and a registry of ready-to-use images. Get a working container without reading a manual.

Full command set.

Everything you need, nothing you don't.

otter create
Create a new container from an image or manifest entry
otter enter
Enter a running container interactively
otter start
Start a stopped container
otter stop
Stop a running container
otter pause
Pause a running container, preserving its state
otter restart
Restart a container
otter remove
Remove a container and its data
otter upgrade
Upgrade a container to the latest image version
otter inspect
Show detailed info about a container
otter list
List all containers and their status
otter lock / unlock
Lock a container to prevent accidental changes or removal
otter journal
View logs and journal output from a container
otter assemble
Assemble one or more containers from a TOML manifest file
otter registry
Browse and pull from the Otter image registry
otter generate-entry
Generate a desktop entry for an exported app

Wide compatibility.

Pre-built images ready to pull from the Otter registry.

Arch Linux
BlackArch
Ubuntu LTS
Ubuntu Stable
Debian Stable
Debian Testing
Debian Unstable
Fedora Stable
Fedora Rawhide
AlmaLinux
Rocky Linux
CentOS Stream
Oracle Linux
RHEL
openSUSE Leap
openSUSE Tumbleweed
Alpine Stable
Alpine Edge
Kali Rolling
Kali Edge
Void glibc
Void musl
Gentoo

Declare, assemble, done.

Define your entire container environment in a single TOML file. Commit it, share it, reproduce it anywhere.

manifest.toml
[[container]]
name = "arch-dev"
image = "arch"
start-now = true
additional.packages = ["git", "vim", "nodejs"]
additional.volumes = ["/home/you/projects:/root/projects"]
exported.bins = ["/usr/bin/node", "/usr/bin/git"]
exported.path = "~/.local/bin"
hooks.post-init = ["pacman -Syu --noconfirm"]
hardware.memory = "2g"
hardware.nvidia = false
isolation.netns = true
settings.shell = "fish"
you@host:~$ otter assemble manifest.toml
# assembles all containers defined in the manifest