Everything from install to uninstall. Five minutes to your first disposable environment.
No account. No telemetry. Nothing leaves your machine.
macOS, Linux, WSL:
curl -fsSL https://sahilsidhu7.github.io/minive-landing/install.sh | bash
Windows PowerShell:
irm https://sahilsidhu7.github.io/minive-landing/install.ps1 | iex
Windows CMD:
curl -fsSL https://sahilsidhu7.github.io/minive-landing/install.cmd -o install.cmd && install.cmd && del install.cmd
The script picks the right package for your system: Homebrew cask or .dmg on macOS, .deb / .rpm / AppImage on Linux and WSL, .msi on Windows. Prefer doing it by hand? Read on.
winget install SahilSidhu7.miniVE
Or download the .msi from the latest release and run it.
brew install --cask sahilsidhu7/tap/minive
Or download the .dmg from the latest release - aarch64 for Apple Silicon (M-series), x64 for Intel - and drag miniVE to Applications.
From the latest release, either:
# AppImage - portable, no install
chmod +x miniVE_*.AppImage
./miniVE_*.AppImage
# or Debian/Ubuntu package
sudo dpkg -i miniVE_*_amd64.deb
# or Fedora/RHEL package
sudo dnf install ./miniVE-*.x86_64.rpm
Works with Docker Engine directly - Docker Desktop isn't required on Linux, just a running daemon your user can talk to (member of the docker group).
8000 to host port 8000 if you'll run a web server./workspace, a persistent volume. Install packages, run code; it all stays inside the environment./workspace.The file tree shows the live contents of /workspace. Files created from the terminal appear there too.
Ctrl-C, resize, TUI apps.user@host, yellow working directory) and the classic console color palette, on every distro.pip install, npm install, apt-get install) persists across environment stop/start - and vanishes when the environment is deleted.Every environment has a Scripts panel in the workspace sidebar - small shell scripts stored with the environment:
language-support / docker-cli script here. Each install step is guarded with command -v, so the on-start re-run costs almost nothing once everything is installed - and repairs the environment if something is missing.Add, edit, and delete scripts from the panel; they're plain sh scripts, nothing magic.
A Docker daemon can't run inside an ordinary container - so miniVE doesn't try. Tick Docker CLI when creating an environment and miniVE instead:
/var/run/docker.sock into the environment, anddocker commands inside the environment then drive your host's Docker daemon ("docker-outside-of-docker"). docker build, docker run, compose-style workflows - they all work.
The minive command manages the same environments as the app - anything created in one shows up in the other. Build it from the repo with cargo build --release --bin minive (in src-tauri/).
minive create py --image python:3.12 --port 8000:8000 # create + start
minive shell py # interactive shell in /workspace
minive exec py python app.py # one-off command (no TTY, pipes work)
minive list # all environments
minive stop py / start py / delete py
Multiple terminals, one environment: run minive shell py in as many terminal windows as you like - each gets its own independent shell inside the same environment, so you can run a server in one and edit or test in another.
create defaults to ubuntu:24.04 with the minimal preset (git + curl);
pass --preset none|minimal|full|essentials to change it
(essentials = update + upgrade + common dev tooling).
If you mapped ports at creation, run your server inside the environment and it's reachable at localhost:<host-port>:
python -m http.server 8000
# or
npm run dev -- --host 0.0.0.0
The preview pane renders the page inside miniVE; you can also open it in your regular browser. The preview's address bar is editable - type a path like /api/health (or a full URL) and press Enter.
0.0.0.0 (not 127.0.0.1) to be reachable from outside
the container. Most dev servers have a --host flag for this.
| Action | What happens |
|---|---|
| Stop | Container stops; files and installed packages are kept. |
| Start | Picks up exactly where you left off. |
| Delete | Container and its /workspace volume are removed. Unrecoverable, and leaves zero trace - docker ps -a and docker volume ls show no minive-* entries. |
Everything miniVE creates carries a minive.env Docker label, so you can audit it yourself with plain docker commands.
miniVE checks GitHub for a newer release on launch. If one exists you'll be asked before anything is downloaded; decline and nothing changes. Updates are cryptographically signed and installed in place. You can always update manually from the releases page.
docker ps works in a terminal as your user. If it needs sudo, add yourself to the docker group and re-log.0.0.0.0 inside the environment (see Port preview).https://user:token@github.com/...) or use a public repo. SSH agent forwarding isn't supported in v1.Something else? Open an issue - include your OS and Docker Desktop version.
winget uninstall SahilSidhu7.miniVE); macOS - drag from Applications to Trash (or brew uninstall --cask minive); Linux - remove the AppImage or sudo dpkg -r miniVE.docker ps -a and docker volume ls should show no minive-* entries; runtime images (python, node, ubuntu) are standard Docker images you may keep or docker rmi.No. miniVE talks only to your local Docker daemon. The only network calls the app itself makes are pulling images from Docker Hub and the update check against GitHub.
Containers share your machine's kernel via Docker, so they start in seconds and cost far less RAM/disk than a VM - while still keeping code, packages, and processes isolated from your host.
Not in v1 - each environment is independent. They can each reach the internet, and you can reach them via mapped ports.
Whatever Docker Desktop is configured to allow (its Settings → Resources). miniVE doesn't impose extra limits in v1.