CLI Overview
The mailiam CLI is your primary interface for managing email infrastructure, forms, and domains. Built for developers who prefer configuration-as-code workflows.
Installation
Section titled “Installation”npm (Recommended)
Section titled “npm (Recommended)”npm install -g mailiamVerify Installation
Section titled “Verify Installation”mailiam --versionmailiam --helpQuick Start
Section titled “Quick Start”1. Instant Form (Zero Config)
Section titled “1. Instant Form (Zero Config)”mailiam form# Returns: https://api.mailiam.dev/f/abc123def2. Domain-Based Project
Section titled “2. Domain-Based Project”mailiam init mysite.comcd mysite.commailiam pushCore Concepts
Section titled “Core Concepts”Config-First Approach
Section titled “Config-First Approach”mailiam treats email infrastructure like code:
mailiam.config.yaml- Single source of truth- Version control - Track changes with Git
- Environments - Dev, staging, production configs
- Deployment -
mailiam pushlikegit push
The CLI Philosophy
Section titled “The CLI Philosophy”# Initialize like gitmailiam init mysite.com
# Configure like infrastructurevim mailiam.config.yaml
# Deploy like codemailiam push
# Monitor like productionmailiam statusCommand Categories
Section titled “Command Categories”Core Commands
Section titled “Core Commands”mailiam init- Initialize new projectmailiam push- Deploy configurationmailiam pull- Sync remote changesmailiam status- Check deployment status
Instant Forms
Section titled “Instant Forms”mailiam form- Create instant form endpointmailiam forms- Manage project forms
Collections
Section titled “Collections”mailiam collections- Manage form collections- Collection-based organization for multiple forms
Domains
Section titled “Domains”mailiam domains- Manage custom domains- DNS configuration and verification
Projects
Section titled “Projects”mailiam projects- Manage domain projects- Templates, branding, and organization
Configuration File
Section titled “Configuration File”Basic Structure
Section titled “Basic Structure”domains: mysite.com: forwarding: "*@mysite.com": "me@gmail.com" forms: contact: template: "professional" replies: true projects: main: templates: "./templates/" branding: "./brand/"
collections: company: name: "Company Forms" settings: rateLimit: 100 spamProtection: true forms: contact: name: "Contact Form" email: "contact@company.com" feedback: name: "Feedback Form" email: "feedback@company.com"Environment-Specific Configs
Section titled “Environment-Specific Configs”# Different environmentsmailiam.config.yaml # Default/productionmailiam.config.dev.yaml # Developmentmailiam.config.staging.yaml # Staging
# Deploy to specific environmentmailiam push --env devmailiam push --env stagingmailiam push --env production # defaultAuthentication
Section titled “Authentication”API Key Setup
Section titled “API Key Setup”# Login interactivelymailiam login
# Set API key manuallymailiam config set apiKey sk-abc123def456
# Use environment variableexport MAILIAM_API_KEY=sk-abc123def456Key Management
Section titled “Key Management”# List API keysmailiam keys list
# Create new keymailiam keys create "Production Deploy" --permissions deploy,read
# Rotate keymailiam keys rotate sk-abc123def456
# Revoke keymailiam keys revoke sk-abc123def456Global Options
Section titled “Global Options”Common Flags
Section titled “Common Flags”# Verbose outputmailiam push --verbose
# Quiet mode (minimal output)mailiam push --quiet
# Dry run (preview changes)mailiam push --dry-run
# Specify config filemailiam push --config custom.config.yaml
# Environment targetingmailiam push --env staging
# JSON outputmailiam status --output json
# Force operationmailiam domains verify mysite.com --forceConfiguration Options
Section titled “Configuration Options”# View current configmailiam config list
# Set global optionsmailiam config set editor vimmailiam config set timeout 30000mailiam config set region us-east-1
# Reset config to defaultsmailiam config resetWorkflow Examples
Section titled “Workflow Examples”New Project Workflow
Section titled “New Project Workflow”# 1. Initialize projectmkdir mycompany.comcd mycompany.commailiam init mycompany.com
# 2. Edit configurationvim mailiam.config.yaml
# 3. Deploymailiam push
# 4. Verify setupmailiam statusmailiam domains verify mycompany.com
# 5. Testmailiam domains test mycompany.com test@mycompany.comCollection-Based Workflow
Section titled “Collection-Based Workflow”# 1. Create collectionmailiam collections create "support" "Support Forms"
# 2. Add forms to collectionmailiam collections add-form "support" "technical" "Technical Support"mailiam collections add-form "support" "billing" "Billing Questions"
# 3. Configure collectionmailiam collections update "support" --rate-limit 50
# 4. Deploymailiam push
# 5. Use collection forms# https://api.mailiam.dev/f/support/technical# https://api.mailiam.dev/f/support/billingMigration Workflow
Section titled “Migration Workflow”# 1. Import existing instant formmailiam forms list # Find form IDmailiam collections import "mycompany" abc123def "contact"
# 2. Update configurationmailiam pull # Sync config file
# 3. Verify migrationmailiam collections show "mycompany"
# 4. Test new endpointmailiam forms test mycompany/contact --data '{"email":"test@test.com"}'Development Workflow
Section titled “Development Workflow”Local Development
Section titled “Local Development”# 1. Clone project configgit clone git@github.com:company/email-config.gitcd email-config
# 2. Switch to developmentmailiam pull --env dev
# 3. Make changesvim mailiam.config.dev.yaml
# 4. Test locallymailiam push --env dev --dry-run
# 5. Deploy to devmailiam push --env dev
# 6. Commit changesgit add mailiam.config.dev.yamlgit commit -m "Add new contact form"git pushTeam Collaboration
Section titled “Team Collaboration”# Pull latest configurationmailiam pull
# Check for conflictsmailiam status
# Merge upstream changesgit pull origin mainmailiam pull --force # Override local changes
# Deploy team changesmailiam pushMonitoring and Debugging
Section titled “Monitoring and Debugging”Status Monitoring
Section titled “Status Monitoring”# Overall system statusmailiam status
# Domain-specific statusmailiam domains status mysite.com
# Form performancemailiam forms performance contact
# Collection metricsmailiam collections metrics supportLogging and Debugging
Section titled “Logging and Debugging”# View recent logsmailiam logs --last 1h
# Form submission logsmailiam logs forms contact --last 24h
# Email forwarding logsmailiam logs forwarding mysite.com
# Error logs onlymailiam logs --level error --last 1d
# Follow logs in real-timemailiam logs --followTesting and Validation
Section titled “Testing and Validation”# Test configuration syntaxmailiam config validate
# Test domain setupmailiam domains test mysite.com
# Test form submissionmailiam forms test contact --data file.json
# Test email forwardingmailiam domains test-email mysite.com test@mysite.com
# Comprehensive health checkmailiam health-checkPerformance and Optimization
Section titled “Performance and Optimization”Performance Monitoring
Section titled “Performance Monitoring”# Response time metricsmailiam metrics response-times --last 7d
# Throughput statisticsmailiam metrics throughput forms
# Regional performancemailiam metrics regions
# Error ratesmailiam metrics errors --allOptimization Commands
Section titled “Optimization Commands”# Enable cachingmailiam forms update contact --caching true
# Optimize templatesmailiam templates optimize
# Prefetch static assetsmailiam performance prefetch --enable
# Check optimization recommendationsmailiam optimize analyzeAdvanced Features
Section titled “Advanced Features”Scripting and Automation
Section titled “Scripting and Automation”# JSON output for scriptingFORMS=$(mailiam forms list --output json)echo $FORMS | jq '.[] | .id'
# Bulk operationsmailiam forms list --output json | jq -r '.[].id' | xargs -I {} mailiam forms update {} --caching true
# Conditional deploymentsif mailiam config validate --quiet; then mailiam pushelse echo "Configuration validation failed" exit 1fiCI/CD Integration
Section titled “CI/CD Integration”# GitLab CI exampledeploy: script: - npm install -g mailiam - mailiam config validate - mailiam push --env production only: - main
# GitHub Actions example- name: Deploy Email Config run: | mailiam config validate mailiam push --env production env: MAILIAM_API_KEY: ${{ secrets.MAILIAM_API_KEY }}Configuration Management
Section titled “Configuration Management”# Environment-specific secretsmailiam secrets set DATABASE_URL "postgres://..." --env devmailiam secrets set DATABASE_URL "postgres://..." --env production
# Template variablesmailiam templates set-var COMPANY_NAME "My Company" --env productionmailiam templates set-var SUPPORT_EMAIL "help@company.com" --env production
# Feature flagsmailiam config set features.newTemplateEngine true --env stagingHelp and Documentation
Section titled “Help and Documentation”Built-in Help
Section titled “Built-in Help”# General helpmailiam --help
# Command-specific helpmailiam forms --helpmailiam collections create --help
# Examples for commandsmailiam forms create --examples
# Configuration referencemailiam config schemaVersion Information
Section titled “Version Information”# CLI versionmailiam --version
# Detailed version infomailiam version --verbose
# Check for updatesmailiam update-check
# Update CLInpm update -g mailiamThe mailiam CLI transforms email infrastructure management from a chore into a streamlined, version-controlled workflow that developers actually enjoy using.