| Crates.io | minifly-cli |
| lib.rs | minifly-cli |
| version | 0.2.2 |
| created_at | 2025-06-23 10:23:22.00487+00 |
| updated_at | 2025-06-24 10:29:25.279409+00 |
| description | CLI for Minifly - Local Fly.io development simulator with incredible DX |
| homepage | https://minifly-docs.fly.dev |
| repository | https://github.com/NoHeadDotDev/minifly |
| max_upload_size | |
| id | 1722765 |
| size | 290,910 |
Local Fly.io development simulator with incredible DX
Minifly provides a complete local development environment that simulates the Fly.io platform, allowing you to develop, test, and debug your applications with the same APIs and behavior you'll see in production.
minifly serve --dev in your project directoryFull documentation is available at https://minifly-docs.fly.dev
Quick links:
cd docs
npm install
npm start
This will start a local Docusaurus server at http://localhost:3000.
Minifly includes comprehensive LiteFS support:
Minifly is not affiliated with, endorsed by, or sponsored by Fly.io. This is an independent project created for local development purposes. Fly.io is a trademark of Fly.io, Inc.
Minifly consists of several components:
The easiest way to get started:
# Install Minifly
cargo install minifly-cli
# In your project directory with a fly.toml file
minifly serve --dev
That's it! Minifly will:
# Clone the repository
git clone https://github.com/yourusername/minifly
cd minifly
# Build all components
cargo build --release
# Install the CLI
cargo install --path minifly-cli
For more control, you can use individual commands:
# Start the platform
minifly serve
# Deploy from fly.toml
minifly deploy
# Deploy with specific config files (NEW!)
minifly deploy --config fly.production.toml
minifly deploy --config fly.staging.toml --litefs-config litefs.prod.yml
# Create apps and machines manually
minifly apps create my-app
minifly machines create --app my-app --image nginx:latest
# List and manage machines
minifly machines list --app my-app
minifly machines start <machine-id>
minifly machines stop <machine-id>
# View logs
minifly logs <machine-id>
Minifly is designed to provide an incredible developer experience:
Just run minifly serve --dev in any directory with a fly.toml file:
cd my-fly-app
minifly serve --dev
# 🚀 Platform starts
# 📦 App deploys automatically
# 🔗 Access your app at: http://localhost:32768
# 👀 Watching for changes...
Minifly automatically assigns available ports to your containers:
In development mode (--dev), Minifly watches your files and automatically redeploys when you make changes:
fly.toml, Dockerfile, and source filesPress Ctrl+C once to gracefully shut down:
Minifly implements the Fly.io Machines API v1. You can use the same API endpoints:
# Create a machine
curl -X POST http://localhost:4280/v1/apps/my-app/machines \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"config": {
"image": "nginx:latest",
"guest": {
"cpu_kind": "shared",
"cpus": 1,
"memory_mb": 256
}
}
}'
# Create a machine with LiteFS volume
minifly machines create --app my-app \
--image myapp:latest \
--env DATABASE_URL=/litefs/app.db \
--env FLY_LITEFS_PRIMARY=true \
--mount volume=sqlite_data,path=/litefs
# Basic usage example
cargo run --example basic_usage
# LiteFS cluster example
cargo run --example litefs_cluster
# Multi-tenant application example
cd examples/multi-tenant-app
./run-dev.sh # Run locally
# OR deploy with Minifly:
minifly deploy
Minifly now supports multiple configuration files for different environments, just like Fly.io:
# Use explicit config file
minifly deploy --config fly.production.toml
minifly deploy --config fly.staging.toml
# Or use environment variables for automatic discovery
FLY_ENV=dev minifly deploy # Uses fly.dev.toml if it exists
MINIFLY_ENV=staging minifly deploy # Uses fly.staging.toml if it exists
# Use explicit config file
minifly deploy --litefs-config litefs.production.yml
# Or use environment variables
LITEFS_CONFIG_PATH=litefs.prod.yml minifly deploy
FLY_ENV=dev minifly deploy # Uses litefs.dev.yml if it exists
--config or --litefs-config flags (highest priority)LITEFS_CONFIG_PATH environment variable (for LiteFS)FLY_ENV or MINIFLY_ENVfly.toml and litefs.yml)MINIFLY_API_PORT: API server port (default: 4280)MINIFLY_DATABASE_URL: SQLite database URL (default: sqlite:minifly.db)DOCKER_HOST: Docker socket pathMINIFLY_NETWORK_PREFIX: IPv6 network prefix (default: fdaa:0:)MINIFLY_DATA_DIR: Data directory for LiteFS and volumes (default: ./data)FLY_ENV or MINIFLY_ENV: Environment name for config file discoveryLITEFS_CONFIG_PATH: Path to LiteFS configuration fileThe CLI stores configuration in ~/.config/minifly/config.toml:
api_url = "http://localhost:4280"
token = "your-api-token"
minifly/
├── minifly-api/ # Machines API server
├── minifly-litefs/ # LiteFS implementation
├── minifly-network/ # Networking simulation
├── minifly-cli/ # CLI application
└── minifly-core/ # Shared types and utilities
cargo test --workspace
# Build only the API server
cargo build -p minifly-api
# Build only the CLI
cargo build -p minifly-cli
Check out our example applications in the examples/ directory:
A comprehensive multi-tenant SaaS application demonstrating:
cd examples/todo-auth-app
minifly deploy # or ./run.sh
A database-per-tenant architecture example featuring:
cd examples/multi-tenant-app
./run.sh
See the examples directory for all available examples.
While Minifly aims to closely simulate Fly.io's behavior, there are some differences:
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details