Skip to main content

mngr Lima Provider

Lima VM provider backend plugin for mngr. Runs agents in Lima VMs (QEMU/VZ) with SSH access.

Prerequisites

  • Lima (limactl on PATH)

Usage

# Install the plugin
uv tool install imbue-mngr-lima

# Create a VM host
mngr create @.lima

# Create with a custom Lima YAML config
mngr create @.lima -b "--file path/to/config.yaml"

# Pass flags to limactl start
mngr create @.lima -- --cpus=8 --memory=16GiB

host_dir layout: bind mount vs btrfs additional disk

The provider has two layouts for backing host_dir (the in-VM directory mngr stores agent data under, default /mngr):

  • Bind mount (default, is_host_data_volume_exposed=True). host_dir is a 9p bind mount of ~/.mngr/providers/lima/<name>/volumes/<host_id>/ on the host machine. The host process can read host_dir contents directly even while the VM is stopped, and get_volume_for_host() returns a HostVolume usable by mngr event, mngr transcript, and destroy-time session-preservation hooks (mngr_claude's on_before_host_destroy). This is the right choice for most users.

  • Btrfs additional disk (is_host_data_volume_exposed=False). mngr attaches a Lima-managed btrfs-formatted additional disk (mngr-<host_id_hex>-data, qcow2 sparse under ~/.lima/_disks/, default logical size 100GiB) and symlinks host_dir to Lima's auto-mount path for that disk (/mnt/lima-<disk_name>). No 9p bind mount is created. The trade-off: host_dir is now a single consistent btrfs filesystem that can be snapshotted as one unit, but the host machine has no direct read path so get_volume_for_host() returns None. Offline reads (mngr event / mngr transcript against a stopped Lima host) stop working until the host is started. This mode is intended for users who back up host_dir via btrfs snapshots; it is opt-in to avoid changing default behavior.

The chosen layout is locked in on the per-host record at create_host time. Subsequent start_host / stop_host calls always replay the same layout, so flipping the provider config later does not migrate existing hosts. Hosts created before this option existed (records without the field) default to bind-mount mode and keep today's behavior forever.

To enable btrfs mode for new hosts:

# in ~/.mngr/config.toml (or via setting__extend in a create template)
[providers.lima]
is_host_data_volume_exposed = false
# Optional: override the default 100GiB logical disk size.
host_data_disk_size = "200GiB"

Running the agent as root in the VM (is_run_as_root)

By default the agent runs as the Lima default user (passwordless sudo available). With is_run_as_root=true mngr instead runs the agent as root inside the VM (uid 0), matching the docker / vps_docker providers where the agent is root inside its container: the agent can apt install and write anywhere with no sudo. The VM itself is the isolation boundary.

How it works:

  • The provisioning script enables key-based root login (PermitRootLogin prohibit-password) and authorizes a mngr-managed root client key; mngr then connects to the VM as root over Lima's normal SSH port. The agent still runs directly in the VM -- there is no nested container.
  • This mode requires the btrfs additional-disk layout, so it must be paired with is_host_data_volume_exposed=false. Root cannot traverse the 9p/reverse-sshfs bind mount the exposed layout uses, so the combination is rejected at config construction.
  • Consistent backups keep working: with host_dir on btrfs and the agent running as root, a backup service in the workspace (e.g. forever-claude-template's host-backup) takes btrfs subvolume snapshot directly -- no snapshot helper or trigger volume is needed.
[providers.lima]
is_run_as_root = true
is_host_data_volume_exposed = false  # required by is_run_as_root

This is how a workspace gets the same dependency setup as a Dockerfile-built host: the project ships idempotent setup scripts that its Dockerfile runs (for the docker / vps_docker / ovh providers) and that the Lima host runs directly after the project is synced in (via the create template's agent provisioning command). One definition, run the same way everywhere, with the agent as root so it never needs sudo.

Metadata

Release files for imbue-mngr-lima 0.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imbue-mngr-lima 0.1.10
File Size Uploaded
imbue_mngr_lima-0.1.10.tar.gz 56.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for imbue-mngr-lima 0.1.10
File Interpreter ABI Platform
imbue_mngr_lima-0.1.10-py3-none-any.whl Python 3 none any Details

Total release size: 94.7 kB

Release files / imbue_mngr_lima-0.1.10.tar.gz

Download URL imbue_mngr_lima-0.1.10.tar.gz
Size 56.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f4bd969d0e65cc18043a8b17a1e7ab537d08d9a74400819e3fdab2dfd9cd7d8f
BLAKE2b-256 checksum
How to use checksums
9059fee092e4a5247b6fdf29a5dc7585375201a1652727408d792962bd149e96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.

Transparency log

Release files / imbue_mngr_lima-0.1.10-py3-none-any.whl

Download URL imbue_mngr_lima-0.1.10-py3-none-any.whl
Size 38.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0db3c38d8f438e5024bb453f29540f15e3868c3ba671fd64f0391d0f65c93aa9
BLAKE2b-256 checksum
How to use checksums
9436fd4d9935c47af880aebe2936c9b073ff21b1034d7236e4ec060bcd322391
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.10 This release

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page