A CLI tool for minting NFTs on the Flow blockchain with zero friction.
- π Simple CLI - One command to mint NFTs
- π Self-custodial - Your keys, your control
- π¦ IPFS Storage - Decentralized storage via Pinata/Lighthouse
- β‘ Fast - Optimized Rust implementation
- π§ Flexible - Multiple profiles and networks
# Build from source cargo build --release # Binary will be at target/release/mtmf
mtmf init
mtmf mint image.png --name "My NFT" --description "My first NFT"
# Initialize configuration mtmf init # Run diagnostics mtmf doctor
# Generate a new key pair mtmf key generate --alias my-key # List keys mtmf key list # Import existing key mtmf key import --alias my-key --file key.pem # Export key mtmf key export --alias my-key
# Mint an NFT mtmf mint image.png \ --name "My NFT" \ --description "Description" \ --to 0x123... # Dry run (don't submit) mtmf mint image.png --dry-run # JSON output mtmf mint image.png --json
# Upload file to IPFS
mtmf upload image.png# List profiles mtmf profile list # Create profile mtmf profile create mainnet # Switch profile mtmf profile use mainnet # Delete profile mtmf profile delete old-profile
Configuration is stored at ~/.config/mtmf/config.toml
Example configuration:
version = "1.0" active_profile = "default" [[profiles]] name = "default" mode = "selfcustodial" network = "testnet" [profiles.storage] provider = "pinata" api_key = "your-api-key" [profiles.flow] address = "0x..." key_alias = "my-key" access_node = "access.devnet.nodes.onflow.org:9000"
- Rust 1.70+
- Flow testnet/mainnet account
- Pinata or Lighthouse API key
# Build cargo build # Run tests cargo test # Run with logging RUST_LOG=debug cargo run -- mint image.png
- Cadence 1.0 compatible
- ECDSA P-256 signing
- gRPC for Flow Access API
- IPFS via Pinata/Lighthouse
- AES-GCM encrypted key storage
MIT
Contributions welcome! Please open an issue or PR.