Quickstart
Install MayFly and run your first zero-disk sandboxed command in under two minutes.
Installation
MayFly is distributed as a single static binary with zero external dependencies. Choose your platform:
curl -fsSL https://raw.githubusercontent.com/vishnunandan555/mayfly/main/install.sh | bashNote: The installer automatically detects your operating system, CPU architecture (Intel or Apple Silicon), installs
mayflyand themfalias to~/.local/bin, and configures your shell PATH.
irm https://raw.githubusercontent.com/vishnunandan555/mayfly/main/install.ps1 | iexNote: The PowerShell script installs
mayfly.exeandmf.exeto~/.local/binand updates your Windows User PATH automatically.
# Native Windows PowerShell build (recommended)
git clone https://github.com/vishnunandan555/mayfly.git
cd mayfly
$binDir = Join-Path $env:USERPROFILE ".local\bin"
New-Item -ItemType Directory -Force -Path $binDir | Out-Null
$env:CGO_ENABLED = "0"
go build -trimpath -ldflags="-s -w -buildid=" -o (Join-Path $binDir "mayfly.exe") .\cmd\mayfly
Copy-Item (Join-Path $binDir "mayfly.exe") (Join-Path $binDir "mf.exe")
$env:Path += ";$binDir"# Makefile path (Git Bash / MSYS2 / WSL or choco install make)
git clone https://github.com/vishnunandan555/mayfly.git
cd mayfly
make install
maketargets require Git Bash/MSYS2/WSL orchoco install make; on native PowerShell/cmd use the commands above instead.
Verify the installation:
mf version
# -> mayfly v0.0.5 (zero-dependency)4-Step Workflow
1. Initialize the Project Vault
Navigate to your application root directory and initialize the encrypted storage:
cd /path/to/my-project
mf initMayFly prompts you to set a master password on first run. It derives a 256-bit AES encryption key using PBKDF2-HMAC-SHA256 (600,000 iterations) and binds the vault to your hardware directory inode.
2. Store Application Secrets
Add secrets individually without writing unencrypted files to disk:
mf set DATABASE_URL="postgres://user:password@localhost:5432/app"
mf set STRIPE_SECRET_KEY="sk_live_0123456789abcdef"
mf set JWT_SECRET="super-secret-token"Importing an Existing .env File
If you already have a .env file, you can bulk-import it directly into the vault:
mf import .env
# -> [OK] Imported 8 secrets from .env into project
# -> Would you like to delete the plaintext .env file from disk now? [y/N]: y
# -> [OK] Deleted plaintext .env from disk.To list registered variable names for the project:
mf list3. Run Your Application with In-Memory Injection
Execute any command directly using mf (or mayfly):
# Node.js / Next.js
mf npm run dev
# Python / FastAPI / Django
mf python main.py
# Docker Compose
mf docker compose up -dMayFly resolves the project identity, decrypts secrets directly into volatile RAM, and spawns the target binary via host-native os/exec. Decrypted secrets never touch the filesystem.
4. Verify the Cryptographic Audit Trail
Validate that the execution was immutably recorded in the tamper-evident SHA-256 hash chain:
mf audit verify
# -> Audit log hash chain verified successfully.To inspect chronological access history:
mf auditVisual Terminal Dashboard (TUI)
Prefer a visual dashboard? MayFly includes a built-in terminal UI built entirely with the Go standard library:
# Launch global workspace dashboard
mf
# Or open directly scoped to current repository
mf currentUse arrow keys (↑/↓/←/→), Enter to open projects, and Esc to navigate.
Zero Disk Footprint
MayFly never writes an unencrypted file to disk. If your application or a third-party dependency inspects the filesystem for a .env file, none exists. Decrypted variables reside strictly in the child process RAM table.
Next Steps
- Why MayFly?: Threat model, supply-chain risks, and alternatives comparison.
- Concepts: Inode binding, memory safety, and Merkle hash chains.
- Node.js Guide: Using MayFly with Next.js, Express, and npm scripts.
- Python Guide: Using MayFly with FastAPI, Django, and Flask.
- CLI Reference: Full syntax reference for all CLI commands and flags.